FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

Composerローカル開発CLIツールを使ってみた

こんにちは、株式会社FLINTERSに出向中のおさないです。 10周年記念として133日間ブログを書き続けるチャレンジの38日目の投稿になります。

本記事ではCloud ComposerのDAG開発を補助するComposerローカル開発CLIツールの導入とその注意点について紹介します。

はじめに

Composerローカル開発CLIツールの導入のメリットは実際に構成しているCloud Composerのイメージ、PyPIパッケージ、環境変数のリスト(値はコピーされません)から環境を構築できる点にあります。 しかしMacOSで構築する際は複数の注意点が存在するため本記事ではその点を深掘りします。

DAGの追加まで

DAGを実行するまでに必要なステップは以下です。

  1. gcloudコマンドによる認証情報の構成
  2. CLIツールのインストール
  3. Airflow環境の作成
  4. DAGの追加

これらのステップは公式のガイドに従うことで素直に進めることができるかと思います。 先述の実際の構成に近い環境を作るにはComposer ローカル開発 CLI ツールを使用してローカルの Airflow 環境を実行する  |  Google Cloudセクションにあるコマンドを参考にします。 以下はコマンドの引用です。

composer-dev create LOCAL_ENVIRONMENT_NAME \
    --from-source-environment ENVIRONMENT_NAME \
    --location LOCATION \
    --project PROJECT_ID \
    --port WEB_SERVER_PORT \
    --dags-path LOCAL_DAGS_PATH

注意点

MacOSでローカル環境を起動できない

こちらは公式のガイド内で触れられており、Dockerがアクセスできないディレクトリに composer-dev パッケージをインストールすると発生します。 ガイドに従うことで回避できるかと思います。

Composer ローカル開発 CLI ツールを使用してローカルの Airflow 環境を実行する  |  Google Cloud

コンテナのパフォーマンス低下

提供されているイメージの情報はほとんど公開されていませんが、ローカルにビルドしたイメージからアーキテクチャが amd64 であることがわかります。 これは互換モードで動作するため著しくパフォーマンスが低下します。

本記事執筆時点でCLIからアーキテクチャを指定することはできないためM1/M2 Macでは互換モードで動作することを覚えておく必要があります。

なおCloud ComposerのバージョンはCloud Composer version listページで公開されています。

環境変数からEXECUTORが変更できない

こちらはCLIツールの実装内で制限がかけられています。 よってEXECUTORがデフォルトSequentialExecutorとして固定されます。

composer-local-dev/composer_local_dev/constants.py at main · GoogleCloudPlatform/composer-local-dev · GitHub

おわりに

注意点の内容から、開発しているDAGによっては十分な性能を発揮できないケースもありますが、実際に構成しているCloud Composerのイメージ、PyPIパッケージ、環境変数のリストを用いて簡単にローカル開発環境を構築できるという点でメリットがあるため、今後も注視していきたいツールです。

参考

Run a local Airflow environment with Composer Local Development CLI tool  |  Google Cloud