인프라 아키텍처

Seung·2023년 12월 20일

인프라

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

IT 인프라도 마찬가지다.
IT의 기반이 되는 것으로서 우리의 생활을 지탱하고 있다.
우리가 자주 사용하는 인터넷 검색 엔진을 생각해보면 키워드를 입력하고 검색 버튼을 누르기만 하면 많은 결과를 얻을 수 있다.
원리는 모르지만 간단히 이용할 수 있게 이러한 시스템을 지탱하는 것이 IT 인프라이다.

인프라 아키텍처

아키텍처를 직역하면 구조라는 뜻이다.

인터넷 검색시스템이나 티켓 발권 시스템, 편의점의 계산대의 이용 방법이나 사용자는 다르지만 비슷한 IT 인프라 위에서 동작하고 있다.

집약형 vs 분할형

집약형 아키텍처

IT 서비스가 막 시작됐던 시점에서는 대형컴퓨터를 사용해서 모든 업무를 처리하는 형태가 대부분이었다.
시스템 아키텍처라는 관점에서는 하나의 컴퓨터로 모든 처리를 하기 떄문에 '집약형'이라고 할 수 있다.
집약형의 최대 장점은 구성이 간단하다는 것이다.

집약형 아키텍처에서는 해당 기업의 주요 업무를 모두 한 대로 처리하기 때문에 장비 고장 등으로 업무가 멈추지 않도록 여러 고민을 해야 했다.
예를 들어 컴퓨터를 구성하는 주요 부품을 모두 다중화해서 하나가 고장나더라도 업무를 계속하게 할 수 있다.

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

분할형 아키텍처

분할형 아키텍처는 여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조이다.
대형 컴퓨터는 안정성이 높고 고성능이지만, 현재는 소형 컴퓨터라도 충분한 성능을 낼 수 있다. 비용도 압도적으로 저렴하다.

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

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

서버를 분할하는 방식으로는 수직형과 수평형이 있다.

수직 분할형 vs 수평 분할형

수직 분할형 아키텍처

  1. 클라이언트-서버형 아키텍처
    업무 애플리케이션, 미들웨어, 데이터베이스 등을 서버에서 운영하고, 사용자는 '클라이언트'라고 불리는 개인 컴퓨터로 접속하는 형태이다.
    클라이언트-서버형의 특징은 클라이언트 측에 전용 소프트웨어를 설치해야 한다는 것이다.

    이 방식은 서버 측은 데이터 입출력만 하면 되기에 처리당 부하가 낮아서 많은 PC가 동시에 요청을 보내도 문제가 없다.
    하지만 기업 IT시스템에서는 기능 추가나 버그 수정 등으로 반드시 업데이트가 필요하다.
    이 때 클라이언트 측 소프트웨어도 업데이트를 해야 하는데, 귀찮아서 넘어가는 경우가 많을 것이다.
    사용자는 마음대로 사용할 수 없다는 불편함이 생기고, 사용자가 반드시 업데이트를 한다는 보장이 없어서 시스템의 위험 요소가 될 수도 있다.
    또한, 서버에 처리가 집중되면 확장성에 한계가 발생할 가능성이 있다.

  2. 3계층형 아키텍처
    클라이언트-서버형을 발전시킨 형태이다. 각 계층의 역할을 명확히 구분돼 있다.

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

예를 들어 사용자가 웹 브라우저에 입력하는 화면은 프레젠테이션 계층의 웹서버에 먼저 전달된다.
웹 서버는 그 요청을 뒤에 있는 애플리케이션 계층의 AP서버에 전달한다.
AP서버는 검색 키워드를 바탕으로 무엇을 검색해야 할지 판단해서 뒤에 있는 데이터 계층의 DB서버에 데이터를 요청한다.

클라이언트-서버형에 비해 특정 서버에 부하가 집중되는 문제가 해결된다는 것이 장점이다.
그리고 업무와 관련된 기능 업데이트에 따른 클라이언트 업데이터가 필요 없으며, 사용자는 웹 브라우저만 준비하면 된다.
게다가 3계층형 아키텍처는 모든처리가 AP서버나 DB서버를 이용하지 않아도 된다.
만약 이미지 파일만 읽으면 되는 경우라면 웹서버만으로도 처리를 완료해서 결과를 반환할 수 있으므로 다른 서버에 부하를 주지 않는다.
다만 구조가 많이 복잡하진다는 단점이 있긴 하다.

수평 분할형 아키텍처

  1. 단순 수평 분할형 아키텍처

    위의 그림과 같이 서울 본사의 시스템과 부산 지사의 시스템이 완전히 분할되어 있다.
    이러한 수평 분할을 Sharding이나 Partitioning이라 부르기도 한다.

이 구성에서는 시스템이 둘로 분할됨으로써 시스템 전체 처리 성능을 크게 향상시킬 수 있다.
두 개의 독립된 시스템이 형성되어 서울 측 시스템에 장애가 발생하더라도 부산 측 시스템에는 전혀 영향을 주지 않는다.

하지만 서울과 부산에서 같은 업무 애플리케이션을 사용하고 있으면, 양쪽 시스템에 매번 같은 업데이트를 실시해 주어야 한다.
데이터도 따로 보유하고 있어서 양쪽 데이터를 동시에 사용할 수 없다.
게다가 서울과 부산의 이용자 수가 비슷하면 괜찮지만, 이용자의 대부분이 서울의 시스템을 사용한다면 서울 측 시스템에 과부하가 걸리고 부산 측 시스템은 놀고 있는 상태가 된다.

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

데이터 계층의 경우 데이터 저장소의 역할도 하기 떄문에 보안이 필요한 데이터가 저장되는 경우도 많다.
데이터가 흩어져 있는 것보다는 한곳에서 집중적으로 관리하는 것이 보안에 유리하다.

0개의 댓글