본문으로 건너뛰기

ADR 0019 — 실시간 협업 편집 (Phase E) 방향성 · 플레이스홀더

상태: Draft · 후속 확장 대기 작성일: 2026-04-23 관련 ADR: 0018 (Phase E 연장)


배경

ADR 0018 Phase A~D 및 Phase F (의뢰인 포털 통합) 이 2026-04-23 ~24 집중 구현으로 프로덕션 머지 완료. Phase E 는 "실시간 협업 (변호사끼리 동일 문서 동시 편집)" 로, ADR 0018 작성 시점에 별도 ADR 로 분리 결정됨.

본 플레이스홀더 문서는 아직 채택 전 으로, 의사결정 자료 수집 단계.

후보 기술

1. Y.js + Tiptap Collab (유력)

  • Tiptap 공식 지원 (@tiptap/extension-collaboration · y-prosemirror)
  • CRDT 기반 offline-first 동기화
  • 서버: Hocuspocus (self-hosted) 또는 Tiptap Cloud (paid)
  • 기존 Tiptap extension 재사용 가능성 최대

2. Firestore 실시간 동기화 (자체 구현)

  • 장점: 이미 사용 중, 추가 인프라 0
  • 단점: 문자열 레벨 동시 편집 충돌 해결 로직 복잡, CRDT 없음
  • 변호사 2~3인 동시 편집 시 "방금 덮어씀" 현상 위험

3. LiveBlocks (SaaS)

  • UI component 제공 + presence indicator
  • 가격: tenant 별 월 $10~ (스케일 시 비용 부담)

결정 대기 항목

  1. 필요 사용 케이스 정의

    • 파트너 변호사 1인 + 사무장 1인 동시 편집 (가장 흔한 시나리오)
    • 같은 작성자가 여러 브라우저 탭 열어놓은 경우 (부차적)
    • 의뢰인이 실시간 열람 (Phase F read-only 유지 — collab 는 staff 간 한정)
  2. 데이터 모델 영향

    • 현재 contentJson + editCount 가 atomic — Y.js 도입 시 contentJson 은 Y-Doc serialized state 로 변경 (역방향 호환 고려)
  3. 비용 · 운영 리스크

    • Hocuspocus self-host: Cloud Run + Redis + Firestore 권한 관리
    • Tiptap Cloud: 가장 간단, 월 $19~ per project
  4. Phase D 학습 파이프라인과 호환성

    • Y-Doc → plainText 추출 경로 검증 필요
    • tenant RAG 가 Y-Doc merged state 를 받아도 문제 없는지

필요 없는 것 (이미 해결됨)

  • 단일 유저 편집 보호: beforeunload 경고 (PR #631)
  • 편집 이력: 수동 + auto_time + auto_edit_count + on_finalize snapshot
  • 롤백: DocumentVersionList
  • diff: line-diff.ts

다음 단계

  • Chair 미팅 — 파트너 변호사끼리 동시 편집 실측 수요 (정량)
  • Y.js 기초 PoC (1 문서, 2 브라우저) — 1 주
  • 비용 추정 + 운영 체크리스트
  • Phase E 정식 ADR 작성 (본 문서 승격)

반대 의견 (사전 기록)

  • P5 (풀스택): "Firestore 기반으로 충분. Y.js 인프라 운영 부담이 너무 큼. 대부분 사용은 순차 편집이지 동시 편집이 아님."
  • P1 (변호사): "파트너 리뷰 패턴은 '변호사 먼저 작성 → 사무장 검토 → 변호사 확정' 순차라 collab 필요성 낮음. 동시 편집보다 comment/review UX 가 더 유용."

Minority Report (Phase E 거부 의견)

일부 역할은 Phase E 자체를 거부 ("collab 은 over-engineering"). 이 경우 대안:

  • comments subcollection 기반 댓글
  • review/approve workflow (DocumentReview 스키마)
  • @멘션 알림

Phase E 범위 재검토 시 이 대안들이 우선순위가 될 수 있음.