コンテンツに移動
デベロッパー

Google Cloud での適切なオーケストレーターの選択

2021年5月6日
https://storage.googleapis.com/gweb-cloudblog-publish/images/PivotToTheCloud-01_wxZgkblu57s.max-1000x1000.PNG
Google Cloud Japan Team

※この投稿は米国時間 2021 年 4 月 22 日に、Google Cloud blog に投稿されたものの抄訳です。

オーケストレーションとは何か

オーケストレーションとは一般に、コンピュータ システムとサービスの自動化された構成、調整、管理のことを指します。

サービス指向アーキテクチャにおけるオーケストレーションは、特定の日時における単一サービスの単純な実行から、複数のサービスを長期にわたって自動的に実行してモニタリングしつつ、発生と同時に障害にも対処できるより高度なアプローチまでさまざまです。

データ エンジニアリングにおけるオーケストレーションとは、データを準備して取り込み、変換するサービスとワークフローを調整する中心的機能です。データ処理だけでなく、データから機械学習(ML)モデルをトレーニングするワークフローが関与することもあります。

Google Cloud ではオーケストレーション ツールには不自由しません。このブログ投稿では、サービスとデータのオーケストレーション ツールについて説明し、皆様が自分のユースケースに最適なものを選択できるようにお手伝いします。

Google Cloud でのオーケストレーション

Google Cloud Platform には、オーケストレーション用のツールとサービスが複数用意されています。

  • Cloud Scheduler: スケジュールに基づいて実行される、単一サービスのオーケストレーション用

  • Workflows: 複雑なマルチサービスのオーケストレーション用

  • Cloud Composer: データ ワークロードのオーケストレーション用

https://storage.googleapis.com/gweb-cloudblog-publish/images/Screen_Shot_2021-04-21_at_9.35.50_AM.max-500.max-500x500.png

これらのツールを詳しく見ていきましょう。

Cloud Scheduler                                                                                                                

Cloud Scheduler は、定期的な単一サービスの実行をスケジュールするためのサービスです。これは、Google Cloud で最も単純なオーケストレーションです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/cloud-scheduler-512-color.max-600x600.max-600x600.png

Cloud Scheduler では、cron スケジュールを使用して、ユーザーが定義したスケジュールで HTTP ベースのサービスの実行をトリガーします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/create.max-900x900.max-900x900.png

多くのお客様が、Scheduler を Pub/Sub と Cloud Functions と併用し、Google Cloud でサーバーレスにコードを実行しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/a1jfjucGHcLA.max-600x600.max-600x600.png

定期的な間隔で単一サービスを呼び出す必要があるだけの場合は、Cloud Scheduler が適しています。しかし、複数のサービスを連携させて、あるサービスの出力を次のサービスに入力する場合はどうでしょうか。あるいは、複雑なロジックを適用して、いつ、どのようにサービスを呼び出すかを決定する必要がある場合はどうでしょうか。その場合は、Workflows の使用を検討します。

Workflows

Workflows は、複数の HTTP ベースのサービスを耐久性が高く、ステートフルな 1 つのワークフローにオーケストレートするためのサービスです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/workflows-512-color.max-600x600.png

Cloud Scheduler と同様に、Workflows でも、Cloud Functions と Cloud Run、さらに外部サービスと API 上で実行される HTTP ベースのサービスの実行を自動化できます。Scheduler と異なる点は、Workflows にはより広範なワークフローの一部として複数のサービスの実行を管理できる、高度なロジックがあることです。

YAML または JSON のいずれかを使用して、ワークフローを表現できます。サービスの順序をステップとして指定し、ステップの失敗への対処方法を定義できます。あるステップの結果を、ワークフロー内の他の任意のステップへの入力として、あるいは次に実行するステップを決定するための条件として使用できます。
https://storage.googleapis.com/gweb-cloudblog-publish/images/Screenshot_2021-03-24_at_10.20.11.max-800x80.max-800x800.png

Workflows は、マイクロサービスを連鎖的に実行する場合、仮想マシン(VM)の開始や停止といったインフラストラクチャ タスクを自動化する場合、また外部システムと確実に統合する場合に最適です。サービス統合の信頼できる一元的な情報源として機能し、サービスのオブザーバビリティとエラー処理を向上させます。また完全にサーバーレスなので、リソースの保守について心配する必要もありません。

ワークフローを実行するには、ワークフローを手動でトリガーする(API または UI を介して)か、Cloud Scheduler を使用して定期スケジュールを設定します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Screen_Shot_2021-04-01_at_13.06.33.max-900x9.max-900x900.png

Workflows はサービス指向アーキテクチャでは非常に役立ちますが、それよりもエンジニアリング データ パイプラインやビッグデータ処理に主眼を置いている場合は、Composer の使用を検討します。

Cloud Composer 

Composer は、データドリブン(特に抽出、変換、読み込み(ETL) / 抽出、読み込み、変換(ELT))ワークフローのオーケストレーション用に設計されたサービスで、広く使用されているオープンソースの Apache Airflow プロジェクトを基に構築されています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/cloud-composer-512-color.max-600x600.max-600x600.png

Composer はフルマネージド型なので、Airflow デプロイメントのインストールや保守に煩わされることはありません。また、パイプラインがオンプレミスであっても、複数のクラウド プラットフォームにわたって存在していても、場所を問わずご使用のパイプラインをサポートします。

Workflows と同様に、ワークフローのステップごとのタスクを作成し、タスクの順序を構成して、なんらかの条件に基づいて次に実行するタスクを指定できます。

タスクは Python 有向非巡回グラフ(DAG)で表現され、任意の時間に実行するようにスケジュールできます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Blog_1_-_Composer_Tasks.max-1400x1400.max-1200x1200.png

Composer は、BigQuery でのジョブのトリガーや Dataflow パイプラインの開始など、データ パイプラインを構成するサービスのオーケストレーションに使用します。演算子を使用すれば、複数のクラウド環境やオンプレミスのサービスと通信できます。Google Cloud だけでも、150 を超える演算子があります。

たとえば、DAG ファイルに含まれる演算子にいくつかのパラメータを渡すことで、BigQuery ジョブの実行や Dataflow や Dataproc でのパイプラインのスケジュール設定と開始を簡単に行えます。

読み込んでいます...

Composer と Workflows のどちらを選ぶか

Composer と Workflows はいずれも、複数のサービスのオーケストレーションをサポートし、長時間実行されるワークフローに対応できます。これらのプロダクトの機能には重複する部分もありますが、異なる部分もあり、それぞれが異なるユースケースに適したプロダクトとなっています。

Composer は、ELT、データ エンジニアリング、ワークフローの一部としてデータの変換をオーケストレートするために最もよく使用されます。一方 Workflows は、Cloud Functions、Cloud Run、外部 API で作成された HTTP ベースのサービスのオーケストレーションに特化しています。

Composer は、タスク実行間の数秒の遅延を許容できるバッチ ワークロードのオーケストレーション向けに作られています。タスク間の低レイテンシが求められる状況には適していません。一方、Workflows はレイテンシの影響を受けやすいユースケース向けに作られています。

Composer では Airflow デプロイメントの保守の心配は不要ですが、特定の Composer 環境で必要なワーカーの数は指定する必要があります。Workflows は完全にサーバーレスなので、管理やスケーリングが必要なインフラストラクチャはありません。

次のユースケースの例が、どちらのプロダクトを使用すべきかを考える際に役立ちます。

Cloud Composer

Workflows

●データ エンジニアリングや ETL などのためのバッチ オーケストレーション ワークフローを構築している

 

●一連のタスクを有向非巡回グラフ(DAG)としてモデル化できる

 

●特にデータ エンジニアリングに強い Airflow 演算子を活用したい

 

Airflow DAG にすでに投資しているか、使用経験がある 

 

●Apache Airflow プロジェクトのオープンソースの性質を活用したい

●Cloud Functions、Cloud Run、SaaS、その他の API で作成されたマイクロサービスの実行をオーケストレートする

 

●ワークフローの実行で低レイテンシが必要であるか、実行数が多い

 

●ワークフローのトラフィックが急増するパターンを示しており、サーバーレスな方法でスケーリングする必要がある

 

●ワークフローで、ループや実行済みのステップへのジャンプが必要な場合がある(DAG ではなく)


まとめ

以上に Google Cloud の異なるオーケストレーション ツールの簡単な説明と、ご使用のユースケースに適したツールを選択する方法の決定木を示しました。最終的には、オーケストレートするシステムとサービスによって、使用すべき適切なツールが決まります。

次のブログ投稿では、データ オーケストレーションについてさらに詳しく見ていきます。ご注目ください。それまでの間、Cloud SchedulerCloud ComposerWorkflows のクイックスタート ガイドを読んで準備をしておいてください。

-Cloud 担当デベロッパー アドボケイト, Rachael Deacon-Smith

-デベロッパー アドボケイト, Mete Atamel

投稿先