継続的インテグレーションと継続的デリバリー (CI/CD) とは、自動化パイプラインの使用を通じて、短時間で頻繁にソフトウェアを開発および提供するプロセスを指します。 CI/CD はソフトウェア開発で一般的であり、データ エンジニアリングやデータ サイエンスにますます必要になってきています。 開発チームは、コードのビルド、テスト、デプロイを自動化することで、手動プロセスよりも確実にリリースを提供します。
Databricks には、各組織のソフトウェア開発ライフサイクル固有の側面により、組織によって若干異なる可能性があるアプローチをサポートする CI/CD パイプラインを開発するためのツールが用意されています。 このページでは、Databricks の CI/CD パイプラインで使用できるツールに関する情報を提供します。 CI/CD の推奨事項とベスト プラクティスの詳細については、 Databricks のベスト プラクティスと推奨される CI/CD ワークフローを参照してください。
Azure Databricks上の機械学習プロジェクトの CI/CD の概要については、「
上位レベルのフロー
Azure Databricks CI/CD パイプラインの一般的なフローは次のとおりです。
-
Version: Azure Databricksコードとノートブックを Git などのバージョン 管理システムに格納します。 これにより、時間の経過と共に変更を追跡し、他のチーム メンバーと共同作業を行うことができます。
- 個々のユーザーは、Git リポジトリにコミットする前に、Git フォルダーを使用して変更を作成し、テストします。 Databricks Git フォルダーを使用した CI/CD を参照してください。
- 必要に応じて 、バンドル Git 設定を構成します。
-
Code: ワークスペース内のAzure Databricks ノートブックで、または IDE を使用してローカルでコードと単体テストを開発します。
- Lakeflow Pipelines エディターを使用して、ワークスペースでパイプラインを開発します。
- Databricks Visual Studio Code拡張機能を使用して、ローカルの変更を開発し、Azure Databricksワークスペースにデプロイします。
-
ビルド: 宣言型オートメーション バンドルの設定を使用して、デプロイ中に特定の成果物を自動的にビルドします。
- バンドル構成の成果物マッピングを設定します。
- Databricks Labs pylint プラグインで拡張された Pylint は、コーディング標準を適用し、Databricks ノートブックとアプリケーション コードのバグを検出するのに役立ちます。
Deploy : Declarative Automation Bundles を使用して、Azure DevOps 、GitHub Actions 、Jenkins などのツールで Azure Databricks ワークスペースに変更をデプロイします。- バンドルデプロイモードを使用して デプロイを構成します。
- Azure DevOpsと Databricks の使用の詳細については、「
Azure DevOps を参照してください。 - Databricks GitHub Actions例については、GitHub Actions を参照してください。
- Databricks で Jenkins パイプラインを使用するには、Azure Databricks の Jenkins での
CI/CD に関する説明を参照してください。
-
テスト: コードの変更を検証する自動テストを開発して実行します。
- pytest などのツールを使用して、統合をテストします。
-
Run: Databricks CLI と宣言型オートメーション バンドルを使用して、Azure Databricks ワークスペースでの実行を自動化します。
- databricks バンドル実行を使用してバンドル リソースを実行します。
- 監視: jobs 監視などのツールを使用して、Azure Databricksでコードと運用ワークロードのパフォーマンスを監視します。 これは、運用環境で発生した問題を特定して解決するのに役立ちます。
使用可能なツール
次のツールは CI/CD の基本原則をサポートしています。すべてのファイルのバージョン管理と資産管理の統合、コードとしてのインフラストラクチャの定義、環境の分離、テストの自動化、ロールバックの監視と自動化を行います。
| 面積 | 必要な場合は、これらのツールを使用します。... |
|---|---|
| 宣言型オートメーション バンドル | CI/CD のベスト プラクティスとフローを使用して、Lakeflow ジョブ、Lakeflow Spark 宣言パイプライン、MLOps スタックなど、Databricks リソースをプログラムで定義、デプロイ、実行します。 |
| Databricks Terraform プロバイダー | Terraform を使用して Databricks ワークスペースとインフラストラクチャをプロビジョニングおよび管理します。 宣言型オートメーション バンドルの代わりに Databricks Terraform プロバイダーを使用するタイミングの詳細については、「 ローカル開発ツール」を参照してください。 |
| Azure DevOps を使用した Azure Databricks での継続的インテグレーションとデリバリー | Azure DevOpsを使用するAzure Databricks用の CI/CD パイプラインを開発します。 |
| Azure Databricks上でAzure DevOpsに認証します | Azure DevOpsで認証します。 |
| GitHub のアクション | CI/CD フローにAzure Databricks用に開発されたGitHub アクションを含めます。 |
| Azure Databricks 上の Jenkins を用いた CI/CD | Jenkins を使用するAzure Databricks用の CI/CD パイプラインを開発します。 |
| Apache エアフローを使用して Lakeflow ジョブを調整する | Apache エアフローを使用するデータ パイプラインを管理およびスケジュールします。 |
| CI/CD のサービス プリンシパル | CI/CD ではユーザーの代わりにサービス プリンシパルを使用してください。 |
| OAuth トークン フェデレーションを使用したAzure 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 パイプラインにアクセスできない場合は、この方法を使用します。
この方法は、エアフローなどの外部オーケストレーターに対して機能しますが、ソース管理にはノートブックやダッシュボードの下書きなどのコード ファイルのみがあることに注意してください。 Git フォルダー内の資産を実行するジョブまたはパイプラインの構成と、ダッシュボードを発行するための構成はソース管理に含まれていません。
ジョブを含む Git: ジョブを含む Git を使用すると、コード ファイルのソースとしてリモート Git リポジトリを使用するようにいくつかのジョブの種類を構成できます。 ジョブの実行が開始されると、Databricks はリポジトリのスナップショットを取得し、そのバージョンに対してすべてのタスクを実行します。 この方法では、限られたジョブ タスクのみがサポートされ、コード ファイル (ノートブックやその他のファイル) のみがソース管理されます。 タスク シーケンス、コンピューティング設定、スケジュールなどのジョブ構成はソース管理されないため、このアプローチは複数環境のクロスワークスペース展開に適していません。