테렉스: 협업 애플리케이션을 위한 쓰기 공유 지원 시스템

테렉스: 협업 애플리케이션을 위한 쓰기 공유 지원 시스템
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

테렉스는 분산 환경에서 mutable 데이터를 공유하기 위해 설계된 시스템으로, 로컬 복제본에서 오프라인 작업이 가능하고 네트워크 지연에 영향을 받지 않는다. 충돌 탐지와 해결은 애플리케이션에 독립적인 액션‑제약 그래프(ACG)로 표현되며, 멀티로그 구조에 효율적으로 저장된다. 시스템은 복제, 일관성, 보안, 언두, 커밋 등을 담당하고, 애플리케이션 로직은 순수히 동작과 제약만을 제공한다. 공유 캘린더 예시를 통해 회의 충돌을 자동으로 감지·해결한다.

상세 분석

테렉스는 기존의 상태 복제(state‑machine replication)와 마지막 작성자 승리(last‑writer‑wins) 방식이 갖는 높은 지연·충돌 해결 한계를 극복하기 위해, 액션‑제약 그래프(Action‑Constraint Graph, ACG) 라는 추상화 레이어를 도입한다. ACG는 노드가 개별 작업(action)을, 엣지가 동시성 제약(constraint)을 나타내며, 제약 종류는 NotAfter, Enables, NonCommuting, Atomic, Causal, Antagonism 등으로 정의된다. 이러한 제약은 애플리케이션이 제공하는 메타데이터에 의해 선언되며, 시스템은 이를 기반으로 sound schedule—제약을 모두 만족하는 작업 순서—를 계산한다.

시스템 아키텍처는 멀티로그(multilog) 라는 파일 기반 저장소를 사용한다. 각 문서는 디렉터리 형태로 존재하고, 그 안에 파티션별 로그 파일이 순차적으로 추가된다. 로그는 append‑only이며 단일 작성자만을 허용함으로써 쓰기 충돌을 원천 차단하고, 파일 시스템 수준에서 고가용성과 지역성을 확보한다. 로그 파일은 청크(chunk) 단위로 나뉘어 가용 저장소와 네트워크 전송 효율을 높이며, 스냅샷(snapshot)과 가비지 컬렉션을 통해 오래된 작업을 정리한다.

테렉스의 커밋 프로토콜은 백그라운드에서 진행되는 비동기 합의를 기반으로 한다. 각 파티션은 로컬 스케줄에 대해 투표(vote)하고, 다수결 혹은 사용자 선호도에 따라 전역 프리픽스(pre‑fix)를 형성한다. 이 프리픽스는 모든 사이트가 동일하게 적용해야 하는 최소 공통 작업 집합을 의미한다. 커밋이 확정되면 해당 작업은 영구적으로 기록되고, 이후의 충돌 탐지는 불필요해진다.

보안 측면에서는 로그 접근 제어와 암호화된 전송을 지원하며, undo 기능은 ACG의 역방향 탐색을 통해 구현된다. 충돌이 발생했을 때는 제약에 따라 가능한 여러 해결 방안을 제시하고, 사용자는 선택하거나 시스템이 자동으로 선택한다.

다중 문서 업데이트와 크로스‑도큐먼트 제약도 지원한다. 서로 다른 문서에 걸친 제약은 양쪽 로그에 복제되어 일관성을 유지한다. 이는 협업 캘린더와 같이 여러 리소스(시간, 장소, 참가자)를 동시에 고려해야 하는 응용에 필수적이다.

성능 평가에서는 멀티로그 구조가 높은 동시성을 제공하고, 네트워크 지연이 큰 환경에서도 로컬 작업이 즉시 반영되는 장점을 확인했다. 그러나 전역 커밋 단계에서의 합의 비용과 스냅샷 관리 오버헤드가 존재함을 지적한다. 전체적으로 테렉스는 애플리케이션 독립적인 충돌 해결 메커니즘효율적인 저장·전파 구조를 결합해, 분산 협업 시스템 설계에 새로운 패러다임을 제시한다.


댓글 및 학술 토론

Loading comments...

의견 남기기