Note
マイクロサービス間のトランザクションを調整してデータの一貫性を担保するための設計パターン。
概要
Database per serviceのパターンをもつ場合(例えばEコマースで注文・決済・在庫を分ける)に各データストア間のデータ一貫性の担保が課題となる。このような場合にSagaパターンの設計が使われる。
各マイクロサービスに生やしたAPIを利用して各サービスのレスポンスを監視、エラーが発生した場合は補償トランザクションと呼ばれるフローを実行することでデータの整合性を担保する。
Sagaパターンは主にコレオグラフィとオーケストレーションの2パターンに分けられる。
コレオグラフィベースの非同期パターン
各マイクロサービスが自律的に他のサービスと協調しながら処理を進める。各サービスがイベントの発行と待受を行いトランザクションを実現する。
オーケストレーションベースの同期パターン
各マイクロサービスを指示・管理する処理を作り、各マイクロサービスのレスポンスを解釈して他のサービスへ指示をする。 イベントの待受元が一元。
参考
Sagaパターンについて - Qiita Sagaパターン - AWS の規範的ガイダンス GitHub - GoogleCloudPlatform/transactional-microservice-examples GCP でマイクロサービス Saga パターン編. この記事は Google Cloud Japan Customer… | by Shingo | google-cloud-jp | Medium Sagas GCPでSagaパターン実装