workflow-orchestration-patterns について
workflow-orchestration-patternsは、分散システムの信頼性あるワークフロー設計を扱うTemporal向けガイドです。アーキテクチャの選択、耐障害性、ワークフローとアクティビティの設計、運用方法を解説します。
主な機能
- 01Temporalワークフローアーキテクチャの指針
- 02復旧と耐障害性のパターン
- 03ワークフローとアクティビティの設計手法
- 04よくある落とし穴と制約
- 05監視とスケーリングの考慮事項
活用シーン
- 01長時間実行される業務プロセスの設計
- 02複数段階の分散処理の復旧
- 03タイムアウトとエスカレーションを伴う承認フローの構築
- 04CI/CDやインフラのワークフロー設計
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wshobson/ agents --skill workflow-orchestration-patternsインストール後、Claude Code で/workflow-orchestration-patternsを入力して読み込まれたか確認します。
同梱ファイルreferences/details.md
詳細
ワークフローオーケストレーションパターン
Temporal を使用したワークフローオーケストレーションアーキテクチャをマスターし、信頼性の高い分散システムを構築するための基本的な設計判断、レジリエンスパターン、ベストプラクティスを網羅します。
ワークフローオーケストレーションをいつ使用するか
理想的なユースケース (出典: docs.temporal.io)
- マシン/サービス/データベースにまたがるマルチステッププロセス
- オール・オア・ナッシングのセマンティクスを必要とする分散トランザクション
- 自動的な状態永続化を伴う長時間実行ワークフロー(数時間から数年間)
- 最後に成功したステップから再開する必要がある障害復旧
- ビジネスプロセス: 予約、注文、キャンペーン、承認
- エンティティライフサイクル管理: 在庫追跡、アカウント管理、カートワークフロー
- インフラストラクチャ自動化: CI/CD パイプライン、プロビジョニング、デプロイメント
- タイムアウトとエスカレーションを必要とする Human-in-the-loop システム
使用すべきでない場合
- 単純な CRUD 操作(直接 API 呼び出しを使用)
- 純粋なデータ処理パイプライン(Airflow、バッチ処理を使用)
- ステートレスなリクエスト/レスポンス(標準 API を使用)
- リアルタイムストリーミング(Kafka、イベントプロセッサを使用)
詳細なパターンと実例
詳細なパターンのドキュメントは references/details.md にあります。上記のナビゲーション階層では不十分な場合は、そのファイルをお読みください。
ベストプラクティス
ワークフロー設計
- ワークフローを集中的に保つ - ワークフローごとに単一の責任
- 小さなワークフロー - スケーラビリティのために子ワークフローを使用
- 明確な境界 - ワークフローがオーケストレーションし、アクティビティが実行する
- ローカルでテスト - タイムスキップテスト環境を使用
アクティビティ設計
- 冪等な操作 - 再試行しても安全
- 短命 - 数時間ではなく、数秒から数分
- タイムアウト設定 - 常にタイムアウトを設定する
- 長時間タスクのためのハートビート - 進捗を報告する
- エラー処理 - 再試行可能と再試行不可能を区別する
よくある落とし穴
ワークフロー違反:
workflow.now()の代わりにdatetime.now()を使用する- ワークフローコード内でのスレッドまたは非同期操作
- ワークフローから直接外部 API を呼び出す
- ワークフロー内の非決定的なロジック
アクティビティの間違い:
- 非冪等な操作(再試行を処理できない)
- タイムアウトの欠如(アクティビティが永遠に実行される)
- エラー分類なし(検証エラーを再試行する)
- ペイロード制限の無視(引数ごとに 2MB)
運用上の考慮事項
モニタリング:
- ワークフローの実行時間
- アクティビティの失敗率
- 再試行回数とバックオフ
- 保留中のワークフロー数
スケーラビリティ:
- ワーカーによる水平スケーリング
- タスクキューのパーティショニング
- 子ワークフローによる分解
- 適切な場合のアクティビティのバッチ処理
追加リソース
公式ドキュメント:
- Temporal コアコンセプト: docs.temporal.io/workflows
- ワークフローパターン: docs.temporal.io/evaluate/use-cases-design-patterns
- ベストプラクティス: docs.temporal.io/develop/best-practices
- Saga パターン: temporal.io/blog/saga-pattern-made-easy
主要な原則:
- ワークフロー = オーケストレーション、アクティビティ = 外部呼び出し
- 決定性はワークフローにとって譲れない
- 冪等性はアクティビティにとって極めて重要
- 状態の保存は自動的
- 障害と復旧のために設計する
コメント
Markdown 対応