본문 바로가기

CS ﹒ Algorithm/Network Infra

네트워크 인프라 (1) 인프라 아키텍처의 종류

 

 

 

 

 

 

1. 집약형과 분할형 아키텍처

 

(1) 집약형 아키텍처

 

 

옛날에는 이렇게 한 대의 대형 컴퓨터를 이용해서 서버를 운영하는 경우가 대부분이였으며, 이런 대형 컴퓨터를 '범용 장비', '호스트', '메인 프레임'이라고도 부른다.

하나의 컴퓨터로 모든 처리를 하기 때문에 '집양형 아키텍처'라고 부른다.

 

한 대로 모든 업무를 처리하기 때문에 서로 다른 업무를 동시에 실행해도 부하로 인한 문제가 발생하지 않도록 리소스를 관리할 수 있도록 고성능의 컴퓨터를 사용하고, 이중화되어 cpu 하나가 망가져도 멈추지 않는다.

 

집약형 아키텍처의 장점

1. 한 대의 대형 컴퓨터만 있으면 되기 때문에 구성이 간단하다.

2. 대형 컴퓨터의 리소스 관리나 이중화에 의해 안정성이 높고 고성능이다.

 

집약형 아키텍처의 단점

1. 대형 컴퓨터의 도입 비용과 유지 비용이 비싸다.

2. 만약 서비스가 커져서 서버를 확장해야할 경우 대형 컴퓨터 자체를 더 추가해야하기 때문에 확장성이 제한된다.

 

 

 

(2) 분할형 아키텍처

 

 

대형 컴퓨터 한 대가 담당하던 서버 처리를 다수의 소형 컴퓨터로 분할 처리하는 방식으로, 여러 컴퓨터가 연결되어 있는 상태에서 서로 데이터를 교환한다.

당연히 대형 컴퓨터에 비해 훨씬 저렴하며, 한 서버가 불안정해도 다른 서버가 역할을 대신할 수 있기 때문에 보다 안정적이다.

분산 시스템, 혹은 오픈 시스템이라고도 불린다.

 

 

분할형 아키텍처의 장점

1. 저가 장비를 이용해 전체적인 비용을 줄일 수 있다.

2. 성능이 더 필요할 경우 컴퓨터만 추가하면 되기 때문에 확장성이 좋다.

 

분할형 아키텍처의 단점

1. 서버 수가 늘어날 수록 관리 구조가 복잡해진다.

2. 각 서버가 불안정해도 파급 효과를 낮출 수 있도록 세세하게 분리하고 검토해야 한다.

 

 

 

 

 

 

2. 수직 분할형 아키텍처

 

(1) 클라이언트-서버형 아키텍처

 

 

 

하나의 서버로 모든 클라이언트 처리를 접수하며, Client/Server 아키텍처라서 CS아키텍처라고도 부른다.

클라이언트-서버형 아키텍처에서 클라이언트는 사용자 컴퓨터에서 실행되는 응용 프로그램이다. 로컬 저장소 같은 사용자의 컴퓨터 리소스를 사용하고 소비할 수 있으며, 서버가 반환하는 리소슬를 결과에 표시할 수 있는 인터페이스를 제공한다.

 

서버는 클라이언트로부터 오는 요청만 처리하며 클라이언트의 세부사항을 알 필요가 없으며, 클라이언트가 요청을 보내기만을 기다리고 요청을 받으면 데이터베이스에서 리소스를 가져와 응답한다.

서버의 역할이 오직 입출력만 남았기 때문에 처리당 부하가 낮으며 이전의 메인프레임 모델과 달리 클라이언트와 서버가 독립적으로 작동하기 때문에 전혀 다른 구조이다.

 

클라이언트-서버형 아키텍처의 장점

1. 클라이언트의 부하가 줄어 소수의 서버로 다수의 클라이언트 요청을 처리할 수 있다.

 

클라이언트-서버형 아키텍처의 단점

1. 서버 환경에 맞춰 클라이언트의 소프트웨어도 업데이트해야 한다.

2. 하나의 서버에서 모든 작업을 처리하기 때문에 비효율적이다.

 

 

(2) 3계층형 아키텍처

 

- Presentation Tier (표현 계층)

: 사용자 입력을 받고 화면을 표시한다.

 

- Application Tier(Logic Tier, 애플리케이션 계층, 로직 계층)

: 사용자의 요청(Request)에 따라 처리를 결정하고, 필요할 경우 데이터 계층에 질의하여 반환한다.

 

- Data Tier(데이터 계층)

: 애플리케이션 계층의 요청에 따라 데이터를 입/출력한다.

 

현재 가장 많이 사용되는 구조로, 사용자가 웹 브라우저를 통해 시스템에 접속하는 형태이다.

클라이언트-서버형에 비해 서버 부하가 집중되는 문제가 해결되었으며, 모든 처리가 AP서버나 DB서버를 사용하지 않아도 되고 필요에 따라 서버 부하를 완화할 수 있다.

 

3계층형 아키텍처의 장점

- 서버 부하의 집중을 개선했다.

- 클라이언트 단말기를 업데이트하지 않아도 된다.

- 서버를 분할하여 처리를 유연하게 할 수 있기 때문에 서버의 부담이 줄었다.

 

3계층형 아키텍처의 단점

- 구조가 클라이언트-서버 아키텍처보다 복잡하다.

 

 

 

 

 

3. 수평 분할형 아키텍처

* 수평 분할형 아키텍처와 수직 분할형 아키텍처는 배타적인 관계가 아니라 서로 다른 축으로 확장되는 것이다.

* 수직 분할형은 한 서버 내에서 계층을 나누는 구조, 수평 분할은 거기에 더해 서버 수 자체를 늘리는 구조.

 

 

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

 

 

서버가 늘어나면서 데이터베이스를 완전히 분할해서 관리하는 방법으로, 샤딩(Sharding) 혹은 파티셔닝(Partitioning)이라고도 한다. (DB관점에서 둘은 다른 용어다. 궁금하면 검색.)

각 데이터베이스에는 각 서버 시스템에 대한 정보만 있는 형태로 대용량 웹 서비스의 경우 부하를 줄이기 위해 데이터베이스를 완전히 독립적으로 운영하기도 한다.

비즈니스 로직상 멀리 떨어진 시스템, 각 거점이 완전히 독립된 리소스를 필요로 하는 경우, 부하가 많은 경우 적합하다.

 

단순 수평 분할형 아키텍처의 장점

1. 수평으로 서버를 늘려 확장성이 향상되었다.

2. 분할한 시스템이 독립적으로 운영되어 서로에게 영향을 주지 않는다.

 

단순 수평 분할형 아키텍처의 단점

1. 데이터를 일원화해서 볼 수 없어서 구조 설계부터 어렵다.

2. 양 쪽의 소프트웨어 버전을 동시에 업그레이드/다운그레이드해야 한다.

3. 처리량이 균등하게 분할되지 않으면(설계 실패) 서버별 처리량에 치우침이 생겨 분할의 의미가 없어진다.

 

 

(2) 공유형 아키텍처

가장 일반적인 형태로, 일부 계층에서 상호 접속할 수 있으며 데이터베이스 또한 상호간 교환되며 참조할 수 있다.

 

공유형 아키텍처의 장점

1. 수평으로 서버를 늘려 확장성이 향상되었다.

2. 분할한 시스템이 서로 다른 시스템 데이터를 참조할 수 있다.

 

공유형 아키텍처의 단점

1. 분할한 시스템 간 독립성이 낮아진다. (부하 완화 저하)

2. 서버를 공유하는 계층은 서로 의존성이 생겨 확장성이 저하된다.

 

 

 

 

 

 

4. 지리 분할형 아키텍처

* 지리 분할형 아키텍처는 업무 연속성 및 시스템의 가용성을 높이기 위한 것이다.

 

 

(1) 스탠바이형 아키텍처

 

 

말 그대로 별도의 서버가 Stand-by(대기하는) 상황이다.

HA(High availablility, 이중화) 구성, 혹은 액티브 스탠바이 구성 등으로 부르며, 물리적 서버를 최소 두 대 준비하여 한 대에 장애가 생겼을 경우 가동 중인 소프트웨어를 다른 서버로 옮겨서 운영하는 방식이다.

 

단점으로는 물리서버를 추가로 확보하여 고장에 대처할 수 있으나, 페일오버 대상(스탠바이)가 쉬고 있기 때문에 리소스가 낭비된다.

*페일 오버(Fail Over, 장애 극복) : 서버,네트워크 등에 문제가 생겼을 때 예비 시스템으로 자동 전환되는 기능.

 

따라서 이런 리소스 낭비를 최소화하기 위해 양쪽 서버를 동시에 이용하다가 한 개의 서버에 장애가 생기면 나머지 한 개의 서버가 두 개분을 처리하는 경우도 있으며, 가상 서버를 이용하는 경우에도 가상 서버별로 다른 물리 서버에 페일오버하는 등 다양한 방식으로 운영할 수 있다.

 

 

 

(2) 재해 대책형 아키텍처

 

 

문제 상황에 대응하기 위한 복구 시스템을 구성하는 것이라서 재해 대책형 아키텍처(Disaster Recovery Architecture)라고 부른다.

당연히 복구를 위한 것이기 때문에 계속해서 데이터베이스를 동기화해야하며 많은 비용을 필요로 한다.