😉

【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導入を検討してみてください。

truestarテックブログ
設定によりコメント欄が無効化されています