인프라 아키텍처가 뭘까?

Jean·2022년 2월 18일
0

IT 인프라 구조를 공부하면서 남기는 기록.

IT 인프라란 무엇일까?

모든 IT의 기반이 되는 것, IT 환경을 운영하고 관리하는데 필요한 모든 구성 요소.

  • 하드웨어
  • 소프트웨어
  • 네트워킹 구성 요소
  • 운영 체제(OS)
  • 데이터 스토리지
  • etc...

집약형과 분할형 아키텍처

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

집약형 아키텍처

한 대의 고성능 컴퓨터(대형 컴퓨터)에서 모든 기능들을 처리하는 방식

장점
1. 구성이 간단
2. 안정성이 높고 고성능

  • 대형 컴퓨터에서는 장비 고장이 일어나도 내부의 CPU를 포함한 구성 요소들이 이원화되어 있기 때문에 이 중 어느 하나가 고장이 났다고 해도 계속 기능을 할 수 있는 안정성을 보장
  • 대형 컴퓨터의 리소스 관리로 하나 이상의 다른 요청 처리를 동시에 할 수 도 있음

단점
1. 도입 비용과 유지 비용이 비쌈
2. 확장성의 한계

  • 서비스 확장 시, 비용 등에 의한 한계가 존재

분산형 아키텍처

여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조
여러 대의 컴퓨터를 연결해서 이용하기 때문에 분산 시스템이라고도 불림

장점
1. 대형 컴퓨터 대비 낮은 비용으로 시스템을 구축 가능 함
2. 서비스 규모에 따라 유연하게 서버를 투입 시킬 수 있어 확장성이 좋다

단점
1. 투입된 서버 대수가 늘어 날수록 관리 구조가 복잡해 진다
2. 서버 한 대가 고장나면 영향 범위를 최소화하기 위해 서버별 역할을 세세하게 검토해야 한다

컴퓨터 자체를 가리키는 경우 물리 서버라고 부른다.
웹, API, DB 서버 등 물리 서버내에서 동작하는 소프트웨어 서버를 논리 서버라고 부른다.

수직 분할형 아키텍처

역할에 따른 서버 분할 방식
서버별로 다른 역할을 하도록 시스템을 수직으로 확장하는 구조

Client-Server 아키텍처
각종 어플리케이션, 미들웨어, 데이터베이스 등의 소프트웨어를 물리 서버상에서 운영하고, 해당 소프트웨어에 클라이언트가 접속해서 이용하는 형태

클라이언트 측에 전용 소프트웨어를 설치해야 서버에 접근 가능한 형태

화면 표시나 단순한 계산은 클라이언트에서 실행하고, 필요한 경우(데이터 요청 등) 서버에서 데이터 요청

장점
1. 클라이언트 측에서 많은 처리를 실행할 수 있어 소수의 서버로 다수의 클라이언트를 처리할 수 있다

단점
1. 클라이언트 측의 소프트웨어 정기 업데이트가 필요
2. 서버에 처리가 집중되면 확장성에 한계가 발생할 수 있다

이와 같은 단점을 개선한 것이 3-Tier 아키텍처

3-Tier 아키텍처
어떠한 플랫폼을 프레젠테이션 계층, 어플리케이션 계층, 데이터 계층의 3계층으로 나누어 별도의 논리적/물리적인 장치에 구축 및 운영하는 형태

  • 프레젠테이션 계층
    • 사용자가 직접 마주하게 되는 계층
    • GUI 즉, 프론트 서버로 생각하면 됨
    • 사용자 입력을 받음
    • 웹 브라우저에 나타나는 화면을 서빙 함
    • Angular / React / Vue 등의 프론트 프레임워크가 처리되는 계층(물론 앞에 nginx/apache 등의 서버를 붙이겠지)
  • 어플리케이션 계층
    • 사용자 요청에 따른 비즈니스 로직 처리
    • 보통 생각하는 백엔드 API 서버가 위치하는 계층
    • 프레젠테이션 계층에서 온 요청을 받아, 요구에 필요한 데이터를 데이터 계층에 요청하며 전달 받은 데이터를 특정 처리 및 가공을 하여 프레젠테이션 계층에 전달하는 것을 담당
  • 데이터 계층
    • 어플리케이션 계층의 요청에 따라 데이터 입출력 처리
    • 데이터베이스와 데이터베이스에 접근하여 데이터를 읽거나 쓰는 것을 관리하는 계층
    • MySQL/MongoDB 등이 구성되어 있는 계층

장점

  • 서버 부하 집중 개선
  • 클라이언트 단말의 정기 업데이트 불필요
  • 처리 반환에 의한 서버 부하 감소
  • 확장성이 좋음

단점

  • 클라이언트-서버 구성보다 구조가 복잡
  • 이러한 복잡성으로 운영, 관리에 신경을 써야 함

수평 분할형 아키텍처

용도가 같은 서버를 늘려나가는 방식

단순 수평 분할형 아키텍처
각 계층 별 시스템을 같은 기능을 가진 복수+a의 시스템으로 단순 분할하는 방식
예) 1대의 프레젠테이션 계층 서버 -> 2대의 프레젠테이션 계층 서버로 분할
수평 분할을 Sharding 이나 Partitioning이라 부르기도 한다

장점

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

단점

  • 데이터를 일원화해서 볼 수 없다
    • 시스템이 독립적으로 구성되어 있으므로 한 시스템에서 다른 시스템의 데이터에 접근할 수 없다
  • 애플리케이션 업데이트는 양쪽을 동시에 해 주어야 한다
  • 처리량이 균등하게 분할돼 있지 않으면 서버별 처리량에 치우침이 발생

공유형 아키텍처
단순 분할형과 달리 일부 계층에서 상호 접속이 이루어진다
데이터 계층에서 각 데이터 서버 간 동기화를 진행해 어느 쪽에서든 참조 가능

장점

  • 수평으로 서버를 늘리기 때문에 확장성이 향상
  • 분할한 시스템이 서로 다른 시스템의 데이터 참조 가능

장점

  • 분할한 시스템 간 독립성이 낮아짐
  • 공유한 계층의 확장성이 낮아짐

지리 분할형 아키텍처

스탠바이형 아키텍처
물리 서버를 최소 두 대를 준비하여 한 대가 고장 나면 가동 중인 소프트웨어를 다른 한 대로 옮겨서 운영하는 방식, 이 때 소프트웨어 재시작을 자동으로 하는 구조를 페일오버(Failover)라 부름

스탠바이 구성, HA(High Availiability) 구성, Active-Standby 구성으로 부른다

물리 서버의 장애에 대한 대처에는 좋은 방식이지만 장애가 없을 시에는 스탠바이 서버가 놀고 있으므로 리소스 낭비가 발생 함

재해 대책형 아키텍처
특정 데이터 센터(사이트)에 있는 상용 환경에 고장이 발생하면 다른 사이트에 있는 재해 대책 환경에서 업무 처리를 재개하는 구조

이 구조에서는 애플리케이션 최신화와 데이터 최신화에 신경 써야한다. 특히 데이터는 매일 갱신되기 때문에 어느 정도 실시간성을 유지해서 각 사이트간 동기 처리를 진행해야 함

저장소 장비 기능, OS 기능, 데이터베이스 기능 등 동기 처리를 위한 여러가지 방법이 있으며, 각각의 비용, 대상 데이터, 동기 연장 특성 등을 고려해 결정할 필요가 있다


감사합니다.
2022.02.18 by Jean.

profile
Software Engineer

0개의 댓글