ワークフローを理解する

ワークフローは、フルマネージドのオーケストレーション プラットフォームで、定義した順序(ワークフロー)でサービスを実行します。これらのワークフローでは、Cloud Run や Cloud Functions でホストされているカスタム サービス、Cloud Vision AI や BigQuery などの Google Cloud サービス、任意の HTTP ベースの API を含むサービスを組み合わせることができます。

ソリューションにワークフローを組み込むことで、サービスの依存関係をエンドツーエンドで明示的にモニタリングできます。アプリケーション、オペレーション、またはビジネス プロセスを指定するワークフローは、プロセスの信頼できる情報源または正規のナラティブを提供します。

ワークフローはサーバーレスで、必要に応じてスケールアップします。また、アイドル状態の間に料金が発生することはありません。ワークフローにコードやライブラリの依存関係は含まれていないため、セキュリティ パッチは必要ありません。ワークフローをデプロイすると、メンテナンスを行わずに確実に実行できます。ワークフローでは、ステータスの保持、再試行、ポーリング、最大 1 年間の待機が可能です。

次の図は、ワークフローを使用してサービスをオーケストレートする例を示しています。

ワークフローを使用したサービス オーケストレーション

主なユースケース

ワークフローはさまざまなユースケースに対応しています。以下に例を示します。

サービス オーケストレーション サービスを組み合わせてソリューションを作成する - 複数のシステム間で一連のオペレーションを実行し、すべてのオペレーションが完了するまで待ちます。イベント ドリブンの場合もあります。例:
  • 新しくアップロードされたファイルを Cloud Vision AI に送信して、タグを Firestore に書き込む
  • Cloud Functions の関数を呼び出し、結果を Cloud Run サービスに送信する
バッチジョブ 複数のアイテムへの操作 - 一連のアイテムまたはバッチデータに対してオペレーションを実行します。多くの場合、スケジュール設定されています。例:
  • 毎日お客様向けメールを送信する
  • BigQuery または機械学習ジョブの準備と実行
  • レポートを生成する
ビジネス プロセス 基幹業務のワークフローを自動化する - 条件、アクション、人間参加型イベントなど、ビジネス プロセスのステップをエンコードします。例:
  • リクエストからフルフィルメントまでの注文を追跡する
  • 承認が必要なリソース リクエストを自動化する
自動化 サービス オペレーションのマネージド実行 - Google Cloud の一連のサービス オペレーションを簡単にスクリプト化できます。例:
  • 新しいテナント プロジェクトまたはインフラストラクチャをプロビジョニングする
  • スケジュールやイベント トリガーによってリソースを停止する

基本コンセプト

ワークフローは、Workflows 構文を使用して記述された一連のステップで構成され、YAML または JSON のいずれかで記述できます。これがワークフローの定義です。Workflows 構文の詳細については、構文リファレンスをご覧ください。

ワークフローを作成するとデプロイされ、ワークフローを実行する準備が整います。Google Cloud Console または gcloud コマンドライン ツールを使用してワークフローの作成と更新を行う方法を確認します。

実行とは、ワークフローの定義に含まれるロジックを 1 回だけ実行することです。実行されなかったワークフローは課金されません。ワークフローのそれぞれの実行はすべて独立しています。また、このプロダクトの迅速なスケーリングにより、多数の同時実行が可能です。 クライアント ライブラリ、Cloud Console、gcloud コマンドライン ツールのいずれかを使用するか、Workflows REST API にリクエストを送信して、ワークフローを実行できます。詳細については、ワークフローの実行をご覧ください。

主な機能

実行の制御

手順
ワークフローを作成するには、Workflows 構文を使用して、目的のステップと実行順序を定義します。すべてのワークフローには少なくとも 1 つのステップが必要です。ワークフローは、デフォルトですべてのステップが実行されるまでステップを順序付きリストとして扱い、一度に 1 つずつ実行します。詳細については、手順をご覧ください。
条件
switch ブロックを選択メカニズムとして使用して、式の値でワークフローの実行フローを制御できます。詳細については、条件をご覧ください。
繰り返し
for ループを使用すると、一連の数字に対して、またはリストやマップなどのデータのコレクションを介して反復処理できます。詳細については、繰り返しをご覧ください。
サブワークフロー
サブワークフローは、プログラミング言語のルーティンや関数と同様に動作し、ワークフローが複数回繰り返されるステップまたはステップのセットをカプセル化できます。詳細については、サブワークフローをご覧ください。

実行をトリガーする

手動
ワークフローは、Google Cloud Console またはコマンドラインから Cloud SDK を使用して管理できます。Google Cloud Console を介してワークフローの構文の編集中の可視化サポートも利用できます。
自動
Workflows API の Cloud クライアント ライブラリまたは REST API を使用してワークフローを管理できます。詳細については、Workflows API とリファレンスをご覧ください。
スケジュール設定済み
Cloud Scheduler を使用して特定のスケジュール(毎週月曜日の午前 9 時や 15 分ごとなど)でワークフローを実行できます。詳細については、Cloud Scheduler の使用によるワークフローのスケジュール設定をご覧ください。
ランタイム引数
実行時に渡されるデータにアクセスするには、メイン ワークフロー(main ブロックに配置)に params フィールドを追加します。params フィールドは、ワークフローが渡すデータの保存に使用するマップに名前を付けます。その後、ドット表記を使用して引数にアクセスできます。詳細については、ランタイム引数をご覧ください。

サービスに接続する

HTTP API
HTTP 呼び出しを行い、そのレスポンスを変数に割り当てるワークフロー ステップを定義できます。たとえば、HTTP リクエストを介して Cloud Functions や Cloud Run などの Google Cloud サービスを呼び出すことができます。リクエストは、HTTP と HTTPS の両方がサポートされています。詳細については、HTTP リクエストの実行をご覧ください。
コネクタ
ワークフローは、ワークフロー内の他の Google Cloud API に接続し、ワークフローをこれらの Google Cloud プロダクトと統合するために使用できるコネクタを公開します。コネクタは、リクエストのフォーマットを処理するため、呼び出し側のサービスが簡素化されます。コネクタは、Google Cloud API の詳細を認識する必要がないメソッドと引数を提供します。詳しくは、コネクタを理解するをご覧ください。
標準ライブラリと環境変数
ワークフロー標準ライブラリと組み込み環境変数を使用すると、サービスと引数のレスポンスを簡単に構築できます。
標準ライブラリには、モジュールと、データ型や形式の変換などの頻繁に使用される関数が含まれています。ワークフローにライブラリをインポートまたは読み込む必要はありません。ライブラリ機能はすぐに機能します。詳細については、標準ライブラリの概要をご覧ください。
組み込み環境変数を使用してワークフローの環境情報(ロケーションやプロジェクト ID など)にアクセスできます。組み込み環境変数は宣言が不要で、すべてのワークフロー実行で使用できます。詳細については、組み込み環境変数をご覧ください。

エラー処理

指数バックオフによる自動 HTTP 呼び出し再試行、カスタム エラーハンドラ、その他の高度な機能など、ワークフローの例外処理を使用すると、障害発生時にワークフローの復元と動作のカスタマイズができます。詳細については、ワークフローのエラーをご覧ください。

待機中

コールバックを使用すると、ワークフローの実行では別のサービスがコールバック エンドポイントにリクエストを行うことを待ち、そのリクエストによってワークフローの実行を再開できます。コールバックを使用すると、ポーリングせずに指定したイベントを待機して、その発生をワークフローに知らせることが可能です。詳しくは、コールバックを使用して待機するをご覧ください。

ワークフローは、その定義にスリープ ステップを追加することで、実行を一時停止できます。次に sys.sleep を使用すると、指定した時間間隔でデータをポーリングできます。詳細については、ポーリングを使用して待機するをご覧ください。

認証とアクセス制御

すべてのワークフロー実行には認証された呼び出しが必要なため、ワークフローを使用して、偶発的または悪意のある呼び出しのリスクを軽減できます。IAM ベースのサービス アカウントを使用することにより、他の Google Cloud APIs での操作の簡素化も可能です。また、Secret Manager を使用すると、外部 API を認証する鍵やパスポートを安全に保存できます。詳細については、認証アクセス制御をご覧ください。

オブザーバビリティ

ワークフローは、Cloud Logging でのワークフロー実行の実行ログを自動的に生成します。また、コールロギングまたはカスタムログを使用して、ワークフローの実行中にログが Logging に送信されるタイミングを制御できます。詳細については、Cloud Logging にログを送信するをご覧ください。

監査ロギング情報は Cloud Audit Logs で確認できます。詳細については、ワークフロー監査ロギングの情報をご覧ください。

コードサンプル

サンプルページに、便利なワークフローのコードサンプルが多数用意されています。

次のステップ