Rust로 구현된, 크래시에도 안전한 결정적 로그 시스템 chr2

by DD
4개월 전
조회수 4

chr2는 결정적 실행 커널(Deterministic Execution Kernel)을 기반으로, 크래시에도 안전한 복제 로그를 제공한다.

VSR(Viewstamped Replication) 합의 알고리즘을 통해 선형적 일관성(Linearizable Consistency)을 보장하며, 정확히 한 번의 사이드 이펙트(Exactly-once Side Effects)를 지원한다.

데이터 격리 아키텍처(Data Isolation Architecture)를 통해 데이터 평면(Data Plane)과 제어 평면(Control Plane)을 분리하여 안정성을 확보했다.

Jepsen 테스트를 통과하여 높은 수준의 내구성과 안정성(Durability and Stability)을 입증했다.

chr2의 핵심 아키텍처 및 구성 요소

chr2는 VSR(Viewstamped Replication) 합의 알고리즘을 사용하여 선형적 일관성을 보장하며, 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 제어 평면(Control Plane)과 데이터 평면(Data Plane)을 분리하여 안정성을 확보했다. 핵심 구성 요소로는 VsrNode, Executor, ChrApplication 등이 있으며, 각 노드는 Manifest, Snapshots, Outbox(BTreeMap)를 포함한다. 특히, Outbox는 정확히 한 번의 사이드 이펙트(Exactly-once Side Effects)를 보장하기 위해 결정적 순서(Deterministic Order)로 실행된다.

내구성과 일관성을 위한 설계

chr2는 내구성을 위해 Quorum write 방식을 사용하며, 2f+1 클러스터에서 f개의 장애를 견딜 수 있도록 설계되었다. 또한, 해시 체인(Hash Chain)을 사용하여 데이터의 무결성을 보장하고, BTreeMap 반복을 통해 결정적 실행을 지원한다. 명시적 내구성(Explicit Durability)을 위해 barrier() 함수를 사용하여 디스크 쓰기를 동기화하며, View numbers를 통해 리더 연산을 제어하여 AI 환각(Hallucination)을 방지한다.

정확히 한 번의 사이드 이펙트(Exactly-once Side Effects) 보장

chr2는 Durable outbox를 통해 정확히 한 번의 사이드 이펙트(Exactly-once Side Effects)를 보장한다. Outbox는 BTreeMap을 사용하여 결정적 순서로 사이드 이펙트를 실행하며, Epoch-fenced execution을 통해 실행을 보호한다. 또한, ReplicatedSessionMap을 사용하여 클라이언트 중복을 방지하고, 장애 조치(Failover) 시에도 데이터의 일관성을 유지한다. 이러한 설계는 분산 시스템에서 데이터 미저장 정책(Zero-Retention Policy)을 구현하는 데 중요한 역할을 한다.

Jepsen 테스트를 통한 검증

chr2는 Jepsen 테스트를 통해 분산 시스템(Distributed System) 환경에서의 안정성을 검증했다. Jepsen 테스트는 파티션, 킬, 시계 왜곡(Clock Skew) 등의 다양한 장애 시나리오를 시뮬레이션하여 시스템의 내구성과 일관성을 테스트한다. chr2는 145개의 테스트를 모두 통과하여 높은 수준의 신뢰성(Reliability)을 입증했다. 이는 실제 운영 환경에서의 안정성을 보장하는 중요한 지표로 작용한다.

chr2 - a deterministic replicated log with a durable outbox for side effects