【dbt Docs】Running a dbt Project - Running dbt in Production
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