マイクロサービス アーキテクチャのコンテキストでは、「マイクロサービス サーガ」という用語は、システム内の複数の疎結合サービス間でデータの一貫性を維持できるようにする分散トランザクション パターンを指します。 Saga パターンの主な目標は、個々のマイクロサービスが独自のデータを管理し、独自のデータベースを持つ、マイクロサービス ベースのシステムでのトランザクション管理から生じる課題に対処することです。 「Saga」という用語はデータベース管理システムの分野に由来しており、1987 年に Hector Garcia-Molina と Kenneth Salem によって初めて導入され、存続期間の長いトランザクション内で実行される一連の操作を指します。
マイクロサービス アーキテクチャは、ソフトウェア開発における柔軟性、スケーラビリティ、回復力を高める機能のおかげで人気が高まっています。ただし、他のソフトウェア アーキテクチャのアプローチと同様に、トレードオフがあります。マイクロサービス アーキテクチャにおける注目すべき課題の 1 つは、特に単一のビジネス オペレーションが複数のマイクロサービスにまたがる場合に、サービス間でデータの一貫性を維持することです。この問題は、通常、各マイクロサービスがそれぞれのデータ ストアを所有しており、その結果、サービスごとに個別のトランザクション境界が発生するという事実によってさらに深刻になります。
この課題に対処するために、Microservices Saga パターンは、各トランザクションが単一のマイクロサービスによって所有される、一連のローカル トランザクションを組み合わせるソリューションを提案します。これらのトランザクションは、メッセージまたはイベントを通じて非同期的に調整され、2 フェーズ コミット プロトコルに依存する従来の分散トランザクションに代わって行われます。 Saga パターンでは、各ローカル トランザクションの後に、シーケンス内の次のローカル トランザクションをトリガーするか、失敗した場合に補償トランザクションをトリガーするイベントが続きます。補償トランザクションは基本的に「元に戻す」操作であり、問題が発生したときにサービス間でデータの一貫性を維持するために、以前のローカル トランザクションによって行われた変更を元に戻すことを目的としています。
マイクロサービス サーガは、コレオグラフィーとオーケストレーションという 2 つの主なパターンを使用して実装できます。コレオグラフィーでは、各マイクロサービスは、どのイベントに反応する必要があるか、またそれに応じてどのアクションを実行する必要があるかを理解する責任があります。ローカル トランザクションが完了すると、マイクロサービスはイベントを発行し、他のマイクロサービスはこのイベントをリッスンして、それに応じて動作します。このアプローチの主な利点は、分散制御が促進され、中央の調整がほとんどまたはまったく必要ないことです。
オーケストレーション パターンでは、オーケストレーターと呼ばれる中心的なコンポーネントが、マイクロサービスの分野でローカル トランザクションの実行を調整する役割を果たします。オーケストレーターは、個々のサービスからイベントを受信し、ローカル トランザクションを実行するためにサービスにコマンドを送信します。この一元化されたアプローチにより、効率的な例外処理が可能になり、全体的なプロセスの可視性が向上します。ただし、潜在的なボトルネックが発生する可能性があり、追加のインフラストラクチャとメンテナンスの作業が必要になる場合があります。
強力なno-codeプラットフォームであるAppMasterでは、ビジュアルなビジネス プロセス (BP) デザイナーによって、マイクロサービス サーガ パターンの実装が容易になり、完全にインタラクティブな要素を備えたバックエンド、モバイル、および Web アプリケーションを作成できるようになりました。このプラットフォームは、プロジェクトごとにソース コード、テスト、移行スクリプトなどを生成し、マイクロサービス アーキテクチャにシームレスに適合し、データの一貫性と分散トランザクションの効率的な実行を保証します。さらに、 AppMasterのアプローチは、変更を加えるたびにアプリケーションを再生成することで技術的負債を排除し、単一の開発者でも包括的なソフトウェア ソリューションを効率的かつ効果的に作成できるようにします。
例として、在庫、支払い、配送の個別のサービスを備えた電子商取引プラットフォームを考えてみましょう。注文が行われると、マイクロサービス サーガが開始されます。これには、在庫サービスからの在庫の予約、支払いサービスを介した顧客への請求、配送サービスを介した出荷の生成が含まれます。これらの手順のいずれかが失敗した場合は、補償トランザクションが実行されて、以前に成功した操作がすべて元に戻され、システム全体のデータの一貫性が確保されます。マイクロサービス サーガ パターンを実装することにより、この e コマース プラットフォームは、マイクロサービス アーキテクチャ内で信頼性の高いトランザクション管理を提供し、最終的に回復力と運用の合理化を促進できます。
結論として、マイクロサービス サーガは、マイクロサービス ベースのシステムでデータの一貫性を維持するという課題に対処する分散トランザクション パターンです。これにより、非同期メッセージングやイベントを通じて複数のサービスにわたる一連のローカル トランザクションを調整できるようになり、従来の分散トランザクションに代わって、より柔軟でスケーラブルで回復力のあるソフトウェア アーキテクチャが保証されます。 AppMasterのno-codeプラットフォームを使用してマイクロサービス サーガ パターンを実装すると、技術的負債を負うことなく、より迅速でコスト効率の高いアプリケーション開発が可能になり、開発者が最新のソフトウェア アーキテクチャの実践に準拠した包括的なソフトウェア ソリューションを作成できるようになります。