【dbt cloud】CI/CD機能を試してみました
はじめに
この記事では、dbt Cloudを利用してCI/CD(継続的インテグレーション/継続的デリバリー)機能を試すのとそのメリットについて、実際の設定例とともに解説します。
CI/CDとは?
CI/CDとは、Continuous Integration(継続的インテグレーション)とContinuous Delivery/Deployment(継続的デリバリー/デプロイメント)の略です。
CIはコードの変更を頻繁に共有リポジトリに取り込み、自動でビルド・テストを行うプロセスを指します。一方、CDはそのコードを自動的かつ安全に本番環境へリリースすることを指します。
CI/CDを導入することで、迅速かつ安全に変更を取り込み、バグや不具合を早期に検知できるというメリットがあります。
なぜCI/CDが必要なのか
従来のデータ開発では、以下のような課題がありました。
- テスト不足:本番リリース前に十分な検証が行われず、不具合が本番に流入する。
- 手作業の多さ:手動でのビルドやデプロイに依存し、作業負担が大きくヒューマンエラーの原因となる。
- リリースサイクルの遅さ:変更を取り込むまでに時間がかかり、データ活用スピードが落ちる。
CI/CDを導入することで、
- プルリクエスト段階で自動的にテストを実施し、不具合を早期に検知できる
- マージ後は自動で本番環境にデプロイされるため、手作業を減らしリスクを最小化できる
- 開発から本番リリースまでのリードタイムを短縮できる
といった効果が期待できます。特にデータ基盤では、データの正確性と安定稼働が求められるため、CI/CDは欠かせない仕組みといえます。
dbt CloudにおけるCI/CD
dbt Cloudのジョブタイプ
dbt Cloudでは、主に以下の3種類のジョブタイプが用意されています。
Job Type | 用途 |
---|---|
CI Job | プルリクエスト時にコード変更を自動ビルド・テスト |
Merge Job (CD Job) | mainブランチへのマージ時に自動トリガー |
Deploy Job | 定期的または任意のスケジュールで実行 |
Orchestration→Jobから作成
CI/CDでは画像のJobを使用します
・CI:設定はPull RequestがトリガーとなるContinuous integration job
・CD:ジョブ設定はMergeがトリガーとなるMerge job
dbt Cloudを使った環境構築
やりたいこと
CI/CDjobを使って、プルリクエスト、マージを行えば自動的に変更が反映されるようにします。開発者、レビュワーはGithubでのやりとりをするだけで変更反映されるのでスムーズに開発・テストが行えます。
①プルリクエストしたらテスト、検証環境への変更反映が自動的に行われる
②マージしたら本番環境へ自動反映される
環境設定
dbt Cloudでは環境ごとにCI環境(Staging)とCD環境(Production)を設定できます。
-
CI環境の設定例
- 環境タイプ: Deployment
- デプロイメントタイプ: STG(Staging)
-
CD環境の設定例
- 環境タイプ: Deployment
- デプロイメントタイプ: PROD(Production)
CIジョブ
CIジョブは、プルリクエストが作成された際に自動で実行され、変更されたコードのみをビルド・テストします。
設定例:
- Gitトリガー: Pull Requestがトリガーとなる
- dbt build --select state:modified+`
※「前回の状態(state)と比較して変更されたモデル(または依存する下流モデルも含む +)」を対象に build を実行。
GitHubのプルリクエスト時には、dbt CloudのCIジョブ実行状況がステータスとして表示され、変更の安全性が一目で確認できます。
実際にdbtのCI jobを確認しても成功したことが分かります(warnは今回無視してください)
CDジョブの設定
CDジョブは、mainブランチにマージされたタイミングで自動的に実行され、変更内容を本番環境へデプロイします。
設定例:
- Gitトリガー: Mergeがトリガーとなる
- 実行コマンド:
dbt build --select state:modified+
マージをしたらそのままCD jobが走ります。
まとめ
dbt Cloudを用いたCI/CD環境の構築により、安全で迅速なモデルの変更管理が可能になります。CI/CDを導入することで、
- 不具合の早期検知
- 手作業の削減
- リリースサイクルの短縮
といった効果を得られ、チームの生産性向上とデータ基盤の信頼性強化につながります。
ぜひ本記事を参考に、dbt CloudでのCI/CD導入を検討してみてください。