マイクロサービス_トランザクショナルメッセージング
リンク
メモ
Sagaにおいても即時に同期を取らなければいけない2つの処理がある
データ処理とイベント処理
Transactional outbox
outbox
送信トレイという意味
データベースに、メッセージ用のテーブル(送信トレイ)を用意して、それに登録しておく方法
メッセージ格納後に、別のプロセスなどで、実際にメッセージを送信する
異常時も同じで、データをロールバックして、失敗したというメッセージをテーブルに登録する
そのテーブルからメッセージを取得して別のサービスがサブスクライブする感じ
Polling publisher
outboxテーブルを読み出すMessage Relayがoutboxテーブルをポーリングする方法
Message Relayはポーリングをするプログラムのこと
メリット
アプリケーションとして実装しやすい
デメリット
ユーザー定義のoutboxテーブルに依存する設計になり、開発・運用工数がある程度見込まれる
Transaction log tailing
DBMSのトランザクションログへのログエントリーを用いるパターン
サービスがローカルトランザクションで業務データを更新した場合に、DBMSが管理するログに書き込まれる
Transaction log minerと呼ばれるMessage Relayを用意しておき、書き込まれたログエントリーを取得する
メリット
outboxテーブルが必要ないため、メンテナンスにかける手間がない
デメリット
DB製品ごとにトランザクションログの仕様が異なる
AWS
DynamoDB Sreamで、特にPolling publisher、Transaction log tailingを利用せずに実現可能
Auroraは?