Search

1주차

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

1.1 인프라란 무엇일까?

인프로 아키텍처는 IT 인프라의 구조를 의미합니다.
궁극, 최적의 아키텍처란 존재하지 않습니다. 반드시 장단점이 공존하기 때문인데 이중 비용이 가장 큰 제약입니다.

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

1.2.1 집약형 아키텍처

IT 시스템의 여명기에는 대형 컴퓨터를 이용해서 모든 업무를 처리하는 형태가 대부분이였습니다. 이들은 범용 장비, 호스트, 메인 프레임 등으로 불렸고, 하나의 컴퓨터로 모든 처리를 했기에 집약형 이라 할 수 있습니다.
장점
구성이 간단
리소스 관리자 이중화에 의해 안정성이 높고 고성능
‘기간 시스템’이란 기업내 핵심 업무 시스템에 이용하며 ‘계정 시스템’이 해당
단점
도입 비용과 유지 비용
확장성 한계

1.2.2 분할형 아키텍처

분할형 아키텍처는 표준 OS나 개발 언어를 이용하기 때문에 ‘오픈 시스템’이라고도 부릅니다.
장점
낮은 비용으로 시스템을 구축할 수 있습니다.
서버 대수를 늘릴 수 있어 확장성이 높습니다.
단점
대수가 늘어나면 관리 구조가 복잡해집니다.
한대가 망가지면 영향 범위 최소화를 위해 구조를 검토해야합니다.
물리 서버와 논리 서버의 차이
서버라는 용어는 원래 특정 역할에 특화된 것 입니다. 사용자 입력 및 HTML 생성 담당은 웹 서버이고, DB의 기능을 제공하는 것은 DB 서버입니다. 컴퓨터 자체를 가리키는 경우 물리 서버라고 부릅니다.

1.3 수직 분할형 아키텍처

분할형에선 서버 분할 방식을 결정해야합니다.

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

클라이언트-서버형은 수직 분할형의 한 예시입니다. 이는 클라이언트 측에 전용 소프트웨어를 설치한 뒤, 서버에 요청을 보냅니다.
장점
클라이언트 측에서 많은 처리를 실행할 수 있어 소수의 서버로 다수의 클라이언트를 처리
단점
클라이언트 측의 소프트웨어 정기 업데이트가 필요
서버 확장성에 한계가 발생

1.3.2 3계층형 아키텍처

프레젠테이션 계층, 애플리케이션 계층, 데이터 계층의 3층 구조로 분할되어 있습니다.
프레젠테이션 계층
사용자 입력을 받는다
웹 프라우저 화면을 표시한다
애플리케이션 계층
사용자 요청에 따라 업무 처리를 한다
데이터 계층
애플리케이션 계층의 요청에 따라 데이터 입출력을 한다.
특정 서버에 부하가 집중되는 문제가 해결되고, 애플리케이션 갱신에 따른 클라이언트 업데이트가 필요 없습니다.
또한 일상에서 사용하고 있는 인터넷 사이트, 모바일 사이트 등에선 해당 구조를 채택하고 있습니다.
장점
서버 부하 집중 개선
클라이언트 단말의 정기 업데이트가 불필요
‘처리 반환’에 의한 서버 부하 저감
단점
구조가 클라이언트-서버 구성보다 복잡합니다.

1.4 수평 분할형 아키텍처

서버의 대수가 늘어나면 한 대가 시스템에 주는 영향력이 낮아져 안정성이 향상되고, 전체적인 성능이 향상됩니다.
수직과 수평은 배타적인 관계가 아니여서 보통 두가지 모두 채택합니다.

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

수평 분할을 sharding이나 partitioning 이라 부릅니다.
두개의 독립된 시스템이 생성되기에 서울측 시스템에 장애가 생기더라도 부산 측 시스템에는 전혀 영향을 주지 않아 독립서잉 향상됩니다. 다만 한쪽에 이용자가 몰릴 경우 과부하가 일부에만 걸리게됩니다. 이는 SNS를 사용자 ID를 기준으로 분할하는 방법등을 사용합니다.
장점
수평으로 서버를 늘리기 때문에 확장성이 향상
분할한 시스템이 독립적으로 운영되므로 서로 영향을 주지 않음
단점
데이터를 일원화해서 볼 수 없음
애플리케이션 업데이트는 양쪽을 동시에 해줘야함
처리량이 균등하게 분할되지 않으면 서버별 처리량에 치우침 발생

1.4.2 공유형 아키텍처

보통 일부 계층에선 상호 접속이 이루어집니다.
장점
수평으로 서버를 늘리기 때문에 확장성이 향상
분할한 시스템이 서로 다른 시스템의 데이터를 참조
단점
분할한 시스템 간 독립성이 낮아짐
공유한 계층의 확장성이 낮아짐

1.5 지리 분할형 아키텍처

1.5.1 스탠바이형 아키텍처

스탠바이 구성, HA(High Availability) 구성, 액티브-스탠바이 구성등으로 불리는 형태입니다. 물리서버를 최소 두대 준비하여 한대가 고장나면 가동중인 소프트웨어를 다른 한대로 옮겨 운영하는 방식입니다. 이때 소프트웨어 재시작을 자동으로 해주는 구조를 페일 오버라고 합니다.
이 방식은 물리 서버 고장에는 대처가능하지만, 보통 페인오버 대상 서버가 놀고있는 상태이기에 리소스 낭비가 발생합니다. 이를 위해 스탠바이를 따로 두지 않고, 양쪽 서버를 동시에 교차이용하는 경우도 많습니다.

1.5.2 재해 대책형 아키텍처

특정 데이터 센터에 있는 상용환경에 고장이 발생하면 다른 사이트에 있는 재해 대책환경에서 업무 처리를 재개하는 것입니다.
애플리케이션 최신화와 데이터 최신화가 문제가되는데, 어느정도 실시간성을 유지해서 사이트간 동기 처리를 해야합니다.