【デュラブルエクセキューション】
Durable Execution とは?
最終更新:
💡 セーブポイントのような記録を使って、障害後に処理を再開する
実行の履歴や結果を永続化し、障害後に記録から処理を再開する実行モデル。専用APIや決定性などの制約があり、外部への副作用には再実行への対策が必要。
📌 このページのポイント
普通の実行と何が違うの?
普通にコードを書くだけでいい?
支払いも絶対に二重にならない?
そこは別の設計が必要だよ。決済は成功したのに完了記録を保存する前に落ちると、再試行で同じ決済を呼ぶ可能性がある。同じ注文IDなら重複請求しないよう、決済先の冪等性キーなどを利用するんだ。
どんな処理に使えるの?
例えば登録後の案内メールや、7日後のフォローアップを管理するワークフローだよ。専用タイマーを記録できるけれど、停止中にも正確な時刻で送信できる保証ではない。再試行の回数や失敗時の対応も決めよう。
イベントソーシングと同じ?
まとめ:ざっくりこれだけ覚えればOK!
「Durable Execution」って出てきたら「永続的に保存した記録から処理を再開する仕組み。外部処理の重複対策は別途必要」と思えればだいたいOK!
📖 おまけ:英語の意味
「Durable Execution」 = 耐久性のある実行
💬 Durableは「耐久性のある」という意味で、障害に耐えて実行を継続できることを表しているんだよ