← すべてのインサイト
ENGINEERING · APR 28, 2026 · 6 分 · エンジニアリングチーム

Durable ワークフローはリトライではありません。

本当に durable オーケストレータが必要なのか、それとも単に良い backoff があれば十分なのか、判断するための合理的なメンタルモデル。

エージェントシステムを出荷するすべてのチームが、だいたい3か月目に同じ質問にたどり着きます。「Temporal / Inngest / Restate が必要なのか、それともリトライを足すだけでいいのか?」

答えはほぼ必ず「durable オーケストレータが必要だが、その理由は『リトライ』ではない」です。

リトライが本当に解決するもの

リトライは、呼び出しを発行した同じプロセス が一時的な失敗を観測したときの正しい道具です。ネットワークの瞬断、レート制限のレスポンス、不安定なダウンストリーム。呼び出し元は失敗結果を手元に持っており、何をやろうとしていたかを把握しており、単にもう一度試せばよいわけです。

このために必要なものは、exponential backoff を持つリトライポリシー、最大試行回数の上限、受信側の冪等性です。これはシステムではなくライブラリの話です。p-retry、tenacity、tokio-retry のどれかを選んで次に進みましょう。

Durable 実行が本当に解決するもの

Durable 実行は、プロセス自体 がステップ間で死ぬ可能性があるときの正しい道具です。クラッシュ、デプロイ、k8s による Pod 退避、リクエストタイムアウトを超える30分の LLM 呼び出し。問うべきは「もう一度試せるか」ではなく、「電気が切れたときどこにいて、すでに成功した部分をやり直さずにどう再開するか」です。

これは根本的に別の問題です。必要なものは:

これをゼロから書くこともできます。実際に書く人もいます。レースコンディションを6か月デバッグした末に、Temporal の劣化版を作っていることに気づきます。

実際の判断

エージェントシステムに以下があるなら:

…durable オーケストレータが必要です。「あれば便利」ではありません。必要です。後から導入するのは、最初から導入するより遥かに高くつきます。

システムが短く、同期的で、ステートレスなら(プロンプト1つ、レスポンス1つ、5秒で完了)、リトライで十分です。オーバーエンジニアリングしないでください。

我々が出荷するもの

実務では、デフォルトは言語スタックに応じて Temporal か Restate です。各 LLM 呼び出し、ツール呼び出し、承認が別ステップになるようワークフローコードを構造化します。コストは学習曲線と運用すべきランタイムです。便益は、「このプロセスがワークフローの途中でクラッシュしたらどうなるか」が新機能ごとに答えなければならない問いではなくなることです。オーケストレータが一度答えてくれます。

リトライは「この呼び出しが失敗した」を解決します。Durable 実行は「この ワークフロー が、それを実行している何かの障害をまたいで生き延びる必要がある」を解決します。これらは代替ではありません。本番システムのほとんどは両方を必要とし、人々が過小評価しているのは2つ目です。

スタート

最初の システムを本番化する。

2 週間の固定価格 discovery。アーキテクチャ、動く spike、構築計画を持ち帰れます。