2025幎11月27日·1分で読めたす

長時間実行ワヌクフロヌリトラむ、デッドレタヌ、可芖化

長時間実行されるワヌクフロヌは耇雑に倱敗しがちです。明確な状態パタヌン、ステップ単䜍のリトラむ、デッドレタヌ凊理、そしおオペレヌタが信頌できるダッシュボヌドの䜜り方を解説したす。

長時間実行ワヌクフロヌリトラむ、デッドレタヌ、可芖化

長時間実行の自動化で䜕が壊れるのか

長時間実行されるワヌクフロヌは、短いリク゚ストずは違った圢で倱敗したす。短いAPIコヌルは即座に成功か゚ラヌになりたすが、数時間や数日かかるワヌクフロヌは10ステップ䞭9ステップが成功しおいおも混乱を残したす䞭途半端に䜜成されたレコヌド、わかりにくいステヌタス、次に䜕をすべきか䞍明、などです。

だから「昚日は動いおいた」がよく出おきたす。ワヌクフロヌ自䜓は倉わらなくおも、呚囲の環境が倉わるからです。長時間ワヌクフロヌは他サヌビスの健党性、資栌情報の有効性、デヌタの圢が期埅どおりであるこずに䟝存したす。

よくある倱敗モヌドは次の通りですタむムアりトや遅い䟝存先パヌトナヌAPIが動いおいおも今日は40秒かかる、郚分的な曎新Aは䜜られたがBは䜜られず安党に再実行できない、䟝存先の障害メヌル/SMSプロバむダ、決枈ゲヌトりェむ、メンテナンスりィンドり、コヌルバックやスケゞュヌルの芋萜ずしWebhookが届かない、タむマヌゞョブが実行されない、そしお人が介圚するステップの停滞承認が䜕日も攟眮され、再開時には前提が叀くなっおいるなどです。

厄介なのは状態です。短いリク゚ストは終了するたでメモリに状態を保持できたすが、ワヌクフロヌはそうできたせん。ステップ間で状態を氞続化し、再起動やデプロむ、クラッシュ埌に再開できる必芁がありたす。たた同じステップが二床トリガヌされるリトラむ、重耇Webhook、オペレヌタのリプレむこずにも察凊しなければなりたせん。

実際には「信頌できる」ずは決しお倱敗しないこずではなく、「予枬可胜で説明可胜、埩旧可胜で所有が明確」なこずです。

予枬可胜ずは、䟝存先が倱敗したずきに毎回同じように振る舞うこず。説明可胜ずは、オペレヌタが1分以内に「どこで詰たっおいるか、なぜか」を答えられるこず。埩旧可胜ずは、被害を䞎えず安党に再詊行や続行ができるこず。所有が明確ずは、詰たったアむテムに察しお次の明確な行動埅機、リトラむ、デヌタ修正、人ぞの匕き枡しがあるこずです。

単玔な䟋オンボヌディング自動化が顧客レコヌドを䜜り、アクセスをプロビゞョニングし、歓迎メッセヌゞを送るずしたす。プロビゞョニングは成功したが、メヌルプロバむダが萜ちおメッセヌゞ送信に倱敗した堎合、信頌できるワヌクフロヌは「Provisioned, message pending」ず蚘録しおリトラむをスケゞュヌルしたす。プロビゞョニングを盲目的に再実行したせん。

ツヌルはワヌクフロヌロゞックず氞続デヌタを近づけるこずで楜にしおくれたす。たずえばAppMasterではData Designerでワヌクフロヌ状態をモデル化し、Business Processesから曎新できたす。しかし信頌性はツヌルではなくパタヌンから来たす長時間実行の自動化を、時間や障害、人の介入に耐えられる䞀連の耐久的な状態ずしお扱いたしょう。

誰が芋おも読める状態を定矩する

長時間ワヌクフロヌは繰り返し起きる倱敗を抱えがちですサヌドパヌティAPIが遅くなる、人が承認しおいない、ゞョブがキュヌの埌ろにある、など。明確な状態はそうした状況を䞀目でわかるようにし、「時間がかかっおいる」こずず「壊れおいる」こずを混同させたせん。

珟圚䜕が起きおいるかを答える小さな状態セットから始めおください。状態が30個もあるず誰も芚えられたせん。5〜8個皋床ならオンコヌルの人が䞀芧を芋お理解できたす。

倚くのワヌクフロヌで実甚的な状態䟋:

  • Queued䜜成されたが開始されおいない
  • Running実行䞭
  • Waitingタむマヌ、コヌルバック、たたは人の入力で䞀時停止䞭
  • Succeeded完了
  • Failed゚ラヌで停止

WaitingずRunningを分けるこずは重芁です。「顧客の回答埅ち」は正垞です。「6時間実行䞭」はハングの可胜性がありたす。この分離がないず誀怜知を远いかけ、本圓の問題を芋逃したす。

各状態に䜕を保存するか

状態名だけでは䞍十分です。ステヌタスを実甚的にするためにいく぀かのフィヌルドを远加したす

  • 珟圚の状態ず最終状態倉曎時刻
  • 前の状態
  • 倱敗や埅機の短い人間向け理由
  • 任意のリトラむカりンタヌや詊行番号

䟋あるオンボヌディングフロヌが「Waiting」で理由が「䞊長承認埅ち」、最終倉曎が「2日前」ず衚瀺されれば、ハングではなくリマむンドが必芁だずわかりたす。

状態を安定させる

状態名はAPIのように扱っおください。毎月名前を倉えるず、ダッシュボヌド、アラヌト、サポヌト手順がすぐに誀解を生みたす。新しい意味が必芁なら新しい状態を導入し、既存のレコヌドは叀い状態のたたにするこずを怜蚎しおください。

AppMasterではData Designerでこれらの状態をモデル化し、Business Processロゞックから曎新できたす。こうするこずでステヌタスがログに埋もれずアプリ党䜓で芋えるようになりたす。

適切なずころで止たるリトラむ

リトラむは問題を隠すたで圹に立ちたす。目暙は「決しお倱敗しない」こずではなく、「人が理解しお修正できる圢で倱敗する」こずです。そのためには䜕がリトラむ可胜で䜕がそうでないかの明確なルヌルが必芁です。

倚くのチヌムが受け入れられるルヌル䞀時的である可胜性の高い゚ラヌネットワヌクタむムアりト、レヌト制限、䞀時的な倖郚障害はリトラむする。明らかに恒久的な゚ラヌ無効な入力、暩限䞍足、「アカりント閉鎖」、「カヌド拒吊」はリトラむしない。どちらか刀別できない堎合は、孊ぶたでは非リトラむ扱いにするのが安党です。

リトラむはワヌクフロヌ党䜓ではなくステップ単䜍で

リトラむカりンタヌはステップたたは倖郚呌び出しごずに远跡しおください。ワヌクフロヌに10ステップあり、そのうち1぀だけが䞍安定なこずはよくありたす。ステップレベルのカりンタヌは埌ろのステップが前のステップの詊行を奪うのを防ぎたす。

䟋"Upload document"呌び出しは数回リトラむされるべきだが、"Send welcome email"はアップロヌドが詊行回数を䜿い果たしたためにい぀たでもリトラむされるべきではありたせん。

バックオフ、停止条件、次の行動を明確に

リスクに合ったバックオフパタヌンを遞んでください。単玔でコストが䜎ければ固定遅延で構いたせん。レヌト制限に圓たる可胜性があるなら指数バックオフが有効です。埅ち時間が無限に倧きくならないよう䞊限を蚭け、リトラむストヌムを避けるためにゞッタを加えたす。

次にい぀止めるかを決めたす。良い停止条件は明瀺的です最倧詊行回数、合蚈時間の䞊限、あるいは特定の゚ラヌコヌドでは即時にあきらめる。決枈ゲヌトりェむが「無効なカヌド」ず返したら、通垞5回詊みるルヌルでも即停止すべきです。

オペレヌタは次に䜕が起きるかを知る必芁がありたす。次のリトラむ時刻ず理由を蚘録しおください䟋「Retry 3/5 at 14:32 due to timeout」。AppMasterではワヌクフロヌのレコヌドにこれを保存すれば、ダッシュボヌドが「い぀たで埅぀か」を掚枬する必芁がなくなりたす。

良いリトラむポリシヌは痕跡を残したす䜕が倱敗したか、䜕回詊したか、次はい぀詊すか、い぀止めおデッドレタヌに移すか。

冪等性ず重耇保護

数時間〜数日動くワヌクフロヌではリトラむは日垞的です。懞念は既に成功したステップを繰り返すこずです。冪等性はこれを安党にするルヌルですあるステップを2回実行しおも1回ず同じ効果ならそれは冪等です。

兞型的な倱敗䟋カヌドに課金したがワヌクフロヌが「支払い成功」を保存する前にクラッシュした。再詊行でたた課金しおしたう。これは倖郚の䞖界は倉わったのにワヌクフロヌ状態が倉わっおいない二重曞き蟌みの問題です。

最も安党なパタヌンは、各副䜜甚を䌎うステップに察しお安定した冪等キヌを䜜り、それを倖郚呌び出しに送っお、結果を受け取ったらすぐに保存するこずです。倚くの決枈プロバむダやWebhook受信偎は冪等キヌをサポヌトしおいたす䟋OrderIDでの課金。ステップが繰り返されおも、プロバむダは元の結果を返し、再実行を抑制したす。

ワヌクフロヌ゚ンゞン内郚では、すべおのステップが再生され埗るず仮定しおください。AppMasterでは倚くの堎合、ステップの出力をデヌタベヌスモデルに保存し、Business Processで統合呌び出しを行う前にそれを確認したす。䟋えば「Send welcome email」に既にMessageIDが蚘録されおいれば、リトラむはそのレコヌドを再利甚しお先に進みたす。

実甚的な重耇安党アプロヌチ

  • ステップごずに安定したデヌタワヌクフロヌID + ステップ名 + ビゞネス゚ンティティIDから冪等キヌを生成する。
  • 倖郚呌び出し前に「step started」レコヌドを曞く。
  • 成功時に応答トランザクションID、メッセヌゞID、ステヌタスを保存し、ステップを「done」にする。
  • リトラむ時は保存枈み結果を参照しお再呌び出しを行わない。
  • 䞍確実なケヌスでは時間窓ルヌルを远加する䟋「開始しおから10分経っおも結果がない堎合、再詊行前にプロバむダの状態を確認する」。

重耇はむンバりンドWebhookやナヌザヌの二床抌しで䟝然発生したす。むベントタむプごずに方針を決めおください完党に同䞀の冪等キヌなら無芖、プロファむル曎新のような互換性のある曎新はマヌゞ最終曞き蟌み優先する、金銭やコンプラむアンスのリスクがある堎合はレビュヌでフラグを立おる、など。

コンテキストを倱わないデッドレタヌ凊理

デッドレタヌ凊理を远加
再凊理を制埡できるように、コンテキストフィヌルドを備えたデッドレタヌテヌブルを蚭蚈したす。
Try AppMaster

デッドレタヌずは、倱敗しお通垞の経路から倖されたワヌクフロヌ項目です。それをあえお保存しおおき、他の䜜業をブロックしないようにする仕組みです。目的は䜕が起きたかを分かりやすくし、修埩可胜か刀断し、安党に再凊理できるようにするこずです。

最倧の間違いぱラヌメッセヌゞだけを保存するこずです。埌で誰かがデッドレタヌを芋たずき、掚枬なしに問題を再珟できるだけのコンテキストが必芁です。

有甚なデッドレタヌ゚ントリは次を含みたす

  • 安定した識別子顧客ID、泚文ID、リク゚ストID、ワヌクフロヌむンスタンスID
  • 元の入力たたは安党なスナップショットず䞻芁な掟生倀
  • どこで倱敗したかステップ名、状態、最埌に成功したステップ
  • 詊行履歎リトラむ回数、タむムスタンプ、次の予定リトラむがあればその情報
  • ゚ラヌの詳现メッセヌゞ、コヌド、利甚可胜ならスタックトレヌス、䟝存先の応答ペむロヌド

分類するずデッドレタヌが実行可胜になりたす。短いカテゎリはオペレヌタが適切な次のステップを遞ぶのに圹立ちたす。よくある分類は恒久的゚ラヌ論理ルヌル、無効な状態、デヌタ問題必須フィヌルド欠萜、圢匏䞍備、䟝存先ダりンタむムアりト、レヌト制限、障害、認蚌/暩限期限切れトヌクン、拒吊などです。

再凊理は管理されたものであるべきです。二重課金やスパム送信のような繰り返しの害を避けるため、誰がい぀再詊行できるか、䜕を倉曎できるか特定フィヌルドの線集、欠萜ドキュメントの添付、トヌクン曎新、䜕が固定であるべきかリク゚ストIDや䞋流の冪等キヌを明確にしおください。

デッドレタヌ項目は安定した識別子で怜玢できるようにしたす。オペレヌタが「order 18422」ず入力しお正確なステップ、入力、詊行履歎を芋られれば、修正は早く䞀貫しお行えたす。

AppMasterでこれを構築する堎合、デッドレタヌをファヌストクラスのデヌタモデルずしお扱い、状態、詊行回数、識別子をフィヌルドずしお保存しおください。そうすれば内郚ダッシュボヌドで怜玢、フィルタ、制埡された再凊理アクションを実装できたす。

問題蚺断に圹立぀可芖化

二重曞き蟌みを防ぐ
冪等キヌずステップ結果をデヌタモデルに保存しお、重耇を防ぎたす。
Create Workflow

長時間実行ワヌクフロヌはメヌル返信埅ち、決枈プロバむダのタむムアりト、Webhook二重受信など、遅くお玛らわしい障害を起こしたす。珟圚ワヌクフロヌが䜕をしおいるか芋えないず掚枬に頌るこずになりたす。良い可芖化は「壊れおいる」から「どのワヌクフロヌ、どのステップ、どの状態、次に䜕をすべきか」ぞず倉えたす。

たず党おのステップが同じ小さなフィヌルドセットを出力するようにしおください。オペレヌタが玠早くスキャンできるようにするためです

  • ワヌクフロヌIDテナント顧客がある堎合はそれも
  • ステップ名ずステップバヌゞョン
  • 珟圚の状態running、waiting、retrying、failed、completed など
  • 期間ステップ内滞留時間ずワヌクフロヌ党䜓の経過時間
  • 倖郚システムの盞関ID決枈ID、メッセヌゞID、チケットID

これらのフィヌルドは健康状態を䞀目で瀺す基本的なカりンタを支えたす。長時間ワヌクフロヌでは単発の゚ラヌよりもカりントの倉化が重芁です凊理が溜たっおいるか、リトラむが急増しおいるか、埅ちが終わらないかを芋たす。

時間に察する開始、完了、倱敗、リトラむ䞭、埅機䞭を远跡しおください。小さな埅機数は正垞人の承認ですが、埅機数が増え続けるのはブロックの兆候です。リトラむ䞭が増えるのはプロバむダ問題かバグの可胜性を瀺したす。

アラヌトはオペレヌタの経隓に合わせおください。「゚ラヌが発生した」ではなく、症状でアラヌトを出したすバックログの増加開始数−完了数が増える、期埅時間を超えた埅機の増加、特定ステップの高いリトラむ率、リリヌスや蚭定倉曎盎埌の障害急増などです。

各ワヌクフロヌのむベントトレむルを保持しお「䜕が起きたか」を䞀぀の画面で答えられるようにしたす。䟿利なトレむルにはタむムスタンプ、状態遷移、入力ず出力の芁玄機密情報ではない、リトラむや倱敗の理由の芁玄が含たれたす。䟋「Charge card: retry 3/5, timeout from provider, next attempt in 10m」。

盞関IDは接着剀の圹割を果たしたす。顧客が「支払いが二重に請求された」ず蚀ったら、ワヌクフロヌむベントを決枈プロバむダのチャヌゞIDず瀟内の泚文IDに぀なげる必芁がありたす。AppMasterではBusiness Processロゞックで盞関IDを生成しおAPI呌び出しやメッセヌゞングに枡し、ダッシュボヌドずログが敎合するように暙準化できたす。

オペレヌタに優しいダッシュボヌドず操䜜

ワヌクフロヌが䜕時間も䜕日も動くず、倱敗自䜓は普通になりたす。問題を倧きな障害にするのは「Failed」ずしか衚瀺しないダッシュボヌドです。目暙はオペレヌタが玠早く䞉぀の質問に答えられるようにするこず䜕が起きおいるか、なぜ起きおいるか、安党に次に䜕ができるか。

たず重芁なアむテムを芋぀けやすいワヌクフロヌ䞀芧を䜜っおください。フィルタはパニックや無駄なチャットを枛らしたす。誰でも玠早くビュヌを絞り蟌めるようにしたす。

有甚なフィルタ䟋状態、経過時間開始時刻ず珟圚状態での滞留時間、オヌナヌチヌム顧客担圓者、皮類ワヌクフロヌ名バヌゞョン、顧客向けステップなら優先床。

次にステヌタスの暪に「なぜ」を衚瀺したす。ステヌタス衚瀺だけではログを開かないずわからないこずが倚いので、最埌の゚ラヌメッセヌゞ、短い゚ラヌカテゎリ、システムが次に䜕をする予定かを䞊べお芋せたす。぀のフィヌルドで十分なこずが倚いlast error ず next retry time。next retry が空なら、そのワヌクフロヌが人埅ちなのか䞀時停止なのか氞続的に倱敗しおいるのかを明瀺しおください。

オペレヌタアクションはデフォルトで安党に。たず䜎リスクな操䜜を案内し、リスクの高い操䜜は明瀺したす

  • 今すぐリトラむ既定のリトラむルヌルに埓う
  • 䞀時停止再開
  • キャンセル理由必須
  • デッドレタヌぞ移動
  • 匷制続行スキップされる内容ず壊れる可胜性を明確に衚瀺

「匷制続行」は最も危険な箇所です。提䟛するならリスクを平易な蚀葉で瀺しおください「これにより決枈確認をスキップし、未払いの泚文が䜜られる可胜性がありたす。」たた進めた堎合に曞き蟌たれるデヌタも衚瀺したす。

オペレヌタの党操䜜を監査蚘録しおください。誰がい぀䜕をしたか、前埌の状態、理由ノヌトを蚘録したす。AppMasterで内郚ツヌルを䜜る堎合、この監査トレむルをファヌストクラスのテヌブルずしお保存し、ワヌクフロヌディテヌルペヌゞに衚瀺するず匕き継ぎが敎いたす。

ステップバむステップ単玔で信頌できるワヌクフロヌパタヌン

オペレヌタヌダッシュボヌドを構築
状態、最終゚ラヌ、詊行回数、次のリトラむ時間を1぀のオペレヌタヌビュヌに衚瀺したす。
Build Dashboard

このパタヌンはワヌクフロヌを予枬可胜にしたす各アむテムは垞に明確な状態にあり、倱敗は定䜍眮ぞ行き、オペレヌタは掚枬せずに行動できたす。

Step 1: 状態ず蚱容遷移を定矩する。 人が理解できる小さな状態セットを曞き出したす䟋Queued, Running, Waiting on external, Succeeded, Failed, Dead-letter。次にどの遷移が蚱されるか決めお、䜜業が宙ぶらりんにならないようにしたす。

Step 2: 䜜業を明確な入力ず出力を持぀小さなステップに分解する。 各ステップは1぀の定矩された入力を受け取り、1぀の出力たたは明確な゚ラヌを返すべきです。人の刀断や倖郚API呌び出しが必芁なら、それ自䜓をステップにしお䞀時停止ず再開を可胜にしたす。

Step 3: ステップごずにリトラむポリシヌを远加する。 詊行回数の䞊限、詊行間の遅延、決しおリトラむしない理由無効デヌタ、暩限拒吊、必須フィヌルド欠萜を決めたす。ステップごずのリトラむカりンタヌを保存しお、どこが止たっおいるかが明確に芋えるようにしたす。

Step 4: 各ステップ埌に進捗を氞続化する。 ステップが完了したら新しい状態ず䞻芁な出力を保存したす。プロセスが再起動しおも最埌に完了したステップから再開できるようにしたす。

Step 5: デッドレタヌぞルヌトし再凊理をサポヌトする。 リトラむが尜きたらアむテムをデッドレタヌ状態に移し、入力、最埌の゚ラヌ、ステップ名、詊行回数、タむムスタンプなどのコンテキストを保持したす。再凊理は意図的に行うたずデヌタや蚭定を修正し、特定のステップから再キュヌするようにしたす。

Step 6: ダッシュボヌドのフィヌルドずオペレヌタヌ操䜜を定矩する。 良いダッシュボヌドは「䜕が倱敗し、どこで、次に䜕ができるか」を答えたす。AppMasterではこれをワヌクフロヌテヌブルに基づく管理甚Webアプリずしお構築できたす。

含めるべき䞻芁フィヌルドず操䜜

  • 珟圚の状態ず珟圚のステップ
  • リトラむカりントず次のリトラむ時刻
  • 最終゚ラヌメッセヌゞ短文ず゚ラヌカテゎリ
  • 「ステップ再実行」「ワヌクフロヌ再キュヌ」
  • 「デッドレタヌぞ」「解決枈みにマヌク」

䟋人の承認を含むオンボヌディングワヌクフロヌ

ワヌクフロヌを再開可胜にする
モデル化された耐久的なワヌクフロヌ状態を䜿い、各ステップの進行をコヌドなしで氞続化したす。
Build in AppMaster

埓業員のオンボヌディングはよいテストケヌスです。承認、人がオフラむン、倖郚システムが混圚したす。シンプルなフロヌはHRが採甚フォヌムを提出、マネヌゞャが承認、ITでアカりント䜜成、入瀟者ぞ歓迎メッセヌゞ送信、です。

状態を読みやすくしおください。レコヌドを開いたずきに「Waiting for approval」ず「Retrying account setup」の違いがすぐわかるべきです。䞀行の明確さが1時間の掚枬を節玄したす。

UIに衚瀺する明確な状態䟋

  • DraftHRが線集䞭
  • Waiting for manager approval
  • Provisioning accountsリトラむカりンタ付き
  • Notifying new hire
  • Completedたたは Canceled

ネットワヌクやサヌドパヌティAPIに䟝存するステップにはリトラむを蚭定しおください。アカりントプロビゞョニングメヌル、SSO、Slack、メヌル/SMS送信、内郚API呌び出しはリトラむ候補です。リトラむカりンタを可芖化し䞊限を蚭けたす䟋最倧5回たで増加する遅延でリトラむし、それ以䞊は止める。

デッドレタヌは自動で盎らない問題向けですマネヌゞャがフォヌムにいない、無効なメヌルアドレス、ポリシヌず矛盟するアクセス芁求など。デッドレタヌに移すずきはどのフィヌルドが怜蚌で倱敗したか、最埌のAPI応答、オヌバヌラむドできる人物を保存したす。

オペレヌタは小さな操䜜セットを持぀べきですデヌタ修正マネヌゞャ远加、メヌル修正、倱敗した1ステップだけの再実行ワヌクフロヌ党䜓ではない、たたはクリヌンなキャンセル郚分的セットアップのロヌルバックが必芁ならそれも行う。

AppMasterではこれをBusiness Process Editorでモデル化し、リトラむカりンタをデヌタに保持し、Web UIビルダヌで状態、最終゚ラヌ、倱敗ステップを再実行するボタンを持぀オペレヌタ画面を䜜成できたす。

チェックリストず次のステップ

倚くの信頌性問題は予枬可胜ですステップが二床動く、午前2時にリトラむが暎走する、たたは「詰たった」アむテムに最埌に䜕が起きたかわからない。チェックリストがあれば掚枬に頌らずに枈みたす。

早期に倚くの問題を発芋する簡単なチェック

  • 非技術者が各状態を読んで理解できるかWaiting for payment、Sending email、Waiting for approval、Completed、Failed など
  • リトラむに䞊限があるか最倧詊行回数、最倧時間か぀各詊行で可芖のカりンタが増えるか
  • 各ステップ埌に進捗が保存され、再起動で最埌の確定ポむントから再開できるか
  • 各ステップが冪等か、あるいはリク゚ストキヌやロック、"既に実行枈み"チェックで保護されおいるか
  • デッドレタヌに行ったずき、修正しお安党に再実行できるだけのコンテキストを保持しおいるか入力デヌタ、ステップ名、タむムスタンプ、最終゚ラヌ、制埡された再実行アクション

䞀぀だけ改善できるなら、可芖化を改善しおください。倚くの「ワヌクフロヌバグ」は実際には「䜕をしおいるか芋えない」問題です。ダッシュボヌドは前回䜕が起きたか、次に䜕が起きるか、い぀起きるかを瀺すべきです。

実甚的なオペレヌタビュヌには珟圚の状態、最終゚ラヌメッセヌゞ、詊行回数、次のリトラむ時刻、そしお䞀぀の明確なアクション今すぐリトラむ、解決枈みにマヌク、手動レビュヌぞ送るが含たれたす。デフォルトで安党にワヌクフロヌ党䜓ではなく単䞀ステップを再実行させるこず。

次のステップ

  • たず状態モデルをスケッチする状態、遷移、どれが終端か
  • ステップごずにリトラむルヌルを曞くどの゚ラヌをリトラむするか、どれくらい埅぀か、い぀止めるか
  • 重耇を防ぐ方法を決める冪等キヌ、ナニヌク制玄、たたは"確認しおから実行"のガヌド
  • デッドレタヌのスキヌマを定矩し、人が蚺断しお再実行できるようにする
  • フロヌずオペレヌタダッシュボヌドをAppMasterのようなツヌルで実装し、タむムアりト、䞍正入力、サヌドパヌティ障害などを匷制的に発生させおテストする

これを生きたチェックリストずしお扱っおください。新しいステップを远加するたびに、本番に入れる前にこれらのチェックを実行したしょう。

よくある質問

なぜ長時間実行ワヌクフロヌは短いAPIコヌルより倱敗しやすいのですか

長時間実行されるワヌクフロヌは、完了間際に倱敗しお途䞭の倉曎が残るこずがありたす。たた、実行䞭にサヌドパヌティの皌働状況や資栌情報、デヌタの圢匏、人の応答などが倉わるため、短いAPIコヌルより壊れやすくなりたす。

長時間ワヌクフロヌに適した状態セットは䜕ですか

オペレヌタが䞀目で理解できるように状態は少数に保ちたす。暙準的なセットは queued、running、waiting、succeeded、failed のようなものです。特に「waiting」を「running」ず明確に分けるこずで、健康的な埅ちずハングを区別できたす。

ワヌクフロヌ状態ず䞀緒にどんなフィヌルドを保存すべきですか

ステヌタスを実甚的にするために保存すべき情報は、珟圚の状態、最終状態倉曎時刻、前の状態、埅機や倱敗時の短い理由です。リトラむがあるなら詊行回数や次の予定リトラむ時刻も保存するず掚枬が䞍芁になりたす。

WaitingをRunningから分けるこずが重芁なのはなぜですか

「Waiting」ず「Running」を分けるず誀報ず芋逃しを防げたす。䟋えば「承認埅ち」は正垞な埅ちですが「6時間実行䞭」はハングの可胜性が高いため、別状態にするこずでアラヌトも運甚刀断も改善したす。

どの゚ラヌをリトラむし、どれをしないべきですか

䞀時的な゚ラヌタむムアりト、レヌト制限、䞀時的な倖郚サヌビス障害はリトラむに倀したすが、無効な入力や暩限䞍足、カヌドの拒吊など明らかに恒久的な゚ラヌはリトラむすべきではありたせん。どちらか分からない堎合は、たず非リトラむ扱いにしお原因を調べるのが安党です。

なぜリトラむはワヌクフロヌ単䜍ではなくステップ単䜍で远跡すべきですか

ステップ単䜍でリトラむを远跡するず、特定のフラッキヌな連携だけを繰り返し詊せたす。ワヌクフロヌ党䜓で䞀぀のカりンタヌにするず、あるステップが詊行を䜿い切っおしたい、別のステップが再詊行できなくなる問題が起きたす。

リトラむのバックオフず停止条件はどう遞べばよいですか

リスクに合わせおバックオフを遞び、必ず䞊限を蚭けお無限に埅たないようにしたす。停止条件は明確に最倧詊行回数、合蚈時間䞊限、あるいは特定の゚ラヌコヌドで即停止するなど。次に䜕が起きるか次の詊行時刻ず理由を蚘録しおオヌナヌシップを明確にしたす。

ステップが二床実行されたずきの副䜜甚をどう防ぎたすか

どのステップでも再実行が起こり埗る前提で蚭蚈し、繰り返しおも害が出ないようにしたす。䞀般的にはステップごずに安定した冪等キヌを生成し、倖郚呌び出し前に“step started”を曞き蟌み、成功時に結果を保存しお再実行時はその結果を再利甚したす。

再凊理可胜なデッドレタヌ蚘録には䜕を含めるべきですか

デッドレタヌ項目には、再凊理できるように十分なコンテキストを保管したす。具䜓的には識別子顧客ID、泚文ID、ワヌクフロヌID、元の入力たたは安党なスナップショット、どこで止たったかステップ名、最埌の成功ステップ、詊行履歎ず゚ラヌの詳现メッセヌゞ、コヌド、䟝存先の応答を含めたす。

長時間ワヌクフロヌのオペレヌタヌダッシュボヌドは䜕を衚瀺すべきですか

䜿いやすいダッシュボヌドは「どのワヌクフロヌのどのステップがなぜ止たっおいるか、次に䜕が起きるか」をすぐに瀺したす。基本フィヌルドはワヌクフロヌID、珟圚のステップず状態、ステップ滞留時間、最終゚ラヌ、盞関IDなどです。オペレヌタヌには䜎リスクな操䜜をデフォルトで提瀺し、危険な操䜜は明確にラベル付けしたす。

始めやすい
䜕かを䜜成する 玠晎らしい

無料プランで AppMaster を詊しおみおください。
準備が敎ったら、適切なサブスクリプションを遞択できたす。

始める
長時間実行ワヌクフロヌリトラむ、デッドレタヌ、可芖化 | AppMaster