EP 6.3: 마스터-슬레이브 아키텍처
발행: (2026년 1월 1일 오후 03:10 GMT+9)
6 min read
원문: Dev.to
Source: Dev.to
개요
시스템 설계에서 마스터‑슬레이브(또는 리더‑팔로워) 아키텍처는 특히 데이터베이스 시스템에서 확장성과 고가용성을 달성하기 위해 사용되는 기본 패턴입니다. 하나의 장치 또는 프로세스(마스터)가 하나 이상의 다른 장치 또는 프로세스(슬레이브)에 대해 단방향 제어를 하는 통신 모델을 나타냅니다.
MASTER → SLAVE
데이터‑주도 애플리케이션에서는 이 아키텍처가 쓰기 작업과 읽기 작업을 분리합니다.
핵심 개념
- 진실의 원천 – 마스터가 모든 쓰기 작업(
INSERT,UPDATE,DELETE)을 처리합니다. - 조정 – 마스터가 변경 사항을 로그에 기록합니다.
- 전파 – 마스터가 슬레이브에게 변경 사항을 푸시하여 동기화 상태를 유지합니다.
- 읽기 전용 – 슬레이브는 일반적으로 읽기 작업만 수행하도록 제한됩니다.
- 데이터 복제 – 슬레이브는 마스터로부터 지속적으로 업데이트를 풀링하거나 수신합니다.
- 확장성 – 읽기 트래픽을 처리하기 위해 필요에 따라 슬레이브를 여러 대 추가할 수 있습니다.
복제 유형
동기 복제
- 마스터는 모든 슬레이브가 데이터를 기록했음을 확인할 때까지 클라이언트에 쓰기 응답을 보내지 않습니다.
- 장점: 데이터 손실이 없습니다.
- 단점: 지연 시간이 증가하고, 시스템이 가장 느린 슬레이브에 의해 제한됩니다.
비동기 복제
- 마스터는 데이터를 쓰고 즉시 클라이언트에 응답한 뒤, 백그라운드에서 슬레이브에게 데이터를 전송합니다.
반동기 복제
- 마스터는 최소 하나의 슬레이브가 업데이트를 확인할 때까지 기다렸다가 쓰기를 완료합니다.
마스터‑슬레이브 아키텍처를 사용하는 이유
읽기 확장성
- 읽기 작업이 쓰기보다 많은 애플리케이션(예: 소셜 미디어 플랫폼)에 이상적입니다. 여러 슬레이브가 부하를 분산시킬 수 있습니다.
고가용성
- 슬레이브가 장애가 나도 시스템은 계속 동작합니다. 마스터가 장애가 나면 슬레이브를 승격시켜 새로운 마스터로 만들 수 있습니다.
분석 격리
- 무거운 분석 쿼리를 슬레이브에서 실행함으로써 실시간 트랜잭션을 담당하는 마스터의 성능에 영향을 주지 않게 할 수 있습니다.
백업
- 슬레이브를 일시 중지하고 전체 데이터베이스 백업을 수행해도 마스터의 실시간 작업에는 영향을 주지 않습니다.
최종 일관성
- 복제 지연으로 인해 슬레이브에서 읽을 경우 마스터에 쓰기 직후에 오래된 데이터가 반환될 수 있습니다.
쓰기 병목
- 쓰기를 담당하는 마스터가 하나뿐이므로 쓰기 집중 워크로드(예: 고빈도 트레이딩)에서는 병목이 될 수 있습니다.
장애 복구 복잡성
- 장애 발생 시 슬레이브를 마스터로 승격하려면 신중한 조정이 필요합니다(보통 Sentinel이나 Zookeeper와 같은 도구가 데이터 손상이나 스플릿‑브레인 상황을 방지하도록 처리합니다).
일반적인 사용 사례
- 전자상거래 사이트: 프로필 업데이트와 같은 쓰기는 마스터에, 제품 탐색과 같은 읽기는 다수의 슬레이브에 분산됩니다.
- Redis: 기본 캐시 노드가 마스터 역할을 하고, 슬레이브가 고속 읽기 접근을 제공하며 데이터 내구성을 보장합니다.
- Hadoop Distributed File System (HDFS): NameNode가 마스터(메타데이터)이며, DataNode가 슬레이브(실제 데이터 블록) 역할을 합니다.
결론
마스터‑슬레이브 아키텍처는 쓰기와 읽기 책임을 분리하여 확장성, 고가용성 및 워크로드 격리를 가능하게 합니다. 동기, 비동기, 반동기 복제의 트레이드오프를 이해하면 애플리케이션의 일관성 및 성능 요구에 맞는 적절한 구성을 선택할 수 있습니다.