コンテンツにスキップ

サービス間のデータ整合性が保証されているか?

Type: Structure
Category: イベント・非同期処理
Audience: 設計初心者 / 設計中のチーム / レビュワー


背景・概要

マイクロサービスや疎結合なシステムでは一貫性の保証が難しくなるため、設計段階で「いつ整合すべきか」を明確にする必要がある


  • イベント駆動 + 結果整合性 な整合戦略を採用する
  • あるステータスの更新をTaskサービス、Documentサービスの双方向で同期するのではなく、Taskサービスからのみ更新しDocumentサービスは購読するのみなどの一方向のデータフローで整合性を確保する
  • 更新後イベント送信+受信側バリデーションにより不整合を防止する

よくある失敗例

  • 双方向更新でデータの整合が取れず、最新の情報が不明になる
  • 処理順序が保証されておらず、古いイベントで上書きされる
  • レプリカが遅延し、読み取りに誤差が出る

FAQ

Q. 結果整合性で本当に大丈夫?

A. ケースバイケースだが、多くの業務は即時一致よりも「ある程度の時間内で整合」で十分なことが多い。それを考え定義してドキュメントに明記するのが重要

Q. 双方向同期はやめるべき?

A. 原則やめるべき。一方通行の更新フローにしないと同期地獄になるので


関連観点