🔨

awsで実現するsagaパターン(コレオグラフィ編)

2022/06/18に公開

概要

  • マイクロサービスで複数のリソースの結果整合性を利用する方法として、sagaパターンというものがあります。

sagaパターンについては過去記事をご参照ください。

https://qiita.com/yoshii0110/items/4ae10eb071565cb90b37

  • 今回は、sagaパターンにおけるコレオグラフィをAWSで実現するにはという内容で切り込んでいこうと思います。

Choreography(コレオグラフィ)とは

  • Sagaパターンであるコレオグラフィは、中央集権的な調整(コントローラ)の必要性を避けて、参加する要素がイベントを交換します。
  • コレオグラフィを使用すると、他のサービスでローカルトランザクションをトリガーするイベントが各ローカルトランザクションによって発行されます。
  • もう少し簡単に説明すると必要なすべての情報を含んだ最初のイベントを1つのメッセージに保存しておき、最初のトランザクションを完了させます。
  • その後、その他のサービスがそのメッセージを非同期的に取得し、それぞれのタスクを完了させるような動きとなります。
  • イメージ的には、下記のようになります。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3536333633352f39393864633534392d646133632d376239382d393638392d6337303430613835316530302e706e67.png

AWSで実現するChoreography(コレオグラフィ)

  • このアーキテクチャの特徴は、サービスが疎結合になる為、直接互いがお互いに影響を与えません。

  • さらにメッセージの保存と取得が非同期の関係になる為、スケーラビリティという観点信頼性の観点でも利点があるといえます。

  • 下記に示すのはあくまでawsで実現する時の一例となります。

  • あるサービスからのリクエストをSNSを使用し受けます。

  • その後、そのリクエストをSQSを使用しキューに保存し、その後の処理にLambdaを使用します。

  • このサービスのポイントとしてはキューにSQSを使用することでauto scalingの設定も簡単にできるためスケーラビリティという観点を満たすことができます。

  • また、キューのアルゴリズムとしてFIFOを選択することで処理順の担保もできるのではないでしょうか。

Untitled(2).png

参考

https://qiita.com/yoshii0110/items/4ae10eb071565cb90b37

https://d1.awsstatic.com/whitepapers/ja_JP/modern-application-development-on-aws.pdf?did=wp_card&trk=wp_card

Discussion