서버 이중화 아키텍처

 

👼🏻 귤씨, 뭐하고 지냈어요?

🍊 제가 자격증이 없었어서요, 정처기랑 SQLD를 준비해봤어요

👼🏻 어때요! 잘 됐어요?

🍊 저도 알고싶은데, 2주 뒤에 알 수 있어요.

 

🗨️ 용어정리


👼🏻: 이중화에 관해서 공부하겠다구요! 관련 용어들부터 봐봐요

Name Description
AP 서버
(Application Server)
1. 서버 그 자체
2. 네트워크가 연결되어있다면 그 네트워크를 통해 Endpoint 간 통신을 할 수 있는 Server
3. HTTP, TCP, UDP 등 다양한 프로토콜을 전달받아 클라이언트에 서비스 제공
Hot Standby 1. 항상 Active 시스템과 동일한 데이터를 유지하여 대기하는 구성
2. 장애 발생 시, 즉시 전환 가능
3. 다운타임 최소화
Cold Standby 1. 장애 발생 시에 데이터를 동기화하고 전환하는 구성
2. 전환 시간이 더 걸리나 비용적으로 저렴
Outbound 1. 시스템이나 네트워크에서 외부로 나가는 트래픽
2. 주로 데이터 전송 방향을 나타내는 용어 (외부로 향한다)
ex1) 서버의 클라이언트 데이터 응답
ex2) 내부 네트워크에서 외부 네트워크로 데이터 전송
FailOver 장애대비기능, 장애 발생 시 대체 시스템으로 자동 전환하며 서비스가 지속되도록 함
HA 1. High Availability, 고가용성
2. 시스템의 장애 없이 지속적 운영이 가능한 능력
Primary-Backup Server 1. 대기 상태로 있다가 Primary 시스템 장애 발생 시 이를 대신하여 Backup 서버가 처리
2. Backup 시스템은 Primary 시스템의 데이터를 주기적으로 복제하여 최신 상태 유지
inbound Traffic 외부에서 서버로 들어오는 트래픽 (예: 사용자 요청)
Outbound Traffic 서버에서 외부로 나가는 트래픽 (예: 응답 데이터 전송)

 

 

 

1️⃣ 이중화를 위한 방법들


👼🏻 : 우선, 이중화를 하는 이유는 뭘까요? 

🍊 : 서비스 연속성 유지트래픽 분산을 통한 과부하 방지요.

👼🏻 : 옹!

 

이중화를 하는 목적

  • 죽은 서버의 업무를 지연 없이 동일한 기능을 수행할 수 있는 다른 서버로 대체하여 서비스 연속성을 유지
  • 너무 많은 요청 트래픽을 분산시킴으로써 과부화를 막는 것

목적 달성을 위한 여러 방법

  • L4스위치를 사용하는 하드웨어적 방법
  • Proxy || VIP 설정 변경
  • MMM/MHS 및 Maxscale 등 소프트웨어를 사용하는 방법
  • 다양한 클러스터링 기법

 

👼🏻 그렇다면 규씨는 어떤 방법을 쓸 거예요?

🍊 우선 저 트래픽 분산 목적이기 때문에 로드 밸런싱을 통한 트래픽 제어 방법을 쓸 거구요, 특히 L4를 통한 로드 밸런싱 방식을 써볼 거예요.

 

 

2️⃣ L4 스위치의 역할


L4 스위치란

  • OSI의 4계층(Transport Layer)에서 동작하는 네트워크 장비
  • 데이터 패킷을 전송 계층의 정보(TCP/UDP Port Number)를 기반으로 처리하고 라우팅
  • 주로 로드밸런싱과 네트워크 트래픽 관리에 사용

 

위와 같이 로드밸런싱은 트래픽과 관련하여 특정 포트 번호에 대해 필터링 후 보안/관리를 수행한다거나, Client와 Server 간의 세션 정보를 유지해서 연결 지속성을 보장하고 장애 발생 시 트래픽을 대체 서버로 자동 전환하는 역할을 수행하기도 한다.

이를 통해서 대용량 트래픽의 처리와 포트별 서비스 전환을 기대할 수 있다.

 

3️⃣ 로드밸런싱의 주요 방법


1. Round Robin

  • 각 서버에 들어오는 요청을 순서대로 분배
  • 구현과 설정이 간단하며, 모든 서버에 트래픽을 균등하게 분배
  • 각 서버의 부하는 고려하지 않음

 

2. Least Connection (최소 연결 수)

  • 현재 가장 적은 수의 활성 연결을 가진 서버에 새로운 요청을 분배
  • 라운드 로빈과 달리 서버 간 부하를 효율적으로 분배
  • 설정과 모니터링이 비교적 복잡함

 

3. IP HASH

  • 클라이언트의 IP주소를 Hash를 통해 특정 서버에 매핑
  • 동일 클라이언트의 요청은 항상 동일한 서버로 전달
  • 세션 지속성이 보장, 동일 클라이언트의 트래픽을 일관되게 처리
  • 특정 서버에 트래픽 집중 가능성 존재

 

이 외에도 Weight Round Robin, Weighted Least Connection 등이 존재한다.

 

 

4️⃣ 이중화 아키텍처


 

👼🏻 귤씨는 어떤 이중화 구조를 생각하시나요?

🍊 우선 Active-Active 아키텍처 내에서 DB와 AP 서버의 분리 여부를 중심으로 세 가지의 후보가 있었어요.

 

 

 

AP, DB가 함께 존재하는 서버 2개의 로드밸런싱

- AP와 DB가 동일한 물리적 서버에 공존한다

- 각 AP 서버는 로컬 DB만 접근한다

- 두 DB는 비동기 복제를 통해 데이터 일관성을 유지한다

 

👼🏻 이렇게 되면 우려점이 있지 않나요?

🍊 우선, 비동기이니까 실시간성은 떨어질 거에요. 그러나 일정 시간차(ms)를 허용할 수 있다는 가정이 있어 괜찮다고 보고 있어요.

 

AP 서버 2개와 별도의 DB 서버 1개의 로드밸런싱

- AP와 DB가 물리적으로 분리되어 있어 독립적 확장이 가능하다

- 두 AP 서버가 공통의 DB 서버에 접근한다

- 모든 데이터 처리가 DB서버에 이루어져 데이터 일관성을 유지할 수 있다

 

👼🏻 여기에서 우려점은요?

🍊 단일 DB 서버의 부하가 집중될 수도 있겠죠, DB 성능이 전체 시스템에 대한 영향력이 커져 있는 구조예요. 단일 장애점의 위험을 고려해야 합니다.

AP 서버 2개와 별도의 DB 서버 2개의 로드밸런싱

- AP와 DB가 물리적으로 분리되어 있다

- 두 AP 서버는 상황에 따라 두 외부 DB 서버 중 하나에 접근한다

- 동일성을 위하여 DB는 Replication 혹은 클러스터링을 이용토록 한다

 

👼🏻 얘는 또 어떤 고려 사항이 있을까요?

🍊 DB 간의 데이터 동기화, 부하 분산을 동일하게 고려해 봐야죠.


👼🏻 좋아요, 현재 서비스는 데이터 일관성, 장애 복구 능력, 부하 분산, 확장성 중 어떤 것에 우선을 두는지를 보고 좋은 아키텍처 결정을 내려봐요! 

🍊 그래요.