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

Databricks における CI/CD

継続的インテグレーションと継続的デリバリー (CI/CD) とは、自動化パイプラインを使用して、短い頻繁なサイクルでソフトウェアを開発および配信するプロセスを指します。CI/CDはソフトウェア開発では一般的ですが、データエンジニアリングやデータサイエンスでもその必要性がますます高まっています。 コードの構築、テスト、展開を自動化することで、開発チームは手動のプロセスよりも信頼性の高いリリースを提供できます。

Databricks は、各組織のソフトウェア開発ライフサイクルの固有の側面により組織ごとに若干異なる可能性のあるアプローチをサポートする CI/CD パイプラインを開発するためのツールを提供します。このページでは、Databricks 上の CI/CD パイプラインで使用できるツールに関する情報を提供します。CI/CD の推奨事項とベスト プラクティスの詳細については、 「Databricks のベスト プラクティスと推奨される CI/CD ワークフロー」を参照してください。

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

高レベルフロー

Databricks CI/CD パイプラインの一般的なフローは次のとおりです。

  1. バージョン : Databricks コードとノートブックを Git などのバージョン管理システムに保存します。これにより、時間の経過に伴う変更を追跡し、他のチーム メンバーと共同作業を行うことができます。

  2. コード : ワークスペース内の Databricks ノートブックまたは IDE を使用してローカルでコードと単体テストを開発します。

  3. ビルド : 宣言的オートメーション バンドル設定を使用して、デプロイ中に特定のアーティファクトを自動的にビルドします。

  4. デプロイ : Azure DevOpsGitHub ActionsJenkinsなどのツールを備えた宣言型オートメーション バンドルを使用して、 Databricksワークスペースに変更をデプロイします。

  5. テスト : コードの変更を検証するための自動テストを開発して実行します。

    • pytestなどのツールを使用して統合をテストします。
  6. 実行 : Databricks CLIと宣言的自動化バンドルを使用して、 Databricksワークスペースでの実行を自動化します。

  7. Monitor :ジョブモニタリングなどのツールを使用して、 Databricksのコードのパフォーマンスと本番運用ワークロードを監視します。 これにより、本番運用環境で発生する問題を特定して解決できるようになります。

利用可能なツール

次のツールは、CI/CD の基本原則をサポートしています: すべてのファイルのバージョン管理と資産管理の統合、インフラストラクチャをコードとして定義、環境の分離、テストの自動化、ロールバックの監視と自動化。

領域

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

宣言型自動化バンドル

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

Databricks Terraformプロバイダー

Terraformを使用してDatabricksのワークスペースとインフラストラクチャをプロビジョニングおよび管理します。宣言型自動化バンドルの代わりにDatabricks Terraformプロバイダーを使用するタイミングの詳細については、 「ローカル開発ツール」を参照してください。

Azure DevOps を使用した Databricks での継続的インテグレーションとデリバリー

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

GitHub Actions

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

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

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

Lakeflowで ジョブをオーケストレーションApacheAirflow

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

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

CI/CDでは、ユーザーの代わりにサービスプリンシパルを使用します。

OAuth社内フェデレーションを使用してDatabricksへのアクセスを認証する

CI/CD 認証にワークロード ID フェデレーションを使用すると、Databricks シークレットが不要になり、Databricks への認証に最も安全な方法になります。

宣言型自動化バンドル

宣言型自動化バンドルは、DatabricksにおけるCI/CDの推奨アプローチです。宣言的オートメーション バンドルを使用して、ジョブやパイプラインなどのDatabricksリソースをソース ファイルとして記述し、それらを他のアセットとバンドルして、デプロイ可能なプロジェクトのエンドツーエンドの定義を提供します。 これらのファイル群はソース管理が可能であり、GitHub Actionsなどの外部CI/CD自動化ツールを使用してデプロイメントをトリガーできます。

バンドルには、組織全体で一貫性とベスト プラクティスを適用するためのカスタム テンプレートや、多数の Databricks リソースのコード ファイルと構成を展開するための包括的なサポートなど、多くの機能が含まれています。バンドルを作成するには、バンドル構成構文に関する知識が必要です。

CI/CD でバンドルを使用する方法に関する推奨事項については、 「Databricks のベスト プラクティスと推奨される CI/CD ワークフロー」を参照してください。

ソース管理のためのその他のツール

宣言型自動化バンドルによる完全なCI/CDを適用する代わりに、Databricksはコードファイルとノートブックのみをソース管理およびデプロイするオプションを提供しています。

  • Git フォルダー: Git フォルダーは、リモート Git リポジトリの状態を反映するために使用できます。本番運用用の git フォルダーを作成して、ソース管理されたソース ファイルとノートブックを管理できます。 次に、Git フォルダーを手動で最新の状態にプルするか、GitHub Actions などの外部 CI/CD ツールを使用して、マージ時に Git フォルダーをプルします。外部の CI/CD パイプラインにアクセスできない場合は、このアプローチを使用します。

    このアプローチは、Airflow などの外部オーケストレーターでは機能しますが、ソース管理されるのはノートブックやダッシュボード ドラフトなどのコード ファイルのみであることに注意してください。Git フォルダー内のアセットを実行するジョブまたはパイプラインの構成と、ダッシュボードを公開するための構成は、ソース管理に含まれていません。

  • Git with Job : Git with Job を使用すると、コード ファイルのソースとしてリモートGitリポジトリを使用するように一部のジョブ タイプを構成できます。 ジョブの実行が開始されると、 Databricksリポジトリのスナップショットを取得し、そのバージョンに対してすべてのタスクを実行します。 このアプローチでは、限られたジョブ タスクのみがサポートされ、コード ファイル (ノートブックやその他のファイル) のみがソース管理されます。タスク シーケンス、コンピュート設定、スケジュールなどのジョブ構成はソース制御されないため、このアプローチは複数環境、クロスワークスペース展開にはあまり適していません。