ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [그림으로 공부하는 IT 인프라 구조]제1장 인프라 아키텍처를 살펴보자
    기술 도서 읽기 2025. 9. 14. 14:38

    시작하기 전에: 갑자기 왜 인프라 아키텍처를?

    누군가 갑자기 인프라에 대해 설명해봐 하면 저는 서버, 네트워크를 중얼거리다 말게 될 겁니다. 그만큼 아는게 별로 없다는 소리인데요. 하지만 인프라가 그리고 인프라 아키텍처가 중요하다는 점은 누구나 잘 알고있을겁니다. 그렇다면 이 인프라 아키텍처는 얼마나 중요하고 왜 중요할까?에 대해서는 비교적 최근 2022년의 카카오 서비스 마비 사태를 생각해보면 이해할 수 있습니다. 판교 데이터센터 화재가 원인으로 카카오의 대부분의 서비스(카카오톡, 카카오택시, 카카오페이 등)가 사용 불가 상태가 되었었는데요. 이에 대해서 카카오에서는 시스템 전체 이중화 미흡 부분을 짚었습니다. 여기서 말하는 시스템 전체 이중화 또한 인프라 아키텍처 설계의 부분 중 하나이고 이렇게보면 인프라 아키텍쳐는 매우매우 중요하다는 걸 알 수 있습니다. 본래 제 분야는 아니지만 인프라에 대한 완전 까막눈은 좀 벗어나보고자 ‘(그림으로 공부하는) IT구조 인프라 구조’를 읽으면서 정리해보기로 했습니다.

     

    인프라 아키텍처란?

    • 인프라(Infra)란 단어 그대로 기반 이란의미 ⇒ IT 인프라란 결국엔 ‘IT의 기반이 되는 것’ 흔히들 떠올릴 수 있는 것은 서버, 네트워크
    • 아키텍처(Architecture)는?? 말 그대로 구조를 의미

    최종적으로 IT 인프라 아키텍처란 IT의 기반이 되는 것들의 구조를 의미한다. 이게 결국엔 서버를 몇대를 하고 어떻게 연결하고 네트워크는, VPC 등의 구조는 어떻게 할 것인지 등과 같은 고민들과 결정들이 모두 인프라 아키텍처의 범주에 포함된다. 

    집약형과 분할형 아키텍처

    IT 인프라는 컴퓨터로 구성된 형태로 볼 수 있고, 이와 관련하여 크게 집약형과 분할형 구조가 있다.

    • 집약형 아키텍처
      • 대형 컴퓨터 집중 처리
      • 구성 요소들의 다중화나 리소스 관리에 대한 대비가 잘 되어 있음
      • 대형 컴퓨터의 비싼 비용(도입+유지)
      • 확장성 한계 존재
    • 분할형 아키텍처
      • 소형 컴퓨터 여러 대로 구성
      • 대형 컴퓨터에 비해 소형 컴퓨터의 구입 비용은 압도적으로 낮음 ⇒ 낮은 비용
      • 소형 컴퓨터 1대만으로는 안정성 성능이 대형 컴퓨터 만큼은 나오지 않음 → 여러 대의 컴퓨터를 이용(한 대가 고장 나더라도 안정성 확보)
      • 확장성이 좋음
      • 서버(컴퓨터) 수가 늘어남에 따른 운영을 위한 구조 복잡도 증가
      • 고장 시 영향 범위 최소화를 위해 서버 별 역할 지정 및 분배 중요

    둘의 차이(장단점)를 비교 정리하자면 아래와 같다.

      집약형 아키텍처 분할형 아키텍처
    구조 대형 컴퓨터 집중 처리 수형 컴퓨터 여러 대
    장점 구성이 간단 낮은 비용으로 구축 가능
    안정성이 높고 고성능 높은 확장성
    단점 비싼 도입 비용과 유지비용 관리 구조 복잡
    확장성 한계  

    *서버: 분할형 아키텍처에서 이용되는 컴퓨터, 특정 역할에 특화된 것 의미를 가짐

    (ex) HTML 생성을 담당하는 것은 서버에서 동작하는 소프트웨어인 ‘웹 서버’ / 대량의 데이터를 저장해서 요청에 따라 데이터를 제공하는 ‘DB 서버’ / 컴퓨터 자체를 가리키는 경우 ‘물리 서버’

    수직 분할형 아키텍처

    수직 분할형 아키텍처는 분할형 아키텍처 중 하나의 방식으로 특정 서버 측면에서 위아래 계층으로 나뉜다고 볼 수 있어서 수직 분할형이라고한다. 수직분할형 아키텍처 중 가장 대표적인 구성으로는 ‘클라이언트-서버형’과 ‘3계층형 아키텍처’가 있다.

    • 클라이언트-서버형 아키텍처
      • 물리 서버: 미들웨어, 데이터베이스 등의 소프트웨어를 운영
      • 물리서버 소프트웨어에 ‘클라이언트’(단말) 소형 컴퓨터가 접속해서 이용하는 형태
      • 클라이언트 측에 전용 소프트웨어를 설치해야 함 ⇒ 필수불가결하게 정기 업데이트 발생 이슈
      • 클라이언트 측에서 많은 처리가 가능해서 소수 서버로 다수 클라이언트 처리 가능
      • 서버로 처리가 집중될 시에 확장성 한계 있을 수 있음
    • 3계층형 아키텍처
      • 클라이언트-서버 의 발전 형태
      • 3계층(프레젠테이션 계층/어플리케이션 계층/데이터 계층) 구조 분할
      • 특정 서버 부하 집중 현상(문제) 해소
      • 업무 애플리케이션 갱신에 따른 클라이언트 업데이트 불필요(사용자는 웹 브라우저만 사용OK)
      • 처리 반환에 의한 서버 부하 저하
      • 구조가 서버-클라이언트 보다 복잡

    수평 분할형 아키텍처

    수평 분할형 아키텍처 또한 마찬가지로 분할형 아키텍처 중 하나이며, 수평 분할형의 경우 용도가 같은 서버를 늘려가는 방식이다. 이는 서버대수 증가 → 개별 서버 영향력 감소 ⇒ 안정성 증가 (전체적인 성능 향상)로 이어지게 된다. 수평 분할형에는 ‘단순 수평 분할형 아키텍처’와 ‘공유형 아키텍처’ 이렇게 대표적인 두 가지 구조가 있다.

    • 단순 수평 분할형 아키텍처
      • Sharding(샤딩), Partitioning(파티셔닝)
      • 독립된 시스템으로 생성 → 서로 영향을 주지 않아 독립성 향상
      • 공통된 업무 어플리케이션 이용 시, 모든 시스템에 업데이트를 매번 해줘야 한다는 단점
      • 데이터 흩어짐
      • 이용자 수가 고르게 분포되지 않는다면 오히려 성능이 떨어짐
    • 공유형 아키텍처
      • 단순 수평 분할과 달리 일부 계층에서 상호 접속
      • 확장성이 향상
      • 분할한 시스템이 서로 다른 시스템의 데이터 참조 가능
      • 분할한 시스템 간 독립성이 낮아진다.
      • 공유한 계층의 확장성이 감소

    *여기서 한 가지 주의할 점(?)은 수직 분할형과 수평 분할형은 배타적 관계가 아니다!!! 대부분 두가지 방식 함께 사용한다고 한다.

    지리 분할형 아키텍처

    오늘 마지막으로 소개할 아키텍처는 지리 분할형 아키텍처이다. 이 지리 분할형 아키텍처에는 ‘스탠바이형 아키텍처’와 ‘재해 대책형 아키텍처’가 있다.

    • 스탠바이형 아키텍처
      • 물리 서버를 최소 두대 → 한 대 고장 시 가동 중인 소프트웨어를 다른 한 대로 옮겨서 운영하는 방식(물리 서버 고장 대처 가능)
      • 페일오버(failover): 소프트웨어를 자동으로 재시작하는 구조
      • 페일오버 대상 서버(스탠바이)가 놀고 있는 상태로 리소스 측면 낭비 발생 ⇒ 스탠바이를 따로 두지 않고 양쪽 서버를 동시에 교차 이용하기도
    • 재해 대책형 아키텍처
      • 특정 데이터 센터에서 고장 발생 시 다른 센터에 있는 재해 대책 환경에서 업무 처리를 재개하는 것
      • 상용환경과 동일하게 설정 → 재해 발생 시 이쪽을 이용
      • 애플리케이션 최신화와 데이터 최신화 이슈 ⇒ 어느 정도 실시간성으로 동기 처리 필요

    마무리

    완전히 미지의 영역이어서 비교적 간단하게 읽히는 설명임에도 중간중간 복잡 다단.....

    참고

     

Designed by Tistory.