Cloudflare Research가 전 세계 330개 이상의 데이터센터에서 컨트롤 플레인 상태를 관리하기 위한 분산 합의 서비스 Meerkat을 개발 중이다. 기존 Raft의 리더 의존성과 타임아웃 기반 리더 선출이 광역 네트워크(WAN)에서 야기하는 가용성 저하를 해결하기 위해 2023년 EPFL에서 발표한 QuePaxa 합의 알고리즘을 채택했다.
핵심 포인트- QuePaxa는 리더가 없어도 어떤 레플리카든 합의를 주도할 수 있어, Raft처럼 리더 선출 중 가용성이 중단되는 일이 없다.
- 타임아웃 기반 장애 감지를 제거해 불안정한 광역 네트워크에서도 progress가 멈추지 않는다.
- 적대적 네트워크 환경(타깃 연결 공격, 불안정한 링크)에서 Raft 대비 약 10배 처리량을 달성했다.
- 분산 로그 기반 아키텍처로 선형화 가능성(linearizability)을 보장하며, 그 위에 키-값 스토어 같은 상태 머신을 레이어링한다.
- 50개 글로벌 분산 레플리카 PoC 클러스터에서 리더가 지속 장애를 겪어도 오류율 증가 없이 안정 운영됐다.
상세 정리- 배경: Cloudflare 내부 서비스들은 전 세계에서 공유 상태를 읽고 수정해야 하는데, Raft 리더가 WAN 지연과 타임아웃 튜닝 불가능성으로 불필요한 리더 선출과 가용성 저하를 유발했다.
- 핵심 요구사항 1 — 선형화 가능성: 클라이언트 A가 값을 쓰고 B가 읽으면 반드시 그 쓰기가 반영된 값을 읽어야 한다. 어떤 레플리카가 요청을 처리하든 실시간 순서가 보장되어야 한다.
- 핵심 요구사항 2 — 장애 허용성: 2f+1 머신에서 f개 장애가 발생해도 과반수가 살아있는 한 쓰기가 계속 가능해야 한다. 비-비잔틴 장애(크래시, 네트워크 분리)만 대상으로 한다.
- 아키텍처: 분산 로그 서비스로 동작한다. 애플리케이션 요청이 로그 엔트리가 되어 모든 레플리카가 합의하며, 이미 결정된 슬롯은 변경 불가다.
- 선형화 보장 메커니즘: 이미 결정된 슬롯에 다른 값을 제안하면 과반수가 거부하고 기존 결정을 강제 수용시키는 forcing 메커니즘으로 실시간 순서를 강제한다.
- QuePaxa 장점 1 — 리더 선택성: 리더가 있으면 단일 라운드트립으로 빠르게 합의하고, 없어도 정상 작동한다. 리더는 필수가 아닌 최적화 수단이다.
- QuePaxa 장점 2 — constructive concurrency: 여러 레플리카가 동시에 제안해도 서로 방해하지 않고 협력해 하나의 결정을 도출한다. Raft의 destructive 리더십 경쟁과 대비된다.
- 성능 특성: 리더 제안은 1 라운드트립, 비리더 제안은 3 라운드트립이 필요하다. 레플리카 간 물리적 거리가 지연을 결정하는 수학적으로 불가피한 제약이 있다.
- 최적화 전략: 레플리카 배치 최적화, 쓰기 배칭(여러 쓰기를 단일 제안으로 묶기), 로컬 레플리카에서의 stale-but-consistent 읽기, CAS 트랜잭션 번들링 등을 조합해 사용자 체감 지연을 줄인다.
- 적합 사례: 강한 일관성이 필요하지만 쓰기 빈도가 낮은 컨트롤 플레인 데이터 — 리더십 정보, 리소스 배치 메타데이터 등. 고처리량 데이터 플레인에는 부적합하다.
- 현재 상태: 프로덕션 미배포 개발 단계. 향후 Rust 구현 공식 검증, 클러스터 부트스트래핑 전략, 최적 레플리카 배치 알고리즘, 결정론적 시뮬레이션 테스트, 동료 심사 논문 발행을 계획 중이다.
왜 읽나광역 네트워크에서 강한 일관성 분산 시스템을 설계하는 인프라/백엔드 엔지니어에게 Raft 한계와 대안 합의 알고리즘(QuePaxa) 선택 근거를 실전 사례로 제공한다.