設計メモ(Design Doc)テンプレート
実装前に設計の意図を共有するためのページです。レビューアが背景とトレードオフを理解できるように書きます。
背景
- 現在の実装では、データ同期に全件取得を利用している
- データ量の増加に伴い、1 回の同期で 5 分を超えるようになった
目標・非目標
目標
- 同期時間を 1 分以内に抑える
- 既存 API との互換性を保つ
非目標
- リアルタイム同期の導入
- データベースの変更
設計
- 変更検知のための
updated_atカラムを導入し、差分のみを同期する - 同期ジョブを前回の続きから再開できるようにする
flowchart LR
A[前回 updated_at を取得] --> B[差分クエリ]
B --> C[対象のみ転送]
C --> D[次回用 updated_at を保存]
トレードオフ
- 差分方式は実装コストが増えるが、同期時間を劇的に削減できる
- 削除検知には別途
deleted_atの管理が必要になる