데브허브 | DEVHUB | Justifying my bad decisions (another database change...)Justifying my bad decisions (another database change...)
- 개발자는 최적의 솔루션을 찾기 위해 여러 차례 데이터베이스를 변경했으며, 이번에 Convex로의 네 번째 마이그레이션을 진행했습니다. 🔄
- 이번 Convex 마이그레이션은 4일간의 극심한 디버깅과 서비스 중단, 개발자의 막대한 시간 소모를 동반한 매우 고통스러운 과정이었습니다. 🤯
- 마이그레이션의 핵심 목표는 팀원들이 데이터베이스 변경에 대한 자신감을 갖고 개발할 수 있도록 지원하여, 팀의 생산성을 높이는 것이었습니다. 🤝
- 이전 시스템은 Dexie(IndexedDB 래퍼)를 기반으로 했으나, IndexedDB의 근본적인 문제점(단일 연결, 멀티탭 이슈, Safari의 경쟁 조건 등)으로 인해 유지보수가 매우 어려웠습니다. 🗑️
- 자체 개발한 동기화 엔진은 삭제된 데이터가 다시 나타나는 문제(delete persistence)와 같은 수많은 엣지 케이스를 발생시켜 개발자를 괴롭혔습니다. 🛠️
- PlanetScale(SQL)로 전환했을 때도, 데이터 필드를 개별적으로 매핑하지 않고 전체 객체를
super JSON string으로 저장하여 데이터 중복과 비효율성을 초래했습니다. 📦
- 데이터 정의가 로컬과 서버에 분산되어 'Split Brain' 문제가 발생했고, 이로 인해 복잡한 클라이언트 측 데이터 마이그레이션 로직이 지속적으로 필요했습니다. 🧠
- 새로운 데이터베이스는 IndexedDB 탈피, 단일 진실 공급원 확보, 뛰어난 낙관적 업데이트 유지, 그리고 메시지 생성 중 연결이 끊어져도 재개 가능한 스트림 구현을 목표로 했습니다. ✨
- 스폰서인 WorkOS는 기업용 인증(SAML, SSO, Octa) 문제를 해결하여, 소규모 팀이 대기업에 제품을 쉽게 판매할 수 있도록 돕는 솔루션으로 소개되었습니다. 💼