실시간 웹 협업도구 만들기 (홍영택)

Source

  • Google Keep/실시간 웹 협업도구 만들기.md

Summary

본 문서는 카카오 홍영택의 발표 내용을 바탕으로 실시간 웹 협업도구(예: Google Docs)의 핵심 기술인 OT(Operational Transformation)와 구현 아키텍처를 설명한다. 기존 Lock&Save 방식의 한계를 극복하기 위해 OT를 통해 동시 편집 충돌을 해결하고, 서버-클라이언트 간 언어 차이를 줄이기 위해 Node.js(JSON/NoSQL)를, 크로스 브라우저 실시간 통신을 위해 Socket.io(WebSockets)를 추천한다. 또한 Etherpad, ShareJS, ot.js 등 주요 오픈소스 라이브러리를 비교하며 OT 구현의 복잡성을 언급한다.

Key Points

  • 기존 협업(이메일/위키)의 형상관리 및 동시 편집 문제를 실시간 반영과 서버 측 형상관리로 해결
  • 동시 편집 충돌 해결을 위한 OT(Operational Transformation) 기술: Data/Operation Model 및 OT Function 구성
  • 복제 아키텍처: 각 클라이언트가 문서 모델을 유지하며, 시간차로 인한 상태 불일치를 OT Function으로 변환하여 일관성 유지
  • 기술 스택 추천: 서버-클라이언트 간 데이터 형변환 문제를 해결하기 위해 Node.js(JSON) 사용 권장
  • 실시간 통신: Long Connection 기반 WebSockets 사용, 크로스 브라우저 지원을 위해 Socket.io 활용
  • 주요 오픈소스 사례: Etherpad(changeset), ShareJS(OT 프레임워크), ot.js, Changeset 라이브러리 등
  • OT 구현의 높은 난이도 및 복잡성 강조 (구글 웨이브 개발자 인용)