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 パイプラインの一般的なフローは次のとおりです。
-
バージョン : Databricks コードとノートブックを Git などのバージョン管理システムに保存します。これにより、時間の経過に伴う変更を追跡し、他のチーム メンバーと共同作業を行うことができます。
- 個々のユーザーは、Git フォルダーを使用して変更を作成およびテストしてから、Git リポジトリにコミットします。Databricks Gitフォルダー ( Repos ) を使用したCI/CD参照してください。
- オプションでバンドルの Git 設定を構成します。
-
コード : ワークスペース内の Databricks ノートブックまたは IDE を使用してローカルでコードと単体テストを開発します。
- LakeFlow Pipelines Editorを使用して、ワークスペースでパイプラインを開発します。
- Databricks Visual Studio Code 拡張機能を使用して、Databricks ワークスペースへのローカル変更を開発およびデプロイします。
-
ビルド : アセットバンドルの設定を使用して Databricks デプロイ中に特定のアーティファクトを自動的にビルドします。
- バンドル構成アーティファクトのマッピングを構成します。
- Databricks Labspylint プラグイン で拡張された Pylint は 、コーディング標準を適用し、Databricks ノートブックおよびアプリケーション コード内のバグを検出するのに役立ちます。
-
デプロイ : Azure DevOps 、 GitHub Actions 、 Jenkinsなどのツールで Databricks アセット バンドルを使用して、Databricks ワークスペースに変更をデプロイします。
- バンドルデプロイメント モードを使用してデプロイメントを構成します。
- Azure DevOps と Databricks の使用の詳細については、 「Azure DevOps を使用した Databricks での継続的インテグレーションとデリバリー」を参照してください。
- Databricks GitHub Actions の例については、 「GitHub Actions」を参照してください。
-
テスト : コードの変更を検証するための自動テストを開発して実行します。
- pytestなどのツールを使用して統合をテストします。
-
実行 : Databricksアセット バンドルとともにDatabricks CLIを使用して、 Databricksワークスペースでの実行を自動化します。
-
Monitor :ジョブモニタリングなどのツールを使用して、 Databricksのコードのパフォーマンスと本番運用ワークロードを監視します。 これにより、本番運用環境で発生する問題を特定して解決できるようになります。
利用可能なツール
次のツールは、CI/CD の基本原則をサポートしています: すべてのファイルのバージョン管理と資産管理の統合、インフラストラクチャをコードとして定義、環境の分離、テストの自動化、ロールバックの監視と自動化。
領域 | これらのツールは、次のような場合に使用します。 |
---|---|
Lakeflow ジョブ、Lakeflow宣言型パイプライン、MLOps スタックを、CI/CDベスト プラクティスとワークフローを使用して、プログラムで定義、デプロイ、および実行します。 | |
Terraform を使用して、Databricks のワークスペースとインフラストラクチャをプロビジョニングおよび管理します。 | |
Azure DevOps を使用する Databricks 用の CI/CD パイプラインを開発します。 | |
GitHub Actions用に開発されたDatabricks CI/CDを ワークフローに含めます。 | |
Jenkins を使用する Databricks の CI/CD パイプラインを開発します。 | |
Apache Airflow を使用するデータパイプラインを管理およびスケジュールします。 | |
CI/CDでは、ユーザーの代わりにサービスプリンシパルを使用します。 | |
CI/CD 認証にワークロード ID フェデレーションを使用すると、Databricks シークレットが不要になり、Databricks への認証に最も安全な方法になります。 |
Databricks アセットバンドル
Databricks アセット バンドルは、Databricks での CI/CD に推奨されるアプローチです。Databricks アセット バンドルを使用して、ジョブやパイプラインなどの Databricks リソースをソース ファイルとして記述し、それらを他のアセットと共にバンドルして、デプロイ可能なプロジェクトのエンドツーエンドの定義を提供します。これらのファイルのバンドルはソース管理でき、デプロイメントをトリガーするためにGitHub Actionsのような外部CI/CD自動化機構を活用することができます。
バンドルには、組織全体で一貫性とベスト プラクティスを適用するためのカスタム テンプレートや、多数の Databricks リソースのコード ファイルと構成を展開するための包括的なサポートなど、多くの機能が含まれています。バンドルを作成するには、バンドル構成構文に関するある程度の知識が必要です。
CI/CD でバンドルを使用する方法に関する推奨事項については、 「Databricks のベスト プラクティスと推奨される CI/CD ワークフロー」を参照してください。
ソース管理のためのその他のツール
Databricks アセット バンドルを使用して完全な CI/CD を適用する代わりに、Databricks では、コード ファイルとノートブックのソース管理とデプロイのみを行うオプションも提供しています。
-
Git フォルダー: Git フォルダーは、リモート Git リポジトリの状態を反映するために使用できます。本番運用用の git フォルダーを作成して、ソース管理されたソース ファイルとノートブックを管理できます。 次に、Git フォルダーを手動で最新の状態にプルするか、マージ時に、または外部 CI/CD パイプラインにアクセスできない場合に、GitHub Actions などの外部 CI/CD ツールを使用して Git フォルダーをプルします。このアプローチは、Airflow などの外部オーケストレーターでは機能しますが、ソース管理されるのはノートブックやダッシュボード ドラフトなどのコード ファイルのみであることに注意してください。Git フォルダー内のアセットを実行するジョブまたはパイプラインの構成と、ダッシュボードを公開するための構成は、ソース管理に含まれていません。
-
ジョブ付きGit : ジョブのコード ファイルのソース コントロールのみが必要な場合、リモートGitリポジトリをソースとして使用するように一部のジョブ タイプを構成できます。 ジョブ実行が開始されると、 Databricksリモート リポジトリのスナップショット コミットを取得し、ジョブ実行全体が同じバージョンのコードに対して行われるようにします。 このアプローチでは、限定されたジョブ タスクのみがサポートされます。さらに、ノートブックやその他のファイルなどのコード ファイルのみがソース管理されます。タスク シーケンス、コンピュート、スケジュールなどのジョブ構成はソースによって制御されないため、このアプローチは複数環境、クロスワークスペースの展開にはあまり適していません。