concept development

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パターン実装