0%

인프라 아키텍처

글을 시작하기에 앞서 해당 글은 야마자키 야스시, 미나와 케이코, 아제카츠 요헤이, 사토 타카히코의 저서인 『그림으로 공부하는 IT 인프라 구조』 를 바탕으로 요약 및 정리한 글임을 알려드립니다.


인프라 아키텍처란

인프라(Infra)는 Infrastructure의 줄임말로, 어떤 시스템을 지탱하는 기반이나 토대라는 의미이다. 보통 인프라는 복잡한 구조를 가지지만 대부분 전문가에 의해 관리되고 있어 사용자들은 인프라 구조를 이해하지 않고도 해당 시스템을 간단하게 이용할 수 있다.
인프라 아키텍처는 이런 인프라의 구조를 정의한 ‘설계도’를 의미한다. 우리가 흔히 사용하는 검색 포털 사이트나 메세지 프로그램과 같은 서비스들도 설계도 기반으로 구축된 인프라 위에서 동작하고 있으며, 이렇게 사용되는 설계도인 인프라 아키텍처들은 모두 특정 패턴으로 귀결된다.
이번 글에서는 현재 주류로 사용되고 있는 인프라 아키텍처를 살펴볼 것이다.

집약형 아키텍처

집약형 아키텍처는 대형 컴퓨터 한 대가 모든 처리를 담당하는 구조라고 설명할 수 있다. 예를 들어 쇼핑몰 시스템을 집약형 아키텍처 기반의 인프라로 구축한다고 가정해보자. 그러면 하나의 대형 컴퓨터가 물건 검색이나 구매 진행 등 여러 고객들이 쇼핑몰에서 요청한 사항들을 모두 처리할 것이다. 집약형 아키텍처는 한 대의 컴퓨터만 사용하기에 구성이 간단하며 컴퓨터의 성능이 좋지만, 컴퓨터 자체의 가격대가 높기에 쉽게 확장하기 어렵다는 단점이 있다.

아키텍처 종류 장점 단점
집약형 - 구성이 간단하다.
- 리소스 관리나 이중화에 의해 안정성이 높고 고성능이다.
- 대형 컴퓨터의 도입 및 유지비용이 비싸다.
- 확장성에 한계가 있다.

분할형 아키텍처

분할형 아키텍처는 여러 대의 컴퓨터를 조합해서 하나의 시스템을 운영하는 구조이며 흔히 분산 시스템이라고도 부른다. 해당 아키텍처에서는 대형 컴퓨터 한 대가 하던 역할을 소형 컴퓨터 여러 대를 연결하여 대체하는데, 대형 컴퓨터보다 소형 컴퓨터가 훨씬 저렴하기에 성능은 비슷하게 유지하면서 비용을 아낄 수 있는 구조이다. 또한 성능이 부족하다면 소형 컴퓨터를 추가하여 성능을 향상시킬 수 있어서 확장성이 좋다. 다만 컴퓨터의 수가 늘어날수록 운영 및 관리하기 위한 포인트가 늘어나며 특정 컴퓨터에 장애가 발생했을 시의 부작용을 최소화하기 위한 설계가 요구된다.

아키텍처 종류 장점 단점
분할형 수직, 수평, 지리 - 낮은 비용으로 시스템 구축이 가능하다.
- 컴퓨터 수를 늘릴 수 있어 확장성이 높다.
- 대수가 늘어날수록 관리가 어렵다.
- 장애대응에 대한 설계가 까다롭다.

수직 분할형 아키텍처

수직 분할형 아키텍처는 여러 컴퓨터들이 서로 다른 각자의 역할을 맡아서 시스템을 운영하는 구조이다. 수직 분할형 아키텍처에는 크게 클라이언트-서버형과 3계층형이 있다.

  • 클라이언트-서버형
    클라이언트-서버형은 사용자들이 특정 앱이나 프로그램을 소형 컴퓨터에 설치하여 물리서버와 통신하는 구조이다. 흔히 스마트폰이나 데스크탑에서 어플, 게임 등을 다운로드 받아서 사용하는 구조는 해당 아키텍처를 사용하고 있는 것이다. 이 구조는 사용자(클라이언트) 소형 컴퓨터의 리소스를 사용할 수도 있으며 소수의 서버로도 다수의 사용자들을 처리할 수 있다. 다만 소수의 서버에서 처리하는 량이 급증하면 서버가 장애를 발생시킬 수 있다.

  • 3계층형
    3계층형은 서버 처리량의 분할을 위해 구성된 구조이다. 3계층형은 크게 프레젠테이션, 어플리케이션, 데이터 계층으로 구분되어 있으며 각 계층마다 사용자(클라이언트)의 요청을 파악하여 업무를 처리한다. 프레젠테이션 계층은 사용자에게 직접 입력을 받고 웹브라우저에 화면을 표시하고, 어플리케이션 계층은 사용자 요청에 따라 업무를 진행하며, 데이터 계층은 어플리케이션 요청에 따라 데이터를 제공한다. 따라서 각 계층들은 스스로 제공할 수 있는 정보들은 알아서 처리하고 추가로 필요한 정보들만 밑단의 서버들에게 요청한다. 예를 들어 이미지 파일만 읽으면 되는 요청은 프레젠테이션 계층에서 해결할 수 있기에 다른 계층으로 넘어가지 않는다.

수직 분할형 아키텍처들의 장단점을 정리하면 아래와 같다.

아키텍처 종류 장점 단점
수직 분할형 클라이언트-서버형 - 소수의 서버로도 다수의 사용자들을 처리할 수 있다. - 클라이언트 측 소프트웨어 정기 업데이트가 필요하다.
- 서버 확장성의 한계가 발생할 수 있다.
수직 분할형 3계층형 - 서버부하를 개선할 수 있다.
- 클라이언트 단말에 브라우저만 있으면 된다.
- 구조가 비교적 복잡하다.

수평 분할형 아키텍처

수평 분할형 아키텍처는 하나의 역할을 여러 대의 서버가 맡아서 운영하는 구조이다. 즉, 3계층형 아키텍처에서 나눠졌던 3개의 계층들에 서버를 각각 한 대가 아닌 여러 대로 구성하여 운영하는 것이다. 이 구조는 특정 역할을 처리하는 컴퓨터 수가 늘어나기에 전체적인 시스템 성능이 향상된다. 또한 한 대에 장애가 생겨도 서비스에는 큰 지장이 없기에 시스템 안정성도 증가한다.

  • 단순 수평 분할형
    단순 수평 분할형은 특정 기준을 바탕으로 인프라를 분할하는 방식이다. 예를 들어 서울과 부산에 동일한 시스템을 구성한다고 가정해보자. 해당 아키텍처는 서울은 A 인프라를 사용하고, 부산은 B 인프라를 사용하게 한다. 따라서 A 인프라가 장애가 발생해도 부산 시스템에는 문제가 없어 독립성은 보장된다. 다만 데이터 계층도 독립적이기에 두 지사의 데이터를 일원화할 수 없으며 한 인프라에 과부화가 발생해도 이를 공유할 수는 없다.

  • 공유형
    공유형은 데이터 계층에서 데이터를 동기화하여 상호 접속이 가능하도록 설계된 구조이다. 특히 데이터 계층은 저장고의 역할도 하기 때문에 보안이 요구되며 이를 관리하기 위해서는 한 장소에 모아 관리하는 것이 더 효율적이다. 또한 이 구조는 데이터 일원화가 가능하다.

수평 분할형 아키텍처들의 장단점을 정리하면 아래와 같다.

아키텍처 종류 장점 단점
수평 분할형 단순형 - 확장성이 향상된다.
- 시스템이 독립적으로 운영되어 서로 영향을 주지 않는다.
- 데이터 일원화가 불가하다.
- 처리량이 균등하게 분할되지 않는다.
수평 분할형 공유형 - 확장성이 향상된다.
- 서로 다른 시스템의 데이터를 참조할 수 있다.
- 독립성이 낮아진다.
- 공유한 계층의 확장성이 낮아진다.

지리 분할형 아키텍처

수직, 수평 분할형은 서버 성능을 높이기 위한 설계였다면 지리 분할형은 업무 연속성과 시스템 가용성을 높이기 위한 설계이다. 지리 분할형 아키텍처로는 크게 스탠바이형과 재해대책형이 있다.

  • 스탠바이형
    스탠바이형은 최소 2대의 서버를 준비하여 한 대가 고장나면 다른 한 대가 작동하는 구조이다. 흔히 고가용성(HA), 액티브-스탠바이 구조라고도 한다. 이 방식은 장애발생 시 문제없이 서비스를 제공할 수 있지만, 액티브 서버가 정상작동 중에는 스탠바이 서버가 놀고 있기에 리소스 낭비가 발생한다.

  • 재해대책형
    재해대책형은 실제 사용중인 서비스 시스템을 똑같이 다른 지역에 구축하는 구조이다. 흔히 DRS(Disaster Recovery System)라고도 불린다. 이 방식은 실제 특정 지역에 재해가 발생하거나 기타 이유로 메인 시스템에 장애가 발생했을 시 DRS를 사용하여 서비스를 유지하는 구조이다. 이 구조를 사용하기 위해서는 메인 시스템과 DRS가 실시간 동기화가 이루어지도록 셋업해야 한다.

지리 분할형 아키텍처들의 장단점을 정리하면 아래와 같다.

아키텍처 종류 장점 단점
지리 분할형 스탠바이형 - 물리서버 고장에 대처 가능하다. (failover) - 리소스 낭비가 발생한다.
지리 분할형 재해대책형 - 재해에도 서비스 유지 가능하다. - DRS를 운영하는 데 있어 많은 비용이 발생한다.