목록 보기
동시편집 중 서버에서 일어나는 일
백엔드

동시편집 중 서버에서 일어나는 일

채널톡
채널톡
2026년 11월 12일

두줄요약

문서 협업 장벽을 낮추기 위해 Yjs 기반 CRDT 동시편집 서버 구조를 설계했습니다. 웹소켓 동기화와 update 영속화, 기존 blocks 문서 형식 호환 방식을 설명합니다.

문제 상황

  • 버전 분기 기반 문서 편집으로 비개발자 협업과 동시 수정에 높은 진입 장벽
  • 기존 blocks 문서 형식, 웹사이트 배포, RAG 활용 기능과의 호환성 필요

선택 이유

  • 오픈소스 생태계, 서버 수평 확장, 오프라인 편집 가능성을 고려한 CRDT 선택
  • ProseMirror 연동 플러그인과 레퍼런스가 풍부한 Yjs 채택
  • 기존 인증·영속화 흐름과의 결합이 쉬운 클라이언트-서버 및 웹소켓 구조 선택

구조와 흐름

  • 클라이언트와 동시편집 서버가 Y.Doc을 유지하고 Yjs update를 웹소켓 room으로 전파
  • 재연결 시 state vector와 sync 프로토콜로 누락된 update 동기화
  • Yjs ↔ ProseMirror ↔ blocks 변환으로 편집 데이터와 기존 문서 기능 연결

성능/운영 포인트

  • 유효성 검증을 통과한 Yjs update만 DB에 append하여 편집 이력 영속화
  • update 누적 증가에 대응한 mergeUpdates 기반 병합 저장
  • Yjs 데이터를 편집 SSOT로 두고 blocks 변환 결과를 주기적 저장

다음 읽기

#ProseMirror 주제를 이어서 읽기

라이브러리만 붙이면 동시편집은 끝일까요?

ProseMirror와 Yjs를 연결한 동시편집의 변경 전파·반영 흐름을 설명했습니다. 중복 의존성으로 인한 런타임 오류를 peer dependency와 external로 해결했습니다.

채널톡
채널톡
프론트엔드
전체 보기

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...