🐷

【dbt Docs】Running a dbt Project - Running dbt in Production

2022/03/17に公開

Running dbt in Production

https://docs.getdbt.com/docs/running-a-dbt-project/running-dbt-in-production

What does running dbt in production mean?

dbtを本番で動かす・・・・というのは、dbtのjobをスケジュールに従って動くようにしたという状態を意味します。

スケジュールを設定するだけでなく、本番環境で実行するようにdbtを設定するときに考慮すべき点が他にもたくさんあります。

  • 新しいdbtジョブの作成、または既存のジョブの編集に伴う複雑さ。
  • ジョブ内のステップがエラーコードを返した場合の通知の設定(モデルを構築できない、テストが失敗したなど)。
  • 問題のデバッグに役立つログへのアクセス。
  • dbtを実行する前にgitリポジトリの最新バージョンをプルします(つまり、継続的デプロイ)。
  • コードをマスターにマージする前にdbtプロジェクトを実行する(つまり、継続的インテグレーション)。
  • dbtプロジェクトで共同作業する必要があるチームメンバーにアクセスを許可します。

Ways to run dbt in production

Using dbt Cloud

※ここは、dbtCloudのチュートリアルをやってもらうのが良さそう

Using Airflow

組織でAirflowを使用している場合は、次のようないくつかの方法でdbtジョブを実行できます。

  • BashOperatorを介してdbtを呼び出す。この場合、Airflowとdbtの間の依存関係の競合に関する問題を回避するために、必ずdbtを仮想環境にインストールしてください。
  • airflow-dbtpythonパッケージをインストールします。このパッケージは、Airflowのオペレーターとフックの概念を使用しています—ソースコードはgithubにあります。

Using Prefect

組織でPrefectを使用している場合は、DbtShellTask​​を使用して、dbtの実行をスケジュール、実行、および監視します。

または、サポートされているShellTask​​を使用して、シェルを介してdbtコマンドを実行することもできます。

Using Dagster

組織でDagsterを使用している場合は、 dagster_dbtライブラリを使用して、dbtコマンドをパイプラインに統合できます。dbtCLIとdbtRPCサーバーの両方を介した実行がサポートされており、dbt実行からのメタデータが自動的に集約されます。詳細については、パイプラインの例を確認してください。

Using an automation server

CodeDeploy、GitLab CI/CD、Bamboo、Jenkinsなどの自動化サーバーを使用して、dbtのbashコマンドをスケジュールできます。また、コマンドラインへのログを表示し、gitリポジトリと統合するためのUIも提供します。

Using cron

cronは、bashコマンドをスケジュールするための適切な方法です。ただし、ジョブをスケジュールするのは簡単なルートのように思えるかもしれませんが、本番デプロイメントに関連するすべての追加機能を処理するコードを記述すると、ここにリストされている他のオプションと比較して、このルートが複雑になることがよくあります。

Discussion