- 이중화(Redundancy): 장비를 여러 대 병렬로 배치하여 장애에 대비하는 기술입니다.
- 부하 분산(Load Balancing): 늘어나는 트래픽의 처리를 더 효과적으로 하는 것입니다.
이중화는 장애 대응이 1차적인 목표인 반면, 부하 분산은 트래픽 처리가 1차적인 목표입니다. 본 포스팅에서는 이중화를 중점적으로 살펴보겠습니다.
이중화 - 듀얼 시스템과 듀플렉스 시스템
이중화 기술은 보통 두 가지 패턴(듀얼 시스템, 듀플렉스 시스템)으로 나뉩니다.
- 듀얼 시스템(Dual System, Active-Active): 두 시스템이 동시에 활성화되어 같은 작업을 병렬로 처리하고, 작업의 처리 결과를 서로 검증하는식으로 동작합니다.
- 듀플렉스 시스템(Duplex System, Active-Standby): 두 시스템을 준비하되, 메인 시스템과 서브 시스템으로 두고, 평상시에는 메인 시스템으로만 처리하다가 장애 발생 시 서브 시스템을 활용합니다.
두 시스템 중 어떤 시스템을 채택할지 판단할 수 있는 기준은 아래와 같은 것들이 있습니다.
- 장애 발생 시 복구 속도: Active-Active방식은 두 시스템이 동시에 처리하므로, 한쪽에서 장애가 발생해도 지연 없이 다른쪽에서 요청을 받을 수 있으나, Active-Standby방식은 서브 시스템으로 변환하는 과정(Fail-Over과정 (장애 탐지 → 트래픽 전환 → 동기화 보장 .. 등))을 거쳐야하므로 레이턴시가 발생합니다.
- 비용 및 운영의 복잡도: Active-Active방식은 두 시스템에서 100% 동일한 작업을 수행하고 결과를 검증하므로 비효율적이며, 비용 또한 많이 발생합니다. 이러한 관점에서는 Active-Standby방식이 효율적이며 비용도 절감된다고 볼 수 있습니다.
- 서비스의 특성: 실시간 통신이나, 금융 거래등 무중단(Zero-Downtime) 운영이 반드시 필요한 경우라면, 하나의 시스템에 장애가 생겨도 즉시 대응할 수 있는 Active-Active방식이 유리합니다. 반면 몇 백 ms정도의 지연은 허용되는 경우라면 웬만하면 Active-Standby방식이 유리합니다.
알아야할 점
단순히 물리적으로 두 배 늘린다고 이중화가 뚝딱 구현되진 않습니다. 예를 들어 DB서버의 경우, 데이터 읽기, 쓰기의 작업이 지속적으로 발생하는데, 이 때 메인 시스템과 서브 시스템간의 동기화를 지속적으로 해두지 않을 경우, 나중에 대기 시스템으로 전환되었을 때 데이터의 부정합 등이 발생할 수 있습니다.
즉, 물리적인 증설뿐만 아니라 그에 따른 추가적인 작업들까지도 동반되어야 합니다.
또한 이중화는 서비스의 신뢰도를 높여주긴 하지만, 그만큼 운영 비용이나 복잡도가 높아지므로, 둘 사이의 적절한 균형점을 찾는것이 중요합니다. 또한 서비스의 중단이 영향을 미치는 범위에 따라, 시스템의 어느 부분을 이중화할것인지에 대해 생각해봐야합니다.
Ref.
요코타 카즈키&엔도 유키, "그림으로 이해하는 서버 구조와 기술"
'TIL(Today I Learned)' 카테고리의 다른 글
| [TIL - 3주차] 서버와 클라이언트간의 웹 통신 (0) | 2025.07.18 |
|---|---|
| [TIL - 2주차] 서버의 가상화 (0) | 2025.07.15 |
| [TIL - 1주차] 파일 디스크립터(File Descriptor) (1) | 2025.07.11 |