設計メモ(Design Doc)テンプレート

実装前に設計の意図を共有するためのページです。レビューアが背景とトレードオフを理解できるように書きます。

背景

  • 現在の実装では、データ同期に全件取得を利用している
  • データ量の増加に伴い、1 回の同期で 5 分を超えるようになった

目標・非目標

目標

  • 同期時間を 1 分以内に抑える
  • 既存 API との互換性を保つ

非目標

  • リアルタイム同期の導入
  • データベースの変更

設計

  • 変更検知のための updated_at カラムを導入し、差分のみを同期する
  • 同期ジョブを前回の続きから再開できるようにする
flowchart LR
  A[前回 updated_at を取得] --> B[差分クエリ]
  B --> C[対象のみ転送]
  C --> D[次回用 updated_at を保存]

トレードオフ

  • 差分方式は実装コストが増えるが、同期時間を劇的に削減できる
  • 削除検知には別途 deleted_at の管理が必要になる

関連