본문 바로가기
IT KNOWLEDGE

수평 확장 vs 수직 확장 / Tier vs Layer

by BTC_김쿼카 2022. 4. 5.

ABTCEFG♪  안녕하세요, 여러분!

클라우드, 컨테이너, IaC등 어떠한 인프라를 만지던 인프라 기술의 핵심은 변하지 않기 때문에 이에 대한 전반적인 이해가 필수적으로 따라야 합니다.

특히, 클라우드화가 되는데 인프라에 대해 알아야할까? 라는 고민이 있을 수 있지만, 클라우드 자체가 미들웨어 기술이나 자동화 기술의 연장선상에 있는 것으로, IT인프라가 클라우드 클라우드 시스템이나 조직의 자체 시설 내부에 존재하고 있습니다.

이처럼 laC등 다양한 인프라기술을 다루기 전에 기초 탄탄 IT인프라 구조 전반에 대해 한번 알아보겠습니다!



그 대망의 첫 포스팅은 BTC_김쿼카가 맡았습니다 :) 

IaC로 가는 지름길! 인프라 지식에 대해 더 쉽게, 차근차근, ABCD를 처음부터 배워나가는 것처럼 같이 풀어가보아요

출발 - !

 


1. Infrastructure


다들 인프라(Infra)란 말을 많이 들어보셨을 텐데요

인프라는 인프라스트럭처의 줄임말로 서비스 및 플랫폼을 개발하기 위해 필요한 모든 자원을 관리하는 기반을 의미합니다. 


그렇다면 IT 인프라란 무엇일까요? 바로 IT환경을 운영하고 관리하는데 필요한 구성요소 입니다. 이러한 구성 요소에는 하드웨어, 소프트웨어, 네트워킹, 운영체제(OS), 데이터 스토리지 등이 있습니다.

저희 BTC가 다루는 클라우드의 인프라는 클라우드 컴퓨팅에 필요한 구성요소와 리소스를 뜻하겠죠?
특히 퍼블릭 클라우드에선 클라우드 제공업체 (AWS, AZURE, GCP 등)에서 클라우드 인프라를 대여해 사용한답니다.

 



2.
수직 확장 vs 수평 확장


1) 수직확장  (Scale up/down)

수직확장이란 기존의 서버를 높은 사양으로 업그레이드 하는 것을 말합니다.
즉, 하나의 서버 능력을 증가시키는 것입니다.

  • 하드웨어 관점

   컴퓨터에 cpu, memory와 같은 리소스를 추가하는 작업 등이 있습니다.

  • 소프트웨어 관점

   AWS의 EC2 인스턴스 TYPE을 micro를 small로 높이는 등의 작업을 예로 들 수 있습니다.


2) 수평확장 (Scale in/out)

수평확장이란 동일한 서버를 증가 또는 감소 시키는 것을 의미합니다.
즉, 기존의 서버에 한계가 도달했을 때 여러 대의 서버를 추가하는 것입니다.

  • 소프트 웨어 관점

   Auto scaling이 그 대표적인 예입니다.

  • DB관점

    샤딩, 파티셔닝을 그 예로 들 수 있겠네요! 

참고로
샤딩은 물리적으로 다른 데이터베이스에 데이터를 수평 분할 방식으로 분산 저장하고 조회하는 방법
파티셔닝은 퍼포먼스, 가용성, 관리 용이성을 목적으로 큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법을 의미합니다!

 

 
수직확장  Scale Up/Down VS 수평확장 Scale In/Out
하나의 장비의 성능을 증가 시킴
성능 확장에 한계가 존재
확장성 나의 장비에서 처리하던 일을 여러 장비를 둬서 처리 
지속적으로 확장이 가능
소수의 서버로 요청 처리 가능​ 효율성 다수의 서버로 요청 처리
하나의 장비로 운영하기 때문에
시스템에 서로 영향을 줌  
독립성 여러대의 장비를 추가하여 분할한 시스템이
독립적으로 운영되어 서로 영향을 주지 않음
성능 증가에 따른 비용증가 폭이 큼 비용 저렴한 서버 사용으로 비용 부담이 적음
한 대의 서버에 부하가 집중되기 때문에
장애 영향이 큼
장애 읽기 쓰기 작업이 여러대 서버에 분산되므로 장애시
전면 장애의 가능성이 적음


처리량이 균등하게 분할되지 않으면
서버별 처리량에 치우침 발생

 



3. 
3-Tier


1) Tier vs Layer

인프라와 아키텍처에 대해 공부를 하시다보면 Tier와 Layer라는 말을 굉장히 많이 들어보셨을 거에요. 그런데 Tier와 Layer가 다른 의미라는 사실을 알고 계신가요? 모르고 계신 분들을 위해 한 문장으로 간단하게 설명드리고 넘어갈게요 :)

Tier는 서비스에 필요한 영역을 서브넷을 기준으로 하여 물리적으로 분리한 것을 말하고,
Layer는 논리적인 영역의 분리를 의미합니다.



2) 2-Tier vs 3-Tier


Tier와 Layer의 차이점에 대해 알게 되셨다면, 이제 2-Tier와 3-Tier에 대해 알아보도록 할게요!

여러분~  혹시 3-Tier가 등장한 배경을 알고 계신가요?

기업환경이 변화함에 따라 업무 처리 내용이 다양해지고,
클라이언트/서버 아키텍처가 부분적인 솔루션 형태가 아닌 정보시스템 기반 구조의 시스템 아키텍처로 변화하면서 각각의 서버는 고유의 업무를 처리하는 방향으로 분산되었습니다.

즉, 2-Tier의 서버가 과부화되고 다중 서버가 등장 하면서 트랜잭션 관리의 문제점을 극복하기 위한 Plug-and-Play 지원 아키텍처로서 3-Tier가 등장하게 되었답니다.

현재는 운영하고 있는 서비스의 규모가 커지면서 관리 포인트가 늘어난 3-tier 대신 CDN 서비스인 CloudFront에 정적인 데이터를 두고 WAS-DB 계층을 이용하는 2-tier 형태도 많이 사용한다는 점 참고해주세요.


2-Tier와 3-Tier 차이점

 

  2-Tier 3-Tier
정의 데이터베이스 미들웨어를 사용한 아키텍처 

클라이언트 사이드 → 프레젠테이션, 비즈니스 로직

직접적으로 데이터베이스에 접근

소스분리

그 외의 미들웨어를 사용한 아키텍처 


클라이언트 사이드 → 프레젠테이션 로직
서버 사이드              → 비즈니스 로직,   데이터베이스 

직접 데이터 베이스에 접근하지 않고, 미들웨어 클라이언트와 서버 모듈을 통해 접근

실행파일 기능 분담
 
개발
편의성 
4GL 툴 등을 사용하여 작성이 편함
보통 프리젠테이션 로직(주로 4GL로 개발) 과 비즈니스 / 데이터 접근 로직(주로 C/C++,COBOL 언어 사용) 을 별도로 작성하므로 2-Tier에 비해
개발이 불편

확장성
좋지 않음


이기종 H/W 증설 또는 이기종 데이터베이스가 구축되어도 데이터 정합성 보장할 수 있어
확장성이 뛰어남.

성능
동시 사용자 수가 증가함에 따라
성능 급격히
저하

동시 사용자 수가 증가해도 일정한 응답속도와 처리량 보장
자원
활용

하드웨어 자원(CPU, 메모리 등) 과
데이터베이스 자원을
비효율적으로 사용

미들웨어에서 부하분산, 큐잉 메커니즘을 통해 효율적으로 자원 활용

 

댓글