콘텐츠로 이동

Offline Sync

오프라인 동기화 상태 모델

네트워크가 끊긴 상태에서도 사용자가 작업을 이어가고, 이후 서버와 다시 맞출 수 있도록 상태를 나누는 템플릿입니다.

Copy Block

## States
| State | Meaning | UI |
| --- | --- | --- |
| online | Network is available | Default |
| offline | Network is unavailable | Offline notice |
| local_saved | Data saved locally | Local save complete |
| pending | Waiting for server sync | Waiting for sync |
| syncing | Server sync in progress | Syncing |
| synced | Server sync complete | Usually hidden |
| failed | Server sync failed | Retry action |
## Flow
online -> offline -> local_saved -> pending -> online -> syncing -> synced
pending -> syncing -> failed -> retry -> syncing -> synced
## Decisions
- Offline create:
- Server validation required:
- Duplicate request key:
- Conflict priority:
- Failed item retention:
Local First작업 내용을 먼저 로컬에 저장하고 동기화 대기 상태로 둡니다.
Retry네트워크 복구 후 실패 항목을 다시 전송할 수 있는 흐름을 둡니다.
Conflict충돌이 생겼을 때 어느 쪽 데이터를 우선할지 기준을 정합니다.
Visibility사용자에게 보일 상태와 숨길 상태를 구분합니다.

States

StateMeaningUI
online네트워크 사용 가능기본 상태
offline네트워크 사용 불가오프라인 안내
local_saved데이터가 로컬에 저장됨로컬 저장 완료
pending서버 동기화 대기동기화 대기
syncing서버 동기화 진행 중동기화 중
synced서버 동기화 완료필요 시 숨김
failed서버 동기화 실패재시도 안내
online -> offline -> local_saved -> pending -> online -> syncing -> syncedpending -> syncing -> failed -> retry -> syncing -> synced

Decision Table

QuestionProject Answer
오프라인에서 생성 가능한 데이터는 무엇인가?사용자 입력으로 완결되는 임시 항목
서버 검증이 필요한 작업은 무엇인가?권한, 결제, 공유, 외부 연동이 필요한 작업
중복 요청은 어떤 값으로 판별하는가?클라이언트 생성 요청 ID와 작성 시간
충돌이 발생하면 어느 쪽 데이터를 우선하는가?최신 수정 시간을 기본으로 하되 사용자 확인을 제공
실패한 동기화 항목은 얼마 동안 보관하는가?사용자가 삭제하거나 재시도할 때까지 보관