SMR 재구성을 위한 더티 로그: 모듈형 업그레이드와 최소 다운타임
초록
Gauss는 내부 로그와 외부 로그를 구분해 합의 프로토콜을 “더티 로그” 형태로 숨김으로써, 멤버십·실패 한계·합의 알고리즘을 독립적으로 교체할 수 있게 한다. 이를 통해 재구성 시 전체 시스템 다운타임을 최소화하고, 다양한 프로토콜 간의 순차적 전환을 무중단으로 수행한다.
상세 분석
이 논문은 현대 SMR 시스템이 직면한 두 가지 근본적인 문제—동적인 멤버십 변화와 합의 프로토콜 자체의 진화—를 하나의 통합된 재구성 메커니즘으로 해결하고자 한다. 핵심 아이디어는 “inner log”(합의 엔진이 생성하는 원시 순서 로그)와 “outer log”(RSM 노드가 실제로 소비하는 정제된 로그)를 명확히 분리하는 것이다. inner log은 합의 프로토콜이 안전·활성(liveness) 특성을 만족한다면 어떤 형태든 허용되며, outer log은 외부에 노출되는 최종 일관성을 보장한다. 이 두 로그 사이에 “log sanitizer”라는 변환 레이어를 두어, 특정 트랜잭션을 outer log에 포함시킬지 말지를 자유롭게 결정한다. 결과적으로, 한 epoch에서 다른 epoch으로 전환할 때 기존 합의 엔진이 생성한 inner log을 그대로 유지하면서도, 새로운 프로토콜이 만든 outer log으로 매끄럽게 전환할 수 있다.
Gauss는 Horizontal Paxos의 아이디어를 확장해, 준비(Prepare), 인계(Handover), 종료(Shutdown) 세 단계로 구성된 재구성 프로토콜을 제시한다. Prepare 단계에서는 운영자가 EpochChange 트랜잭션을 기존 합의 인스턴스에 제출하고, 새로운 epoch의 모든 노드가 Ready 메시지를 통해 준비 완료를 알린다. Handover 단계에서는 Ready 메시지들의 커밋 순서를 관찰해 인계가 성공했는지 판단하고, 성공 시 handover certificate를 생성해 Done 트랜잭션으로 새로운 epoch에 전달한다. 이 과정에서 inner log의 뒤쪽에 위치한 트랜잭션은 outer log에 전달되지 않으며, 따라서 기존 epoch이 남은 트랜잭션을 처리하느라 새로운 epoch을 방해하지 않는다. 마지막 Shutdown 단계에서는 구 epoch의 노드가 안전하게 종료하도록 보장한다.
이 설계는 (1) 임의의 멤버십 교체, (2) 합의 프로토콜 교체, (3) 실패 한계 조정 등 모든 변화를 독립적으로 지원한다는 점에서 기존 연구와 차별화된다. 또한, inner/outer 로그 구분을 통해 동시에 여러 epoch이 존재하는 상황에서도 로그 일관성을 유지할 수 있어, “다중 프로포저” 혹은 “병렬 합의 인스턴스”와 같은 고성능 설계와도 자연스럽게 호환된다. 실험은 Rialo 블록체인에 Gauss를 적용해, 다양한 프로토콜(예: PBFT → HotStuff → Mysticeti) 간 전환을 무중단으로 수행했으며, 전환 과정에서 평균 레이턴시 급증이 200 ms 이하로 제한되는 등 실용적인 다운타임 감소를 입증했다.
요약하면, Gauss는 “dirty log”라는 개념을 도입해 합의 엔진을 블랙박스로 취급하면서도, 로그 정제 레이어를 통해 외부에 일관된 상태만 노출한다. 이는 SMR 시스템의 모듈성을 극대화하고, 운영상의 복잡성을 크게 낮추어, 장기적인 시스템 진화와 유지보수를 가능하게 만든다.
댓글 및 학술 토론
Loading comments...
의견 남기기