開発ツール
- Cloud Deployment Manager
- Cloud Build
- Cloud Tasks
- Cloud Composer
1. Cloud Deployment Manager
AWS でいう CloudFormation 。
単一の API に対応した リソース とそのリソースをまとめた デプロイメント などで構成される。
gcloud deployment-manager deployments
コマンドでデプロイメントを管理し、 gcloud deployment-manager resouces
コマンドでデプロイメントに含まれるリソースを管理する。
2. Cloud Build
ビルド構成 を作成して、実行するタスクを Cloud Build に指示できる。
依存関係をフェッチして、単体テスト、静的分析、結合テストを実行し、docker、gradle、maven、bazel、gulp などのビルドツールでアーティファクトを作成するようにビルドを構成できる。
Cloud Build は、一連の ビルドステップ としてビルドを実行し、各ビルドステップは、 Docker コンテナで実行 される。ビルドステップの実行は、スクリプトでコマンドを実行する場合と似ている。
Cloud Build や Cloud Build コミュニティで提供されているビルドステップを使用することも、独自のカスタム ビルドステップを作成することもできる。
- Cloud Build が提供するビルドステップ
- 一般的な言語とタスク用にサポート対象のオープンソース ビルドステップが用意されている
- コミュニティ提供のビルドステップ
- Cloud Build のユーザー コミュニティで、オープンソースのビルドステップが提供されている
- カスタム ビルドステップ
- ビルドで使用する独自のビルドステップを作成できる
各ビルドステップは、ローカルの Docker ネットワーク cloudbuild
に接続しているコンテナで実行され、ビルドステップが相互に通信を行い、データ(ファイル等)を共有できる。
2.1. ビルドのライフサイクル
一般的な Cloud Build ビルドのライフサイクルは以下の通り。
- アプリケーション コードと必要なアセットを準備
- Cloud Build の命令が含まれる YAML または JSON 形式のビルド構成ファイルを作成
- Cloud Build にビルドを送信
- Cloud Build は提供されたビルド構成に基づいてビルドを実行
- 該当する場合、ビルドされたイメージは Container Registry に push される
ビルドを Cloud Build に送信する前にテストする場合に、cloud-build-local
ツールを用いてローカルでビルドを実行できる。
2.2. ビルド構成ファイル
ビルド構成 ファイルは YAML または JSON 構文で記述する。
curl などのサードパーティの http ツールを使用してビルド リクエストを送信する場合は、JSON 構文を使用する。
steps:
- name: string
args: [string, string, ...]
env: [string, string, ...]
dir: string
id: string
waitFor: [string, string, ...]
entrypoint: string
secretEnv: string
volumes: object(Volume)
timeout: string (Duration format)
- name: string
...
- name: string
...
timeout: string (Duration format)
queueTtl: string (Duration format)
logsBucket: string
options:
env: [string, string, ...]
secretEnv: string
volumes: object(Volume)
sourceProvenanceHash: enum(HashType)
machineType: enum(MachineType)
diskSizeGb: string (int64 format)
substitutionOption: enum(SubstitutionOption)
dynamicSubstitutions: boolean
logStreamingOption: enum(LogStreamingOption)
logging: enum(LoggingMode)
substitutions: map (key: string, value: string)
tags: [string, string, ...]
serviceAccount: string
secrets: object(Secret)
availableSecrets: object(Secrets)
artifacts: object (Artifacts)
images:
- [string, string, ...]
3. Cloud Tasks
Cloud Tasks と Cloud Pub/Sub は類似しているように思える。
しかし、最大の違いは Cloud Tasks は Publisher が 明示的に タスクをコントロールできることにある。
Cloud Pub/Sub は、 Publisher が Subscriber をコントロールすることはできない。
4. Cloud Composer
Cloud Composer は、フルマネージドのワークフロー オーケストレーション サービスで、クラウドとオンプレミス データセンターにまたがるワークフローを作成できる。
Apache Airflow オープンソース プロジェクトを基に構築され、Python プログラミング言語を使用して運用される。
- ワークフロー
- データの取り込み、変換、分析、利用のための一連のタスクを表す
- Airflow では、ワークフローは DAG(有向非巡回グラフ:Directed Acyclic Graph)を使用して作成される
- DAG
- スケジューリングして実行するタスクのコレクション
- Python スクリプトで作成され、コードを使用して DAG の構造(タスクとそれらの依存関係)を定義
Cloud Scheduler や cron の単なる代わりではなく、さまざまな機能を提供する。
スケジュール・トリガーをきっかけに各種 演算子 により処理を実行する。
- スケジュール
- cron などと同様、時間起因でワークフローを実行する
- トリガー
- Cloud Storage の変更や Cloud Function に起因してワークフローを実行する
- 演算子
- BashOperator : Bash スクリプトの実行(
cloud
など各種コマンドが実行できる) - PythonOperator : Python コードの実行
- Google Cloud の演算子
- Dataflow の演算子 : Dataflow で Apache Beam ジョブを実行
- Cloud Data Fusion の演算子 : Cloud Data Fusion パイプラインの管理と実行
- Dataproc の演算子 : Dataproc で Hadoop ジョブと Spark ジョブを実行
- Datastore の演算子 : Datastore でデータの読み取りと書き込みを実行
- AI Platform の演算子 : AI Platform でトレーニング ジョブと予測ジョブを実行
- Cloud Storage の演算子 : Cloud Storage でデータの読み取りと書き込みを実行
- EmailOperator : メール送信による通知
- BashOperator : Bash スクリプトの実行(