エントリー済み

疎結合化で消えた「揃った」の判定者 ― Aggregatorをどこに置くと、どう壊れるか

中級者 Architecture Design

日次ETLをStep Functions2本に分割したところ、後続の起動条件が「先行の完了」かつ「別管轄バッチの完了」のANDになりました。2つの完了を突き合わせて「揃った」と判定する場所が要ります。ところが、その場所がどこにもありません。

EventBridgeのルールは1イベントごとに独立して発火するので、2つ並べても二重起動になるだけです。SQSも1件ずつ届く仕組みで、ANDの判定は自作です。Enterprise Integration Patterns の Aggregator は "a stateful filter"。ステートレスに組んできた構成に、「どれが来て、どれがまだか」を覚えている誰かが要ります。

本セッションでは、その誰かをどこに置くかを、起動条件の入れ替え、実行内のポーリング、タスクトークン、外部状態ストア、Parallel、実行名による一意化、と並べ、「誰が揃ったと判定するか」「片方が来ないとき止まるのか黙って進むのか」「外から見えるか」の観点で、壊れ方とあわせて比較します。ワークフローエンジンの外に処理を出した瞬間、状態を誰が持つかが設計対象になります。

Speaker

Yusuke Shimizu

NRIネットコム株式会社

クラウドアーキテクト

クラウドアーキテクトとして、AWSを用いたWebサービスの設計・開発・運用に取り組む。一度組んだ構成を、運用しながら手を入れ続けている。いまは、動いているように見えて止まっているワークフローの見つけ方を考えている。社内ではCCoEとして人材育成・技術広報・AI活用推進を担う。AWS Ambassador / AWS Community Builder。好物はつけ麺。