rights reserved. Saga パターン • もともと⻑命トランザクション(LLT)を扱うための⼿法 • 分散アプリケーションにおけるトランザクション管理の本命 • 失敗した時の補償トランザクションを含む • 考え⽅ • 分割されたトランザクションをそのまま順番に実⾏ • 失敗したらロールバックするまでを考える • サービスごとにトランザクションが決定するのが⾒える 1 2 -2 -1 3 OK OK OK NG NG rollback Commit
rights reserved. Saga パターン 1 2 -2 -1 3 OK OK OK NG NG rollback Commit オーケストレーション オーケストレーター 状態 ストア 実⾏ 実⾏ 実⾏ サービスA サービスB サービスC サービス A サービス B サービス D コレオグラフィ Done ⾮同期的なトリガー サービス C
rights reserved. 参考⽂献 デプロイの独⽴性・マイクロサービスアーキテクチャ • マイクロサービスアーキテクチャ / Sam Newman ドメイン駆動設計 • エリック・エヴァンスのドメイン駆動設計 / Eric Evans • 実践ドメイン駆動設計 / Vaughn Vernon ⼀貫性モデル • データ指向アプリケーションデザイン / Martin Kleppman • 詳説データベース / Alex Petrov • The Art of Multiprocessor Programming / Maurice Herlihy Saga パターン • ソフトウェアアーキテクチャ・ハードパーツ / Neal Ford 他