#43. 그림으로 공부하는 IT 인프라구조 1장. 인프라 아키텍처

박현재·2022년 2월 22일
0


2021년 교보문고(?) 개발 추천도서에서 당당히 2위를 차지한 책! 그림으로 공부하는 IT 인프라구조 1장, 인프라 아키텍처에 대한 내용을 정리했습니다.

1. 인프라 아키텍처

1-1. 인프라(Infra)하면 무엇이 떠오르는가?
집 주변의 풍경을 보자. 공원이나 공공시설, 대중교통 등 공공 인프라가 갖춰져있다. 집에는 전기, 수도, 가스 등이 갖춰져있다. 인프라를 우리말로 하면 '기반'이라는 뜻으로 우리들의 생활을 지탱하는 바탕이나 토대라는 의미다.
'IT 인프라'도 마찬가지다. 검색 키워드를 입력하고 검색버튼을 누르면 많은 검색 결과를 얻을 수 있다. 어떻게 이런 일이 가능할까? 이런 방대한 데이터는 어떻게 관리되고 있는 것일까? 이번 장의 목적은 이런 의문에 대한 답을 찾는 것이다.

1-2. 아키텍처(Architecture)하면 무엇이 떠오르는가?
아키텍처를 직역하면 '구조'다. 기차를 예로 들어보자. '기차'하면 어떤 모습이 떠오르는가? 전기로 움직이거나 여러 칸이 연결돼있고, 내부에는 좌석이 배치되어 있다. 이런 외관이나 내부모습이 공통화되어 있기 때문에 우리는 상상할 수 있다. 즉, 기차의 '구조' 또는 '아키텍처'는 확립되어있다.

1-3. 인프라 아키텍처란?
IT 인프라의 구조를 의미하는데, 인터넷 검색 시스템 또는 비행기 티켓 발권 시스템, 맥도날드의 키오스크 계산대 등 모두가 이용 방법이나 사용자는 다르지만 IT 인프라 위에서 동작하고 있다. 그리고 이 '인프라 아키텍처'는 놀라울 정도로 닮아 있어서 거의 같은 구조를 가진 채 움직이고 있다. '기차의 구조'하면 떠오르는 모습이 있는 것처럼 'IT 인프라 구조'하면 어떤 그림이 떠올라야한다. 나아가 기차의 발전은 증기기관차 -> 디젤기관차 -> 전기기관차, 자기부상열차 등의 순서로 발전해왔는데 IT 인프라 아키텍처와 하위 시스템의 변화도 훑어보는 것이 최종 목표다.

1-4. 집약형과 분할형 아키텍처
IT 인프라는 컴퓨터로 구성된다. 구성 방식에는 '집약형'과 '분할형'이 있는데 각각의 장단점을 비교해보자.

1-4-1. 집약형 아키텍처
컴퓨터가 상용화되기 이전에는 모든 업무를 하나의 대형 컴퓨터로 처리하던 시절이 있었다. 당시에 대형 컴퓨터는 '범용 장비', '호스트', '메인 프레임'등으로 불렸다. 시스템 아키텍처라는 관점에서는 하나의 컴퓨터로 모든 처리를 하기 때문에 '집약형'이라고 할 수 있다. 하나의 컴퓨터로 처리하기 때문에 장비가 고장나서 업무가 멈추지 않도록 하기 위한 고민이 필요하다. 그래서 컴퓨터를 구성하는 주요 부품은 모두 다중화되어 있어서 하나가 고장 나더라도 업무를 계속할 수 있다. CPU 하나가 망가져도 멈추지 않도록 CPU를 2개 사용하는 이중화라든지, 검색처리에 트래픽이 몰려서 느려지더라도 입금하는 시스템에는 문제가 없도록 하는 것 등이다.
장점
1) 한 대의 대형 컴퓨터만 있으면 되므로 구성이 간단하다.
2) 대형 컴퓨터의 리소스 관리나 이중화에 의해 안정성이 높고 고성능이다.
단점
1) 대형 컴퓨터의 도입 비용과 유지 비용이 비싸다.
2) 확장성에 한계가 있다.

1-4-2. 분할형 아키텍처
분할형 아키텍처는 여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조다. 예를 들어, 계좌의 잔액을 조회하는 컴퓨터, 계좌이체를 담당하는 컴퓨터, 적금 상품 가입을 관리하는 컴퓨터 등을 조합해서 하나의 시스템을 구축하는 것이다. 소형 컴퓨터 여러대로 대형 컴퓨터의 성능을 낼 수 있고 구입 비용의 차이는 100배가 되는 경우가 있을 정도로 저렴하다. 그러나 안정성은 한 대의 대형 컴퓨터에 비해 부족하다. 이 결점을 보완하기 위해 분할형 아키텍처는 여러 대의 컴퓨터를 이용해 한 대가 고장나도 안정성을 담보하고 있다. 분할형 아키텍처는 표준 OS나 개발 언어를 이용하기 때문에 '오픈 시스템'으로 불리기도 하고, 여러 대의 컴퓨터를 연결해서 이용하기 때문에 '분산 시스템'이라고 불리기도 한다.
장점
1) 낮은 비용으로 시스템을 구축할 수 있다.
2) 컴퓨터(서버) 대수를 늘릴 수 있어서 확장성이 높다.
단점
1) 컴퓨터(서버) 대수가 늘어나면 관리 구조가 복잡해진다.
2) 한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토해야 한다.
* 물리서버와 논리서버
분할형 아키텍처에 이용되는 컴퓨터를 '서버'라고 한다. 서버라는 용어는 컴퓨터 자체를 가리키는 물리서버와 컴퓨터에서 동작하고 있는 소프트웨어를 가리키는 논리서버가 있다. 물리적인 서버는 '모니터가 없는 PC'라고 이해하면 된다. 특히 인텔의 x86 서버는 인텔 아키텍처를 채용하고 있어서 'IA 서버'라고 부른다. 서버라는 용어는 원래 '특정 역할에 특화된 것'을 의미한다. 레스토랑의 웨이터를 서버라고 부르는 경우도 있다. 웨이터의 역할은 주문 접수나 음식을 내오는 것에 특화돼 있으며 요리는 하지 않는다. 논리적인 서버에는 '웹 서버'와 'DB 서버'가 있다. 웹 서버는 인터넷에 접속했을 때 사용자 입력 및 HTML 생성을 담당하는 소프트웨어다. DB 서버는 대량의 데이터를 저장해서 요청에 따라 데이터를 제공하는 데이터베이스 기능을 제공하는 소프트웨어다.

1-5. 수직 분할형 아키텍처
최초 클라이언트-서버형 아키텍처의 단점을 개선시킨 3계층형 아키텍처에 대해 알아보자.
'프레젠테이션 계층', '애플리케이션 계층', '데이터 계층' 3계층으로 서버의 역할을 분담한다.
프레젠테이션 계층 (웹 서버)
웹 브라우저에 화면을 표시하고 사용자 입력을 받는다. 입력 받은 요청을 AP서버에 전달한다. 브라우저 접속만으로도 사진 불러오기 등 많은 일을 처리할 수 있다.
애플리케이션 계층 (AP서버)
웹 서버의 요청에 따라 제공할 데이터를 판단해서 DB서버에 데이터를 요청한다.
데이터 계층 (DB 서버)
데이터 입출력을 담당한다.
장점
1) 서버 부하 집중 개선
2) 클라이언트 단말의 정기 업데이트 불필요 (클라이언트-서버형 개선)
3) '처리 반환'에 의한 서버 부하 저감
단점
1. 구조가 클라이언트-서버 구성보다 복잡하다.
자세한 내용은 3장에서 다루기로 한다.

1-6. 수평 분할형 아키텍처
높은 확장성을 실현하기 위해 수직 분할형 아키텍처와 함께 사용된다. '수평 분할형 아키텍처'는 용도가 같은 서버를 늘려나가는 방식이다. 서버 대수가 늘어나면 한 대가 시스템에 주는 영향력이 낮아져서 안정성이 향상된다. 또한, 처리를 담당하는 서버 대수가 늘어나면 전체적인 성능 향상도 실현할 수 있다.
이러한 수평 분할Sharding(샤딩)이나 Partitioning(파티셔닝)이라 부르기도 한다.

블록체인 비트코인, 이더리움의 느린 TPS를 개선하기 위해 샤딩을 적용하고 있다.
블록체인 샤딩 참고: http://wiki.hash.kr/index.php/%EC%83%A4%EB%94%A9

profile
바로 하자, Right Now!

0개의 댓글