
Cloudflare 공식 블로그에 따르면 Cloudflare Research는 8일(현지시간) 전 세계 데이터센터에서 강한 일관성을 제공하기 위한 내부 실험형 분산 합의 서비스 Meerkat을 공개했다. Meerkat은 EPFL 연구진이 2023년 발표한 QuePaxa 합의 알고리즘을 기반으로 하며, Cloudflare는 이를 글로벌 규모에서 산업적으로 배포하는 첫 사례가 될 것으로 설명했다.
Meerkat은 아직 production에 배포된 서비스가 아니다. Cloudflare는 이 시스템을 작은 규모의 control-plane 상태를 관리하기 위한 내부 전용 기술로 설계하고 있다고 밝혔다. 예를 들면 복제 데이터베이스의 리더십 정보, 리소스 배치 정보, 분산 임대와 잠금처럼 쓰기 빈도는 높지 않지만 일관성이 중요한 데이터가 대상이다.
Cloudflare가 이 실험을 시작한 배경에는 전 세계 330개 이상 데이터센터를 운영하는 네트워크 환경이 있다. 회사는 여러 내부 서비스가 서로 다른 지역에서 같은 control-plane 상태를 읽고 수정해야 하며, 독자가 서로 다른 상태를 보거나 일부 데이터센터와 링크 장애 때문에 쓰기가 멈추는 상황을 줄여야 한다고 설명했다.
기존 합의 알고리즘으로 널리 쓰이는 Raft는 이해하기 쉽고 구현 사례가 많지만, 넓은 지역 네트워크에서는 리더와 타임아웃에 의존하는 구조가 부담이 될 수 있다. Cloudflare는 리더가 장애를 겪거나 특정 링크 지연이 커질 때 새 리더 선출이 끝날 때까지 쓰기가 막힐 수 있고, 지연 시간이 크게 변하는 환경에서는 타임아웃 값을 조정하기 어렵다고 밝혔다.
Meerkat이 채택한 QuePaxa는 이 지점을 다르게 접근한다. Cloudflare 설명에 따르면 QuePaxa에서는 모든 replica가 쓰기를 제안할 수 있으며, 반드시 리더를 통해서만 진행해야 하는 구조가 아니다. 리더가 있더라도 역할은 더 적은 왕복 횟수로 합의를 진행할 수 있다는 이점에 가깝고, 클라이언트는 여러 replica에 동시에 제안을 보내 성공 가능성을 높일 수 있다.
Meerkat의 기본 구조는 합의 로그다. replica는 key-value store의 get, put 같은 애플리케이션 요청을 로그 이벤트로 바꾸고, 합의 알고리즘을 통해 모든 replica가 같은 순서의 로그를 유지하도록 한다. Cloudflare는 일관된 읽기 역시 로그 이벤트로 처리해, 쓰기 이후의 읽기가 이전 쓰기를 보장하는 linearizability를 제공한다고 설명했다.
가용성 목표도 명확하다. Cloudflare는 Meerkat이 전체 replica 중 과반이 살아 있고 서로 통신할 수 있으며, 클라이언트가 과반과 연결된 어느 replica 하나에라도 닿을 수 있으면 읽기와 쓰기를 계속할 수 있도록 설계됐다고 밝혔다. 다만 악의적인 행위자가 잘못된 메시지를 보내는 Byzantine fault는 다루지 않는다고 선을 그었다.
성능 면에서는 한계가 있다. 합의 알고리즘은 본질적으로 여러 replica 사이의 왕복 통신을 요구하며, 전 세계에 replica가 퍼질수록 결정 지연 시간은 과반 replica 사이의 네트워크 지연에 영향을 받는다. Cloudflare도 Meerkat이 일반 목적 데이터베이스를 만들기 위한 기술은 아니라고 설명했다. 대신 쓰기 빈도는 낮지만 정확성이 중요한 control-plane 데이터에 우선 적합하다고 밝혔다.
Cloudflare는 현재 Meerkat을 최대 50개 replica가 전 세계에 분산된 proof-of-concept로 시험했으며, 리더가 계속 실패하는 상황에서도 클러스터가 오류율 증가 없이 동작했다고 밝혔다. 향후 QuePaxa 동작 방식, Rust 구현의 형식 검증, 클러스터 관리, replica 배치, 결정론적 시뮬레이션 테스트 등을 추가 글로 공개할 계획이다.
이번 공개는 대규모 엣지 네트워크 운영사가 분산 시스템의 오래된 문제를 다시 설계하고 있음을 보여준다. AI 모델 인스턴스 배치, 글로벌 제어 평면, 엣지 데이터 저장소처럼 여러 지역에서 동시에 상태를 다루는 서비스가 늘어나는 상황에서, 리더 중심 합의 모델을 보완하려는 실험은 개발자 인프라와 클라우드 아키텍처 논의에도 영향을 줄 수 있다.
출처: Cloudflare Blog https://blog.cloudflare.com/meerkat-introduction/