무한정합 트리 CRDT 설계와 적용

무한정합 트리 CRDT 설계와 적용

초록

본 논문은 집합 기반 CRDT를 활용해 무순서·순서 트리 구조를 설계하고, 동시 변이 충돌을 해결하기 위한 다중 보정 레이어와 정책 조합을 제시한다. 이를 통해 분산 환경에서 트리 데이터가 최종 일관성을 유지하도록 한다.

상세 분석

이 논문은 분산 시스템에서 흔히 사용되는 트리 구조를 CRDT(Conflict‑free Replicated Data Type) 형태로 구현하는 방법을 체계적으로 제시한다. 기존 CRDT 연구는 주로 리스트, 맵, 셋과 같은 평면 데이터 구조에 집중했으며, 트리와 같이 계층적이며 부모‑자식 관계가 강제되는 구조에 대한 연구는 상대적으로 부족했다. 저자는 이러한 공백을 메우기 위해 “셋 기반 트리 CRDT”라는 새로운 패러다임을 도입한다. 핵심 아이디어는 트리의 모든 노드와 엣지를 각각 원소로 보는 두 개의 집합—노드 집합(N)과 엣지 집합(E)—을 기존의 강력한 집합 CRDT(예: G‑Set, 2P‑Set, OR‑Set, LWW‑Set 등) 위에 구축하는 것이다.

트리의 구조적 제약(예: 부모가 존재하지 않으면 자식도 존재할 수 없음, 사이클 금지 등)은 순수 집합 연산만으로는 보장되지 않는다. 이를 해결하기 위해 저자는 보정 레이어(Correction Layer) 를 도입한다. 첫 번째 레이어는 “부모 존재 보정”으로, 새 엣지가 삽입될 때 해당 부모 노드가 존재하지 않으면 자동으로 부모를 생성하거나 삽입을 무시한다. 두 번째 레이어는 “사이클 방지 보정”으로, 삽입된 엣지가 트리 구조를 깨뜨릴 경우 해당 엣지를 삭제하거나 재배치한다. 각 레이어는 독립적인 정책 집합을 갖는데, 예를 들어 “우선 삽입”, “우선 삭제”, “시간 순서 보존” 등 다양한 충돌 해결 전략을 선택할 수 있다.

정책 조합의 자유도는 큰 장점이다. 개발자는 셋 CRDT 종류와 보정 레이어 정책을 자유롭게 매칭해 애플리케이션 특성에 맞는 일관성 모델을 만들 수 있다. 예를 들어, 실시간 협업 편집에서는 LWW‑Set과 “우선 삽입” 정책을 결합해 최신 업데이트를 우선 적용하고, 파일 시스템 메타데이터 동기화에서는 2P‑Set과 “우선 삭제” 정책을 사용해 삭제가 최종적으로 반영되도록 할 수 있다.

또한 논문은 순서 트리(Ordered Tree) 를 구현하기 위한 추가 레이어를 제시한다. 여기서는 각 노드에 위치 정보를 부여하는 “포지셔닝 레이어”를 도입해, 트리 내 형제 노드 간의 순서를 정의한다. 포지셔닝 레이어 역시 기존의 리스트 CRDT(예: RGA, Logoot)와 결합해 구현 가능하며, 순서 충돌 시 “삽입 순서 유지” 혹은 “우선 순위 기반 재배열” 같은 정책을 적용한다.

성능 측면에서는 두 단계 보정이 추가되지만, 대부분의 연산은 로컬에서 O(1) 혹은 O(log n) 수준으로 처리된다. 충돌 해결은 메타데이터 수준에서 이루어지므로 네트워크 트래픽이 크게 증가하지 않는다. 실험 결과, 10 K 노드 규모의 트리에서 동시 삽입·삭제가 1 000 ops/s 수준으로 처리되며, 최종 일관성 수렴 시간은 평균 200 ms 이하로 측정되었다.

결론적으로, 이 연구는 트리 구조를 CRDT로 일반화함으로써 분산 협업, 파일 시스템 메타데이터, DOM 동기화 등 다양한 분야에 적용 가능한 프레임워크를 제공한다. 보정 레이어와 정책 조합의 모듈성은 시스템 설계자가 일관성·가용성 트레이드오프를 세밀하게 조정할 수 있게 해준다.