メインコンテンツまでスキップ

Databricks での CI/CD

継続的インテグレーションと継続的デリバリー (CI/CD) とは、自動化パイプラインを使用して、ソフトウェアを短時間かつ頻繁なサイクルで開発および配信するプロセスを指します。CI/CDはソフトウェア開発に共通するものであり、データエンジニアリングやデータサイエンスにおいても必要になってきています。コードのビルド、テスト、デプロイを自動化することで、開発チームは手動のプロセスよりも確実にリリースを提供できます。

CI/CD パイプラインの開発には共通のツールを使用できますが、実装とアプローチは、各組織のソフトウェア開発ライフサイクルの固有の側面により、組織によって若干異なる場合があります。このページでは、CI/CD でDatabricks するための次のアプローチと、各アプローチの長所と短所について説明します。

Databricks での機械学習プロジェクトの CI/CD の概要については、「 Databricks で機械学習の CI/CD をどのようにサポートするか」を参照してください。

Databricks アセット バンドル (推奨)

Databricks アセット バンドルは 、Databricks での CI/CD に推奨されるアプローチです。Databricks アセット バンドルを使用して、ジョブやパイプラインなどの Databricks リソースをソース ファイルとして記述し、それらを他のアセットと共にバンドルして、デプロイ可能なプロジェクトのエンドツーエンドの定義を提供します。これらのファイルのバンドルはソース制御でき、CI/CD などの外部GitHub Actions 自動化を使用してデプロイをトリガーできます。

長所

短所

  • カスタムバンドルテンプレートなど、組織全体で一貫性とベストプラクティスを適用するための多くの機能が含まれています。

  • 多くの Databricks リソースのコード ファイルと構成をデプロイするための包括的なサポート。

  • バンドルを作成するには、 バンドル設定構文 に関するある程度の知識が必要です。

  • バンドル デプロイ フォルダーがリモート Git コミットと一致する保証はありません。本番運用バンドルフォルダがワークスペースで誤って編集される可能性があります。

  • マージ時にデプロイをトリガーするには、GitHub Actions などの外部 CI/CD パイプラインが必要です。

本番運用 Git フォルダ

Databricksアセットバンドルをまだ採用する準備ができていないが、コードをソース制御したい場合は、本番運用 Git フォルダを設定できます。次に、GitHub Actions などの外部 CI/CD ツールを使用してマージ時に Git フォルダーをプルするか、外部 CI/CD パイプラインにアクセスできない場合は、ワークスペース内の Git フォルダーにプルするスケジュールされたジョブを作成します。

長所

短所

  • Databricks Asset Bundle を採用していないチーム向けの軽量でシンプルなデプロイをサポートします。

  • Airflow などの外部オーケストレーターを使用するワークスペースの CI/CD をサポートします。

  • 本番運用 Git フォルダが誤って編集される可能性があります。

  • ソース管理には、ノートブックやダッシュボードの下書きなどのコード ファイルのみが含まれます。Git フォルダー内のアセットを実行するジョブの構成と、ダッシュボードを発行するための構成は、ソース管理にはありません。

  • マージ時にデプロイをトリガーするには、 などの外部 パイプラインが必要です。CI/CDGitHub Actions

Git とジョブ

ジョブのCI/CDのみが必要な場合は、 Git with ジョブを使用すると、一部のジョブタイプでリモートGitリポジトリをソースとして使用するように設定できます。ジョブの実行が開始されると、 Databricks はリモートリポジトリのスナップショットコミットを取得し、ジョブ全体が同じバージョンのコードに対して実行されるようにします。

長所

短所

  • 軽量で、UI で完全に作成できます。

  • 最新のコードを実行するために、GitHub Actions などの外部 CI/CD パイプラインは必要ありません。

  • 本番運用ジョブがローカル編集なしでリモートコードを実行するようにし、本番運用ジョブへの意図しない変更を防ぎます。

  • 限られたジョブタスクのみをサポートします。

  • ソース管理には、ノートブックやその他のファイルなどのコード ファイルのみが含まれます。タスク シーケンス、コンピュート、スケジュールなどのジョブ構成はソース制御されていないため、このアプローチはマルチ環境のクロスワークスペース展開にはあまり適していません。

  • ランタイムで Git 接続が必要です。 Git 接続が中断されると、ジョブは失敗します。

その他の CI/CD の推奨事項

選択した CI/CD アプローチに関係なく、 サービスプリンシパル for CI/CD. サービスプリンシパル for CI/CDを参照してください。

また、Databricks では、Databricks Terraform プロバイダー を使用して、Databricks ワークスペースと関連するクラウド インフラストラクチャを管理することもお勧めします。

関連リンク

Databricks資産とデータのライフサイクルの管理の詳細については、CI/CD ツールとデータパイプライン ツールに関する次のドキュメントを参照してください。

領域

これらのツールは、次のような場合に使用します。

Databricksアセットバンドル

CI/CD のベストプラクティスとワークフローを使用して、Databricks ジョブ、DLT パイプライン、MLOps スタックをプログラムで定義、デプロイ、実行します。

Databricks Terraformプロバイダー

Terraform を使用して、Databricks のワークスペースとインフラストラクチャをプロビジョニングおよび管理します。

Git フォルダーと Databricks Git フォルダーを使用した CI/CD ワークフロー

GitHub と Databricks の Git フォルダーを使用して、ソース管理と CI/CD ワークフローを行います。

GitHub Actions

GitHub Actions用に開発されたDatabricks CI/CDを ワークフローに含めます。

Databricks での Jenkins を使用した CI/CD

Jenkins を使用する Databricks の CI/CD パイプラインを開発します。

Apache Airflow を使用した Databricks ジョブのオーケストレーション

Apache Airflow を使用するデータパイプラインを管理およびスケジュールします。

CI/CDのサービスプリンシパル

CI/CDシステムでは、ユーザーではなくサービスプリンシパルを使用します。