TL

Cloud Service

Workflows

複数の Google Cloud サービスや HTTP API を YAML/JSON の手順書で順序立てて連携させる、サーバーレスなオーケストレーション基盤。AWS の Step Functions に相当。

中級運用上の優秀性信頼性
最終更新: 2026-06-14公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.サービス呼び出しを宣言的な手順書でオーケストレーションするサーバーレス基盤。
  • 2.分岐・ループ・リトライ・並列・待機を組み込み、状態管理はマネージドに任せる。
  • 3.実行ステップ数に応じた従量課金で、待機中はリソースを消費しない。

解決する課題

複数のサービスを「呼んで、結果を見て、次を呼ぶ」という連携処理を、アプリ側のコードや常駐サーバーで書くと、状態管理・リトライ・エラー処理が複雑になりがちです。Workflows はこの一連の流れを宣言的な手順書として外に切り出し、実行状態の管理をマネージドに任せます。

  • 複数の API 呼び出しを 順番・分岐・条件に従ってつなぎたいが、状態管理を自前で書きたくない
  • 一時的な失敗に対する リトライやバックオフを、各サービスごとに実装せず共通化したい
  • 連携を 常駐サーバーなしのサーバーレスで動かし、待機中はコストを払いたくない
  • 処理の流れを 可視化し、どのステップで失敗したかを追跡したい
  • 長時間かかる処理の 完了待ち(ポーリングや一定時間の待機) を低コストに実現したい

主要概念と用語

  • ワークフロー(Workflow): 一連の手順を定義したリソース。YAML または JSON で記述する。デプロイすると不変のリビジョンとして保存される
  • ステップ(Step): 手順を構成する最小単位。API 呼び出し、代入、条件分岐、待機などを表す
  • 実行(Execution): デプロイ済みワークフローを起動して走らせた 1 回分のインスタンス。実行ごとに ID と状態を持つ
  • コネクタ(Connector): Google Cloud サービス(Pub/Sub、Cloud Storage、BigQuery など)を呼び出すための組み込み部品。リトライや長時間処理の完了待ちを内包する
  • 式(Expression)と変数: 二重波かっこの記法でデータを参照・加工し、ステップ間で受け渡す
  • HTTP リクエストステップ: 任意の外部 API や Cloud Run / Cloud Run functions を HTTP で呼び出すステップ。認証情報の付与にも対応する
  • コールバック(Callback): 実行を一時停止し、外部からのコールバック URL への通知を待ってから再開する仕組み。人手の承認や非同期完了の待機に使う
  • サブワークフロー: 手順を関数のように切り出して再利用する単位

仕様・制限・クォータ

  • 記述言語は YAML / JSON ベースの宣言的構文。分岐(switch)、ループ(for)、並列(parallel)、リトライ、例外処理(try/except)、待機(sleep)などを表現できる
  • 状態はサービス側が保持するため、アプリ側でジョブの進行状況を管理する必要がない
  • 1 実行の 最大実行時間は長時間(年単位)に対応し、待機やコールバックを挟む長期プロセスも組める。一方で同期 HTTP 呼び出し 1 回あたりのタイムアウトには上限がある
  • 1 実行で扱える ステップ数・変数のメモリサイズ・並列分岐の同時実行数などに上限(クォータ)があり、これらは引き上げ申請が可能なものもある
  • ワークフローは リージョン単位のリソースとして作成・実行される
  • 具体的な上限値やタイムアウト秒数、クォータの数値は変動するため、最新は公式ドキュメントで確認すること

内部の仕組み

ワークフローを起動すると、Workflows のマネージドエンジンが手順書を上から評価し、各ステップ(API 呼び出し・代入・分岐など)を順に実行します。実行中の 変数の値・現在位置・リトライ状態などはサービス側に永続化されるため、待機やコールバックで止まっている間も状態が失われません。

  • HTTP リクエストステップや各種コネクタを通じて外部サービスを呼び出し、レスポンスを変数に取り込んで次のステップへ渡す
  • sleep ステップで待機している間は実質的に処理リソースを消費せず、長時間のポーリングや遅延を低コストに実現できる
  • 失敗時は try/except とリトライポリシーでハンドリングでき、指数バックオフなどの再試行戦略を宣言的に指定する
  • コネクタは内部で対象サービスの 長時間オペレーションの完了待ち(ポーリング) を肩代わりするため、利用者は完了結果だけを受け取れる
重い処理は外に出す

Workflows はあくまで「呼び出しの順序・条件・状態」を司るオーケストレータです。重い計算やデータ変換そのものはワークフロー内に書くのではなく、Cloud Run / Cloud Run functions などのコンピュート側に処理を委ね、Workflows はその呼び出しと結果のハンドリングに専念させると、責務が明確になり保守しやすくなります。

設計パターン / ベストプラクティス

  • サービスオーケストレーション: 複数のマイクロサービスや API を順序立てて呼び出し、結果を集約する中心役として使う
  • 疎結合との使い分け: イベント発生をきっかけに非同期で広く配信したいなら Pub/Sub や Eventarc、明確な手順と状態を持つ一連のフローなら Workflows、と役割を分ける(オーケストレーション対コレオグラフィー)
  • 冪等性の確保: リトライにより同じステップが再実行されうるため、副作用を伴う呼び出しは冪等に設計する
  • エラー処理の集中化: 各ステップのリトライ/例外処理をワークフロー側にまとめ、個々のサービス実装をシンプルに保つ
  • 長時間処理はコールバックで待つ: 人手の承認や外部の非同期完了は、ポーリングのループより コールバックで待機させるとシンプルで低コスト
  • トリガーの組み合わせ: 定期実行は Cloud Scheduler、イベント起動は Eventarc から Workflows を呼び出す形でつなぐ

運用・監視

  • 各実行は 状態(成功・失敗・実行中・キャンセル)と入出力、ステップごとの経過を保持し、コンソールや CLI で追跡できる
  • Cloud Logging に実行ログが出力され、どのステップで何が起きたかを確認できる。ステップログの出力レベルは調整可能
  • Cloud Monitoring で実行回数・失敗率・所要時間などのメトリクスを監視し、アラートを設定する
  • 失敗した実行は入力と発生箇所を確認して原因を切り分ける。リトライ設定が意図通りか、認証や権限エラーでないかを点検する
  • ワークフローは リビジョン管理され、デプロイ済みの定義は不変なので、変更履歴の追跡やロールバックがしやすい

コスト

Workflows は実行した ステップ数に対する従量課金が基本で、待機(sleep)中はステップを消費しません。常駐サーバーが不要なため、起動していない間の固定費が発生しないのが特徴です。

費用要素課金の考え方コスト最適化のポイント
内部ステップワークフロー内で実行されたステップ数に対し、無料枠後に従量課金不要な代入や分岐を減らし手順を簡潔に保つ
外部ステップ外部 API や HTTP 呼び出しを伴うステップは別単価で課金されることがある呼び出し回数を集約しリトライの暴発を防ぐ
待機(sleep)待機中はステップを消費しないため低コストポーリングのループよりコールバックや sleep を活用
呼び出し先サービスCloud Run など宛先サービスの実行費は別途発生宛先処理を軽量化し冪等にして再実行を減らす

セキュリティ

  • 各ワークフローには サービスアカウントを割り当て、そのアカウントの権限でステップが実行される。最小権限の IAM ロールのみを付与する
  • HTTP リクエストステップでは、Google Cloud の宛先に対して OAuth トークンや OIDC トークンを自動付与し、認証付きで安全に呼び出せる
  • ワークフローの起動には呼び出し側に適切なロール(例: roles/workflows.invoker)が必要で、編集や管理は別のロールで分離する
  • 機密情報をワークフロー定義に直接埋め込まず、Secret Manager 等から取得する設計にする
  • 保存データは暗号化され、要件に応じて CMEK(顧客管理鍵) での保護にも対応する
アンチパターン

ワークフローのサービスアカウントに**広すぎる権限(例: プロジェクトの編集者ロール)**を付与するのは危険です。各ステップはそのアカウントの権限で動くため、定義が侵害された場合の被害が拡大します。呼び出すサービスごとに必要なロールだけを付け、機密値はワークフロー定義に直書きせず Secret Manager 経由で参照してください。

Well-Architected の観点

  • 運用上の優秀性(operational excellence): 連携手順を宣言的な手順書として外部化し、実行状態・ステップ履歴・ログを可視化することで、障害時の原因特定(MTTR 短縮)と変更管理が容易になる。リビジョン管理で変更を追跡できる
  • 信頼性(reliability): リトライ・指数バックオフ・例外処理を宣言的に組み込み、一時障害に強い連携を実現する。状態がマネージドに永続化されるため、長時間プロセスでも進行状況を失わない。冪等な宛先設計と組み合わせて再実行に耐えるようにする

試験で問われるポイント

頻出
  • AWS Step Functions に相当する、サーバーレスなサービスオーケストレーション基盤である点
  • オーケストレーション(Workflows)とコレオグラフィー(Pub/Sub・Eventarc)の使い分け。明確な手順と状態を持つ一連のフローには Workflows、疎結合なイベント配信には Pub/Sub/Eventarc
  • 手順書は YAML/JSON で宣言的に記述し、分岐・ループ・並列・リトライ・例外処理・待機を表現できること
  • コネクタが長時間オペレーションの完了待ちを肩代わりし、sleep やコールバックで待機中はコストを抑えられること
  • 各ステップはワークフローに割り当てた サービスアカウントの権限で実行されるため、最小権限が重要であること
  • トリガーは Cloud Scheduler(定期)や Eventarc(イベント) から呼び出す形で組み合わせること

関連サービス・比較

観点Workflows(GCP)AWS Step Functions
位置づけサーバーレスなオーケストレーションサーバーレスなオーケストレーション
定義の記述YAML / JSON の宣言的構文Amazon States Language(JSON)
状態管理サービス側が永続化サービス側が永続化
サービス連携コネクタと HTTP 呼び出しサービス統合と HTTP 呼び出し
長時間処理sleep / コールバックで待機待機状態・コールバックトークン
イベント起動Eventarc などから呼び出しEventBridge などから呼び出し
定期実行(cron)Cloud Scheduler が担当EventBridge Scheduler が担当
連携先サービスとの役割分担

Workflows は「いつ・どの順で・どう呼ぶか」を司るだけで、起動のきっかけや重い処理そのものは別サービスが担います。定期起動は Cloud Scheduler、イベント起動は Eventarc、実処理は Cloud Run / Cloud Run functions、というように役割を分けて組み合わせるのが基本構成です。

ハンズオン / CLI例

# 1) ワークフロー定義ファイル(workflow.yaml)を用意する想定
#    例: 公開 API を呼び、結果を返すだけの最小ワークフロー
#
#    main:
#      steps:
#        - callApi:
#            call: http.get
#            args:
#              url: https://example.com/api/status
#            result: apiResult
#        - returnResult:
#            return: ${apiResult.body}

# 2) ワークフローをデプロイ(専用サービスアカウントを指定)
gcloud workflows deploy my-workflow \
  --location=asia-northeast1 \
  --source=workflow.yaml \
  --service-account=workflow-sa@PROJECT_ID.iam.gserviceaccount.com

# 3) ワークフローを実行(入力データを渡す場合は --data を使用)
gcloud workflows run my-workflow \
  --location=asia-northeast1 \
  --data='{"target":"status"}'

# 4) 実行状況・履歴の確認
gcloud workflows executions list my-workflow --location=asia-northeast1
gcloud workflows executions describe EXECUTION_ID \
  --workflow=my-workflow --location=asia-northeast1

Google Cloud Service

Workflowsを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

アプリ統合

比較で見る軸

クラウド: Google Cloud / カテゴリ: アプリ統合 / 難易度: intermediate

導入後に効く点

分岐・ループ・リトライ・並列・待機を組み込み、状態管理はマネージドに任せる。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
アプリ統合
難易度
intermediate
関連資格
設計柱
operational / reliability

判断チェックリスト

  • 自社の用途が「アプリ統合 / operational」に近いか確認する。
  • 強みである「サービス呼び出しを宣言的な手順書でオーケストレーションするサーバーレス基盤。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

アプリ統合operationalreliability