TL;DR
内容
Modeling Workflows as Pipelines の一節である。
外部サービスの呼び出しにとても長い時間がかかるケースを考える。マイクロサービスアーキテクチャのほか、検証を機械ではなく人が行い、作業に 1 日かかるような場合である。このとき、ステップの実行には次の処理が必要になる。
- サービスを呼び出す前に、状態をストレージに保存する。
- サービスが終わったことを知らせるメッセージを待つ。
- メッセージを受け取ったら、ストレージから状態を読み込み直し、次のステップに進む。
このようなワークフローをサーガと呼ぶ。各ステップの状態を保存する必要があるので、通常の非同期呼び出しよりも時間がかかる。
この場合、全体を 1 つのワークフローではなく、一連の小さなワークフローと考えることができる。小さなワークフローは、事前にストレージから読み込んだデータを入力として受け取る。そして、元の状態から新しい状態に遷移させ、その状態を永続化する。
イベントや状態の数が増えて状態遷移が複雑になった場合は、プロセスマネージャを作る必要があるかもしれない。