피드로 돌아가기
How I built Google Drive sync without a backend (and the 3 bugs that almost broke me)
Dev.toDev.to
Frontend

Backend 없는 Google Drive Sync 구현을 통한 API 호출 최적화 및 데이터 무결성 확보

How I built Google Drive sync without a backend (and the 3 bugs that almost broke me)

Dean2026년 6월 16일4intermediate

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 개선 검토

원문 읽기