Design Google Docs - System Design Interview
- Google Docs와 같은 협업 편집 시스템 설계는 실시간 동시 편집 및 데이터 일관성 유지가 핵심 과제입니다. ✍️
- 시스템은 모든 Google Docs 기능을 다루기보다 실시간 협업 부분에 중점을 둡니다. 🎯
- Google Docs는 QUIC 프로토콜을 사용하지만, 본 설계에서는 기능적 유사성 때문에 WebSockets을 활용합니다. 🌐
- WebSockets은 실시간 업데이트와 문서별 '방(room)' 개념을 통한 메시지 라우팅에 필수적입니다. 🚪
- 기능 요구사항에는 문서 CRUD, 여러 사용자의 동시 편집, 실시간 업데이트 가시성, 그리고 커서 위치 공유가 포함됩니다. 👁️
- 비기능 요구사항 중 가장 중요한 것은 문서당 최대 100명의 동시 사용자 지원과 200ms 미만의 낮은 업데이트 지연 시간입니다. ⚡
- 동시 편집으로 인한 충돌을 해결하고 모든 사용자의 문서가 일관되게 수렴(converge)하도록 하는 메커니즘이 필요합니다. 🤝
- API 설계는 문서 관리를 위한 표준 REST 엔드포인트와 실시간 협업을 위한 WebSocket 엔드포인트로 구성됩니다. 🔗
- '방' 개념을 통해 특정 문서에 연결된 사용자들끼리만 편집 내용을 주고받도록 하여 효율성을 높입니다. 💬
- 커서 위치 공유는 사용자들이 서로의 작업을 방해하지 않도록 돕는 중요한 기능입니다. 📍
데브허브 | DEVHUB | Design Google Docs - System Design Interview