WEDでデータエンジニアをしているthimi0412 こと清水です。
始めに
WEDでは現在GKE上にAirflow の環境を構築し、Embulk 使用してアプリケーションで使用しているCloudSQLから分析用のBigQueryにデータを転送しています。そして、自前のGEK上のAirflowからCloudComposerへの移行を現在行っている最中です。
今回はCloudComposerの作成と開発運用について紹介します。
なぜCloudComposer
移行の理由については以下の2点
- 自前でAirlfowの環境を作成し運用している、各リソースの設定等も必要となり運用のコストが上がってしまう
- 今後他社とのデータ連携のプロジェクトの予定もあるので、Airflowを使用してデータ連携系タスクを管理したい
構築
CloudComposerはv1とv2があり今回は新しいv2で作りました。(Airflowが2系なので使ってみたい&GKEがAutopilotモード等の理由)
GCPのリソースはTerraformで管理してるのでこんな感じでかけます。
ハマった点としてはGoogleのproviderのバージョンが古くて各設定値が使えないことがあったので、バージョンはなるべく新しいものを使うことをお勧めします。
terraform apply
するとCloudComposerが作成されますが、10分以上待たされるので気長に待ちましょう。
作成が完了するとGCPのコンソールで見るとこんな感じ。
AirflowウェブサーバーからAirflowの管理画面にいけます。
DAGの管理
DAGはAirflowで使われるタスクの依存関係を整理して、どのように実行するか定義されているものです。
Pythonファイルで定義と処理を記述できます。
こんな感じで。
CloudComposerではGCS上に dags/
配下にファイルを配置すると読み取りを行ってくれて、DAGの追加更新が行えます。
GCS上にファイルをアップロードするだけなのでCIも簡単です。
WEDではGitHub Actionsを使用していて、Workload Identityを使用してGCSのファイルをアップロードしています。
GitHubのリポジトリはこのような構成になってます。
staging環境とproduction環境それぞれ環境を作成していてstaging環境はPR作成時、production環境はmain branchにpushされたらGCSにファイルをアップロードするようになっています。
終わりに
まだデータ転送は現在移行中ですがデータ連携等のタスクは本番運用しています。データ転送の移行完了や運用面で気になったことやハマりどころなどあればまた記事を書こうと思っています。