ぴゅー吉のIT備忘録

調べたIT用語を文字にアウトプットして脳に刻めればいいな

マイクロサービスの分散トランザクションを使用しない理由

マイクロサービスの分散トランザクションを使用しない理由

 

機能ごとにデプロイしてサービスとして提供するソフトウエア技法。
また、DBはマイクロサービスごとに持つのが一般的らしい。

マイクロサービスは各サービスを疎結合してネットワークを通じて
各サービスとやりとりをする。


そのため、
トランザクションは分散トランザクションを使用しないのが一般的。

理由は以下と理解。
・各サービスのDBが分散トランザクションを実装しているか保証できない
・分散トランザクションはロックをとるため、サービスが複数あると
その分、ロックする時間もかかる

※あと他に、分散トランザクションは複雑で不具合が・・・という説明もあるが、?です。。


分散トランザクションを使用しない代わりに
saga(サーガ)という考えが使用される。

 

内容は、各サービス内でDBトランザクションを実行させ、
処理に失敗した際、各サービスでロールバック処理を実装する。
⇒これを「保証トランザクション」とよぶ。