피드로 돌아가기
Dev.toFrontend
원문 읽기
Backend 없는 Google Drive Sync 구현을 통한 API 호출 최적화 및 데이터 무결성 확보
How I built Google Drive sync without a backend (and the 3 bugs that almost broke me)
AI 요약
Context
개인정보 보호를 위해 IndexedDB를 사용하는 Note App에서 서버 없이 클라이언트 사이드 동기화 구현 필요. 개별 파일 동기화 방식 채택 시 파일 수에 비례해 API 호출 횟수가 급증하는 N×2의 확장성 문제 발생.
Technical Solution
- 메타데이터 전용
sync.json을 Single Source of Truth로 정의하여 전체 구조와 변경 이력을 통합 관리 modifiedTime기반의 상태 비교 로직을 통해 변경된 파일만 선별적으로 전송하는 Delta Sync 구현- Google Drive API의 404 에러 시 Folder ID를 재검색하고 작업을 재시도하는
withFolderRecovery핸들러 설계 - 삭제된 데이터를 다른 디바이스에 전파하기 위해
sync.json내에 Tombstones 레코드 도입 - IndexedDB의
store.add()가 중복 키 발생 시 침묵 실패하는 특성을 파악하여store.put()으로 전환 및 명시적 Orphan 데이터 정리 로직 추가
실천 포인트
1. 외부 API 연동 시 ID 캐싱 전략과 404 에러 발생 시의 재초기화(Re-initialize) 복구 경로 설계 여부 확인
2. 데이터 모델 설계 시 Sentinel Value가 정상 값(Root 등)과 중복되지 않도록 엄격한 타입 및 값 정의
3. IndexedDB 사용 시 `add()`와 `put()`의 동작 차이를 인지하고 데이터 덮어쓰기 전략 수립
4. 대량 파일 전송 시 순차 처리 대신 적정 수준의 병렬 처리(Concurrency) 도입을 통한 Latency 개선 검토