長時間稼働するワークフロー
from Modeling Workflows as Pipelines
外部サービスの呼び出しがめちゃくちゃ時間がかかるケースを考える
e.g. マイクロサービスアーキテクチャ
e.g. 検証を機械ではなく人が行い、作業に 1 日かかる
ステップ実行時に、以下の処理が必要になる
サービスを呼び出す前に状態をストレージに保存する
サービスが終了したことを知らせるメッセージを待つ
メッセージを受け取ったら、ストレージから状態を再読込し、次のステップに進む
https://scrapbox.io/files/66a32ad463b651001d8968bd.png
このようなワークフロー を サーガ と呼ぶ
各ステップの状態を保持する必要があるため、通常の非同期呼び出しよりも時間がかかる
この場合、1 つの ワークフロー ではなく、一連の小さなワークフローと考えることができる
小さなワークフロー
入力として、事前にストレージからデータをロードする
元の状態から新しい状態に遷移させ、その状態の 1 つとして永続化する
https://scrapbox.io/files/66a32d7ab3407e001d1dbe31.png
イベントや状態数が増えて状態遷移が複雑になった場合、プロセスマネージャ を作成する必要があるかもしれない