본문 바로가기
IT 도서 정리/그림으로 공부하는 IT 인프라 구조

[인프라] 1. 인프라 아키텍처를 살펴보자

by yyjun 2024. 6. 30.

1.1 인프라란 무엇일까?

인프라(infra)는 무엇일까?

 

인프라는 우리말로 하면 '기반'이라는 뜻이다. 우리 생활을 지탱하는 바탕이나 토대라는 의미이다. 인프라 구조 자체는 복잡하지만, 전문가에 의해 관리되고 있어서 사용자는 그 구조를 이해하지 않고도 간단히 이용할 수 있다는 특징이 있다.

 

IT 인프라도 마찬가지다. IT의 기반이 되는 것으로서 이 역시 우리의 생활을 지탱하고 있다.

 

그렇다면 '인프라 아키텍처'란 무엇일까?

 

인프라 아키텍처는 IT 인프라의 구조를 의미한다. 다양한 IT 서비스들은 모두 이용 방법이나 사용자가 다르지만 IT 인프라 위에서 동작하고 있다. 그리고 이들의 인프라 아키텍처는 놀라울 정도로 닮아 있다. 거의 같은 구조를 가진 채 움직이고 있다.

 

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

모든 인프라 아키텍처들이 거의 같은 구조를 가진 채 움직이고 있으니, '하나의 만능 아키텍처를 가지고 모든 프로젝트에 적용할 수 있지 않을까?', '궁극의, 최적의 아키텍처 하나만 있다면 굳이 설계를 하지 않아도 괜찮지 않을까?'라는 의문이 생길 수 있다.

 

하지만 현실은 그렇지 않다. 모든 아키텍처나 설계 요소에는 반드시 장점과 단점이 공존한다. 인프라 아키텍처들이 대부분 비슷한 구조를 가지고 있지만 사용되는 상황은 모두 다르다. 주어진 상황에 따라서 장점과 단점을 비교해보고 현재 상황에 맞는 선택을 내려야 한다. 그렇기 때문에 궁극의 아키텍처 하나를 가지고 모든 프로젝트에 적용할 수 없다.

 

1.2 집약형과 분할형 아키텍처

IT 인프라의 기본적인 구성 방식에는 '집약형'과 '분할형'이 있다.

 

1.2.1 집약형 아키텍처

집약형 아키텍처는 대형 컴퓨터를 이용해서 모든 업무를 처리하는 아키텍처이다. 이런 대형 컴퓨터는 '범용 장비', '호스트', '메인 프레임' 등으로 불리기도 한다.

 

시스템 아키텍처 관점에서는 하나의 컴퓨터로 모든 처리를 하기 때문에 '집약형'이라고 부른다.

 

집약형의 최대 장점은 구성이 간단하다는 것이다.

 

집약형 아키텍처는 해당 기업의 주요 업무를 모두 한 대로 처리한다. 만약 장비 고장 등이 발생하면 업무가 멈추기 때문에 치명적이다. 집약형 아키텍처를 사용하는 엔지니어는 이러한 문제를 방지하기 위한 여러 고민을 하고 있다. 예를 들어, 컴퓨터를 구성하는 주요 부품을 모두 다중화해서 하나가 고장 나더라도 업무를 계속할 수 있게 한다.

 

복수의 서로 다른 업무 처리를 동시에 실행할 수 있도록 유한 리소스 관리를 한다. 이를 통해 하나의 처리가 실수로 대량의 요청을 보내더라도 다른 처리에 영향을 주지 않도록 되어 있다.

 

집약형 아키텍처는 아직 많은 기업에서 사용하고 있다. 주로 '기간 시스템'이라 불리는 기업 내 핵심 업무 시스템에서 이용하고 있는 경우가 많다.

 

대형 컴퓨터는 도입 비용 및 유지 비용이 큰 경향이 있다. 또한 대형 컴퓨터의 파워가 부족하면 다른 한 대를 별도로 구매해야 해서 비용이 매우 많이 들며, 확정성에도 한계가 존재한다는 단점이 있다.

 

현재는 가격이 싸고 확장성이 높은 분할형이 주로 사용되고 있다.

 

  • 장점
    • 한 대의 대형 컴퓨터만 있으면 되므로 구성이 간단하다.
    • 대형 컴퓨터의 리소스 관리나 이중화에 의해 안정성이 높고 고성능이다.
  • 단점
    • 대형 컴퓨터의 도입 비용과 유지 비용이 비싸다.
    • 확장성에 한계가 있다.

 

1.2.2 분할형 아키텍처

분할형 아키텍처는 여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조다.

 

대형 컴퓨터는 안정성이 높고 고성능이지만, 지금은 소형 컴퓨터라도 충분한 성능을 낼 수 있다. 또한 대형 컴퓨터와 비교해서 소형 컴퓨터 구입 비용이 압도적으로 저렴하다. 그 차이가 100배가 되는 경우도 있다. 단, 안정성은 한 대의 컴퓨터만으로는 대형 컴퓨터에 미치지 못한다. 대신 분할형 아키텍처에서는 여러 대의 컴퓨터를 이용해 한 대가 고장 나더라도 다른 컴퓨터를 사용해 안정성을 담보하고 있다.

 

분할형 아키텍처는 표준 OS나 개발 언어를 이용하기 때문에 '오픈 시스템'이라고도 부른다. 또, 여러 대의 컴퓨터를 연결해서 이용하기 때문에 '분산 시스템'이라 부르는 경우도 있다.

 

분할형의 장점은 저가 장비를 이용해서 전체적인 비용을 줄일 수 있다는 것이다. 개별 컴퓨터의 안정성이 낮아도 시스템 전체의 안정성이 낮아지지 않기 때문이다. 또한 더 많은 컴퓨터를 이용해서 시스템 전체 성능을 향상시킬 수 있어서 확장성이 좋다는 특징도 있다.

 

하지만 서버 수가 늘어나면 이를 운영하기 위한 구조가 복잡해지는 경향이 있다. 또한 서버가 망가지면 영향 범위를 최소화하기 위해 서버별 역할을 세세하게 검토해야 한다. 서버는 수직형과 수평형으로 분할할 수 있다.

 

  • 장점
    • 낮은 비용으로 시스템을 구축할 수 있다.
    • 서버 대수를 늘릴 수 있어서 확장성이 높다.
  • 단점
    • 대수가 늘어나면 관리 구조가 복잡해진다.
    • 한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토해야 한다.

 

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

분할형 아키텍처에서 이용되는 컴퓨터를 '서버'라고 한다. 서버라는 용어는 컴퓨터 자체(하드웨어)를 가리키는 경우도 있고, 컴퓨터에서 동작하고 있는 소프트웨어를 가리키는 경우도 있다.

 

서버라는 용어는 원래 '특정 역할에 특화된 것'을 의미한다. 인터넷에 접속했을 때 사용자 입력 및 HTML 생성을 담당하는 것은 서버에서 동작하는 소프트웨어인 '웹 서버'다. 대량의 데이터를 저장해서 요청에 따라 데이터를 제공하는 것은 데이터베이스 기능을 제공하는 'DB 서버'다.

 

컴퓨터 자체를 가리키는 경우는 '물리 서버'라고 부른다.

 

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

 

1.3 수직 분할형 아키텍처

분할형에서는 서버 분할 방식, 즉 역할 분담을 고려해야 한다. 서버 별로 다른 역할을 담당하는 수직 분할형 아키텍처에 대해 알아보자.

 

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

클라이언트-서버형은 수직 분할형의 한 예다. 서버에서 운영되고 있는 소프트웨어에 클라이언트 또는 단말이라 불리는 소형 컴퓨터가 접속해서 이용하는 형태다.

 

클라이언트-서버형의 특징은 클라이언트 측에 전용 소프트웨어를 설치해야 한다는 것이다.

 

이 방식에서 서버 측은 데이터 입출력만 하면 되기에 처리당 부하가 낮아서 많은 PC가 동시에 요청을 보내도 문제가 없다.

 

하지만 클라이언트-서버형에서는 업무 애플리케이션 갱신 시마다 클라이언트 측 소프트웨어도 업데이트해야 한다. 이용자 측면에서는 마음껏 사용할 수 없다는 불편함이 생기고, 이용자가 반드시 업데이트한다는 보장도 없어서 시스템 위험 요소가 될 수 있다. 또한 서버에 처리가 집중되면 확장성에 한계가 발생할 가능성이 있다.

 

이런 단점을 개선하려고 한 것이 3계층형이다.

 

  • 장점
    • 클라이언트 측에서 많은 처리를 실행할 수 있어서 소수의 서버로 다수의 클라이언트를 처리할 수 있다.
  • 단점
    • 클라이언트 측의 소프트웨어 정기 업데이트가 필요하다.
    • 서버 확장성에 한계가 발생할 수 있다.

 

1.3.2 3계층형 아키텍처

3계층형은 수직 분할형의 한 예로, 클라이언트-서버형을 발전시킨 것이다. 프레젠테이션 계층, 애플리케이션 계층, 데이터 계층의 3층 구조로 분할되어 있다. 각 계층의 역할은 명확히 구분되어 있다.

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

3계층 시스템에서는 사용자가 웹 브라우저를 통해 시스템에 접속한다.

 

클라이언트-서버형에 비해 특정 서버에 부하가 집중되는 문제가 해결된다는 것이 장점이다. 업무 애플리케이션 갱신에 따른 클라이언트 업데이트가 필요 없으며, 사용자는 웹 브라우저만 준비하면 된다.

 

이 아키텍처에서는 모든 처리가 AP 서버나 DB 서버를 이용하지 않아도 된다. 예를 들어, 이미지 파일만 읽으면 되는 경우라면 웹 서버만으로도 처리를 완료해서 결과를 반환할 수 있으므로 다른 서버에 부하를 주지 않는다.

 

단, 시스템 전체 구조가 클라이언트-서버형보다 복잡하다.

  • 장점
    • 서버 부하 집중 개선
    • 클라이언트 단말의 정기 업데이트가 불필요
    • '처리 반환'에 의한 서버 부하 저감
  • 단점
    • 구조가 클라이언트-서버 구성보다 복잡하다.

우리가 볼 수 있는 대부분의 시스템이 3계층 구조를 채택하고 있다.

 

1.4 수평 분할형 아키텍처

더 높은 확장성을 실현하기 위해 수직 분할과 함께 수평 분할도 필요하다.

 

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

 

수직 분할형과 수평 분할형은 배타적인 관계가 아니다. 대부분의 시스템의 이 두 가지 방식을 함께 채택하고 있다.

 

1.4.1 단순 수평 분할형 아키텍처

수평 분할을 'Sharding(샤딩)'이나 'Partitioning(파티셔닝)'이라 부르기도 한다.

 

이 구성에서는 시스템이 둘로 분할됨으로써 시스템 전체 처리 성능을 두 배로 향상시킬 수 있다. 또한 두 개의 독립된 시스템이 생성되기에 한 쪽 시스템에 장애가 발생하더라도 다른 쪽 시스템에는 전혀 영향을 주지 않아 독립성이 향상된다.

 

하지만 양쪽에서 같은 업무 애플리케이션을 이용하고 있다면, 양쪽 시스템에 매번 애플리케이션 업데이트를 실시해 주어야 한다. 데이터도 따로 보유하고 있어서 양쪽 데이터를 동시에(일원화해서) 이용할 수 없다.

 

양쪽의 이용자 수가 비슷하다면 괜찮지만, 이용자 대부분이 한쪽 시스템을 이용하고 있다면, 한쪽 시스템에 과부하가 걸리고 다른 쪽 시스템은 놀고 있는 상태가 된다. 이런 상태에서는 시스템 처리 성능이 두 배가 됐다고 말하기 어렵다.

 

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

  • 장점
    • 수평으로 서버를 늘리기 때문에 확장성이 향상된다.
    • 분할한 시스템이 독립적으로 운영되므로 서로 영향을 주지 않는다.
  • 단점
    • 데이터를 일원화해서 볼 수 없다.
    • 애플리케이션 업데이트는 양쪽을 동시에 해 주어야 한다.
    • 처리량이 균등하게 분할돼 있지 않으면 서버별 처리량에 치우침이 생긴다.

 

1.4.2 공유형 아키텍처

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

 

  • 장점
    • 수평으로 서버를 늘리기 때문에 확장성이 향상된다.
    • 분할한 시스템이 서로 다른 시스템의 데이터를 참조할 수 있다.
  • 단점
    • 분할한 시스템 간 독립성이 낮아진다.
    • 공유한 계층의 확장성이 낮아진다.

1.5 지리 분할형 아키텍처

수직과 수평 분할 아키텍처를 조합함으로써 목적에 적합한 구성을 만들 수 있다.

 

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

 

1.5.1 스탠바이형 아키텍처

스탠바이 구성, HA(High Availability) 구성, 액티브-스탠바이 구성 등으로 불리는 형태이다.

 

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

 

평소에 페일오버 대상 서버(스탠바이)가 놀고 있는 상태가 되기 때문에 리소스 측면에서 낭비가 발생한다는 단점이 있다. 이 문제를 해결하기 위해 스탠바이를 따로 두지 않고 양쪽 서버를 동시에 교차 이용(한쪽이 고장나면 다른 한쪽이 양쪽을 처리)하는 경우도 많다.

 

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

 

1.5.2 재해 대책형 아키텍처

인프라 아키텍처에서 재해에 대응하기 위한 재해 복구(Disaster Recovery) 구성을 취하는 일이 잦아지고 있다. 구체적으로는 특정 데이터 센터(사이트)에 있는 상용 환경에 고장이 발생하면 다른 사이트에 있는 재해 대책 환경에서 업무 처리를 재개하는 것을 가리킨다.

 

서버 장비를 최소 구성 및 동시 구성으로 별도 사이트에 배치하고, 소프트웨어도 상용 환경과 동일하게 설정한다. 재해가 발생하면 전혀 다른 사이트에 있는 정보를 이용하게 된다.

 

여기서 문제가 되는 것은 애플리케이션 최신화와 데이터 최신화다. 특히 데이터는 매일 갱신되기 때문에 어느 정도 실시간성을 유지해서 사이트 간 동기 처리를 해야 한다. 동기 처리를 위한 방법은 여러 가지가 있다. 각각의 비용, 대상 데이터, 동기 연장 특성 등을 고려해서 결정할 필요가 있다.

 

 
 
 

참고 자료

  • 그림으로 공부하는 IT 인프라 구조