인프라 아키텍처를 살펴보자

인프라(Infra)란 무엇일까?

인프라를 우리말로 하면 ‘기반'이란 뜻이고, 아키텍처는 직역하면 ‘구조'라는 의미다. 인프라 아키텍처는 IT 인프라의 구조를 의미한다.

인터넷 검색 시스템이나 항공 회사 티켓 발권 시스템, 편의점 계산대 등 모두가 이용 방법이나 사용자가 다르지만 IT 인프라 위에서 동작하고 있고, 이 인프라 아키텍처는 거의 같은 구조를 가진 채 움직이고 있다.

이번 장에서는 현재 IT 업계에서 주류가 되고 있는 인프라 아키텍처에 대해 알아본다.

궁극의 아키텍처와 최적의 아키텍처는 존재하는 것일까?

→ NO. 아키텍처나 설계 요소에는 반드시 장점과 단점이 공존한다.

시스템에 따라 가장 중요한 장점은 살리고, 단점을 최소화하도록 설계하는 것이 중요하다.

집약형과 분할형 아키텍처

IT 인프라는 컴퓨터로 구성된다. 기본적인 구성 방식에는 ‘집약형'과 ‘분할형'이 있다.

집약형 아키텍처

하나의 대형 컴퓨터(범용 장비, 호스트, 메인 프레임 등으로 불림)를 이용해서 모든 업무를 처리하는 형태. 하나의 컴퓨터로 모든 처리를 하기 때문에 ‘집약형'이라고 할 수 있다.

주로 ‘기간 시스템(Backbone System)'이라 불리는 기업 내 핵심 업무 시스템(판매, 재고관리, 재무 등)에 이용하고 있는 경우가 많음. (Ex. 은행 ‘계정 시스템' 등)

장점

한 대의 대형 컴퓨터만 있으면 되므로 구성이 간단하다.

대형 컴퓨터의 리소스 관리나 이중화에 의해 안정성이 높고 고성능이다.

- 리소스 관리 : 복수의 서로 다른 처리를 동시에 실행할 수 있도록 다른 처리에 영향을 주지 않도록 관리
- 이중화 : 주요 부품을 다중화시켜 하나가 고장 나더라도 멈추지 않도록 함

단점

- 대형 컴퓨터의 도입 비용과 유지 비용이 비싸다.
- 확장성에 한계가 있다. (확장을 위해 대형 컴퓨터 한 대를 더 구매하기에는 비용이 너무 많이 들어감)

분할형 아키텍처

여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조. 여러 컴퓨터가 연결돼 있어서 데이터를 서로 교환한다. 대형 컴퓨터는 안정성이 높고 고성능이지만, 현재는 소형 컴퓨터라도 충분한 성능을 내면서도 구입 비용이 압도적으로 저렴하다.

분할형 아키텍처는 표준 OS나 개발 언어를 이용하기 때문에 ‘오픈 시스템’이라고도 불리며, 여러 대의 컴퓨터를 연결해서 이용하기 때문에 ‘분산 시스템'이라고도 불린다.

장점

- 낮은 비용으로 시스템을 구축할 수 있다.

- 서버 대수를 늘릴 수 있어서 확장성이 높다.

단점

- 대수가 늘어나면 관리 구조가 복잡해진다.

- 한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토해야 한다.

물리 서버와 논리 서버의 차이

분할형 아키텍처에서 이용되는 컴퓨터를 ‘서버’라고 한다. 컴퓨터 자체를 가리키는 경우는 ‘물리 서버’라고 부른다.

- 인텔의 x86 서버는 인텔 아키텍처(Intel Architecture)를 채용하고 있어서 ‘IA 서버’라고 부른다.

컴퓨터에서 동작하고 있는 소프트웨어를 가리키는 경우는 ‘논리 서버’라고 부른다.

- 인터넷에 접속했을 때 사용자 입력 및 HTML 생성을 담당하는 것은 서버에서 동작하는 소프트웨어인 ‘웹 서버’다.

- 대량의 데이터를 저장해서 요청에 따라 데이터를 제공하는 것은 데이터베이스 기능을 제공하는 ‘DB 서버'다.

→ 웹 서버나 DB 서버가 하나의 물리 서버에서 동작하고 있는 경우도 있으며, 각각 별도의 물리 서버에서 동작하는 경우도 있다.

분할형에서는 서버 분할 방식(역할 분담)을 고려해야 한다.

각각의 서버가 전혀 다른 작업을 하는 것인지, 아니면 비슷한 작업을 하는 것인지에 대한 관점이다. 서버를 분할하는 일반적인 방식으로는 수직형과 수평형이 있다.

수직 분할형 아키텍처

수직형이라고 표현하는 것은, 특정 서버 측면에서 봤을 때 역할에 따라 ‘위' 또는 ‘아래' 계층으로 나뉘기 때문

클라이언트-서버형 아키텍처

(애플리케이션, 미들웨어, 데이터베이스 등의) 소프트웨어가 운영 중인 ‘물리 서버'에 클라이언트(단말)이라 불리는 소형 컴퓨터가 접속해서 이용하는 형태

장점

- 클라이언트 측에서 많은 처리를 실행할 수 있어서 소수의 서버로 다수의 클라이언트를 처리할 수 있다. (서버 측은 데이터 입출력만 하면 되기에 처리당 부하가 낮기 때문)

단점

- 클라이언트 측의 소프트웨어 정기 업데이트가 필요하다. (이용자가 반드시 업데이트한다는 보장 없기에 위험 요소가 될 수 있음)

- 서버 확장성에 한계가 발생할 수 있다.

3계층형 아키텍처

클라이언트-서버형의 단점을 개선한 형태. ‘프레젠테이션 계층', ‘애플리케이션 계층', ‘데이터 계층'의 3층 구조로 분할되어 있어서 3계층형이라고 부른다.

프레젠테이션 계층 : 사용자 입력을 받고, 웹 브라우저 화면을 표시한다.
애플리케이션 계층 : 사용자 요청(Request)에 따라 업무 처리를 한다.
데이터 계층 : 애플리케이션 계층의 요청에 따라 입출력을 한다.

장점

- 서버 부하 집중 개선 - 클라이언트 단말의 정기 업데이트가 불필요 - ‘처리 반환'에 의한 서버 부하 저감 (모든 처리가 AP 서버나 DB 서버를 이용하지 않아도 됨)

단점

- 구조가 클라이언트 - 서버보다 복잡하다.

일상에서 사용하고 있는 인터넷 사이트, 모바일 사이트, 사내 업무 시스템 등의 대부분이 3계층 구조를 채용하고 있음.

수평 분할형 아키텍처

수평 분할형 아키텍처는 용도가 같은 서버를 늘려나가는 방식이다. 서버 대수가 늘어나면 한 대가 시스템에 주는 영향력이 낮아져서 안정성이 향상된다. 또한, 처리를 담당하는 서버 대수가 늘어나면 전체적인 성능 향상도 실현할 수 있다.

단순 수평 분할 아키텍처

같은 기능을 가진 복수의 시스템으로 단순 분할하는 방식을 수평 분할이라고 한다. Sharding(샤딩)이나 Partitioning(파티셔닝)이라 부르기도 한다.

이 구조는 거래상으로 멀리 떨어진 시스템 혹은 공장처럼 각 거점이 완전히 독립된 운영을 하고 있는 경우에 적합하다.

ex. 서울 본사와 부산 지사 시스템을 수평 분할 시킨 경우. 부산 지사 매출 정보를 알고 싶다면 부산 지사 측 시스템에 접속.

장점

- 수평으로 서버를 늘리기 때문에 확장성이 향상된다. - 분할한 시스템이 독립적으로 운영되므로 서로 영향을 주지 않는다.

단점

- 데이터를 일원화해서 볼 수 없다. - 애플리케이션 업데이트는 양쪽을 동시에 해 주어야 한다. - 처리량이 균등하게 분할되어 있지 않으면 서버별 처리량에 치우침이 생긴다. (이용자 대부분이 서울 측 시스템을 이용한다면, 서울 측 시스템은 과부화가 걸리는데 부산 측 시스템은 놀고 있는 상태가 됨)

공유형 아키텍처

공유형에서는 단순 분할형과 달리 일부 계층에서 상호 접속이 이루어지는 형태다.

장점

- 수평으로 서버를 늘리기 때문에 확장성이 향상된다. - 분할한 시스템이 서로 다른 시스템의 데이터를 참조할 수 있다. (보안이 필요한 데이터를 한 곳에서 집중 관리할 수 있음)

단점

- 분할한 시스템 간 독립성이 낮아진다. - 공유한 계층의 확장성이 낮아진다.

지리 분할형 아키텍처

업무 연속성 및 시스템 가용성을 높이기 위한 방식으로 지리적으로 분할하는 아키텍처에 대해 알아본다.

스탠바이형 아키텍처

물리 서버를 최소 두 대를 준비하여 한 대가 고장나면 가동 중인 소프트웨어를 다른 한 대로 옮겨서 운형하는 방식이다. 이때 소프트웨어 재시작을 자동으로 하는 구조를 페일오버(Failover, 페일, F/O)라고 한다.

물리 서버 고장에 대처할 수 있지만, 보통 때는 페일오버 대상 서비스(스탠바이)가 놀고 있는 상태가 되기 때문에 리소스 측면에서 낭비가 발생한다.

→ 이를 해결하기 위해, 스탠바이를 따로 두지 않고, 양쪽 서버를 동시에 교차 이용(한쪽이 고장나면 다른 한쪽이 양쪽을 처리)하는 경우도 있음

물리 서버가 아닌 가상화 서버를 이용하고 있는 경우는 서버상의 소프트웨어 뿐만 아니라 가상 서버별로 물리 서버에 페일오버하는 방식도 선택될 수 있다.

재해 대책형 아키텍처

특정 데이터 센터에 있는 상용 환경에 고장이 발생하면 다른 데이터 센터에 있는 재해 대책 환경에서 업무 처리를 재개하는 방식. 데이터는 어느 정도 실시간성을 유지해서 사이트 간 동기 처리를 해야 한다.

Last updated