Azure Databricks の CI/CD とは
この記事では、Databricks の CI/CD の概要について説明します。 継続的インテグレーションと継続的デリバリー (CI/CD) とは、自動化パイプラインを使用して短時間のサイクルを頻繁に実行することで、ソフトウェアを開発および配布するプロセスのことです。 CI/CD はソフトウェア開発に共通しており、データ エンジニアリングとデータ サイエンスでは、そのニーズはますます高まっています。 開発チームは、コードのビルド、テスト、デプロイを自動化することにより、多くのデータ エンジニアリング チームとデータ サイエンス チームでいまだに広く用いられている手動プロセスよりも確実にリリースを配布できます。
Azure Databricks では、CI/CD に Databricks アセット バンドルを使用することをお勧めします。これを使用すると、Azure Databricks プラットフォーム用の複雑なデータ、分析、ML プロジェクトの開発とデプロイが可能になります。 バンドルを使用すると、多くのカスタム構成を簡単に管理し、プロジェクトの Azure Databricks の開発、ステージング、運用ワークスペースへのビルド、テスト、デプロイを自動化できます。
Azure Databricks の機械学習プロジェクトにおける CI/CD の概要については、「Databricks が機械学習の CI/CD をサポートする方法」を参照してください。
Azure Databricks の CI/CD パイプラインの内容
Databricks アセット バンドルを使用して、Azure Databricks CI/CD の実装を定義し、プログラムで管理できます。これには、通常、次のものが含まれます。
- ノートブック: Azure Databricks ノートブックは、多くの場合、データ エンジニアリングとデータ サイエンスのワークフローの重要な要素です。 ノートブックのバージョン管理を使用できるほか、CI/CD パイプラインの一部としてそれらを検証したりテストしたりすることもできます。 ノートブックを対象に自動テストを実行して、想定どおりに機能しているかどうかを確かめることができます。
- ライブラリ: デプロイされたコードを実行するために必要なライブラリの依存関係を管理します。 ライブラリにはバージョン管理を使用し、自動テストと検証にそれらを含めます。
- ワークフロー: Databricks ジョブは、ノートブックまたは Spark ジョブを使用して自動タスクをスケジュールし、実行することを可能にするジョブで構成されます。
- データ パイプライン: データ パイプラインを宣言するための Databricks のフレームワークである Delta Live Tables を使用して、CI/CD オートメーションにデータ パイプラインを含めることもできます。
- インフラストラクチャ: インフラストラクチャの構成には、ターゲット環境のクラスター、ワークスペース、ストレージの定義とプロビジョニング情報が含まれます。 インフラストラクチャの変更は、CI/CD パイプラインの中で検証およびテストできるため、一貫性があってエラーがないことが保証されます。
Azure Databricks の CI/CD ステップ
Azure Databricks CI/CD パイプラインの一般的なフローには、次のステップが含まれます。
- 保存: Azure Databricks コードとノートブックを Git などのバージョン管理システムに格納します。 これにより、長期にわたって変更を追跡すると共に、他のチーム メンバーと共同作業を行うことができます。 「Git と Databricks Git フォルダー (Repos) を使用した CI/CD 手法」と「バンドル Git の設定」を参照してください。
- コード: ワークスペース内の Azure Databricks ノートブックで、または外部 IDE を使用してローカルでコードと単体テストを開発します。 Azure Databricks には、Azure Databricks ワークスペースへの変更の開発とデプロイを容易にする Visual Studio Code 拡張機能が用意されています。
- ビルド: Databricks アセット バンドルの設定を使用して、デプロイ中に特定の成果物を自動的にビルドします。 成果物を参照してください。 さらに、PylintDatabricks Labs pylint プラグインで拡張コーディング標準を適用し、Databricks ノートブックとアプリケーション コードのバグを検出するのに役立ちます。
- デプロイ: Databricks アセット バンドルを、Azure DevOps、Jenkins、GitHub Actions などのツールと組み合わせて使用して、Azure Databricks ワークスペースに変更をデプロイします。 「Databricks アセット バンドルのデプロイ モード」を参照してください。
- テスト: 自動テストを開発して実行し、 pytest などのツールを使用してコードの変更を検証します。 ワークスペース API との統合をテストするために、 Databricks Labs pytest プラグイン を使用すると、ワークスペース オブジェクトを作成し、テストの完了後にクリーンアップできます。
- 実行: Databricks CLI を Databricks アセット バンドルと組み合わせて使用して、Azure Databricks ワークスペースでの実行を自動化します。 ジョブまたはパイプラインの実行を参照してください。
- 監視: Azure Monitor や Datadog などのツールを使用して、Azure Databricks のコードとワークフローのパフォーマンスを監視します。 運用環境で発生した問題の特定と解決に役立てることができます。
- 反復: 小さな反復を高頻度で行うことにより、データ エンジニアリングまたはデータ サイエンス プロジェクトを改善および更新します。 小さな変更は、大きな変更よりもロールバックが容易です。
関連リンク
Azure Databricks の資産とデータのライフサイクルの管理の詳細については、CI/CD およびデータ パイプライン ツールに関する次のドキュメントを参照してください。
領域 | 次が目的の場合は、これらのツールを使用します。 |
---|---|
Databricks アセット バンドル | CI/CD のベスト プラクティスとワークフローを使用して、Azure Databricks ジョブ、Delta Live Tables パイプライン、MLOps スタックをプログラムによって定義、デプロイ、実行します。 |
Databricks Terraform プロバイダー | Teraform を使用して、Databricks インフラストラクチャとリソースをプロビジョニングおよび管理します。 |
Git と Databricks Git フォルダーを使用した CI/CD ワークフロー | ソース管理と CI/CD ワークフローには、GitHub と Databricks Git フォルダーを使用します。 |
Databricks で Azure DevOps を使用して認証する | Azure DevOps で認証します。 |
Microsoft Entra サービス プリンシパルを使用して Azure Databricks Git フォルダーへのアクセスを認証する | MS Entra サービス プリンシパルを使用して、Databricks Git フォルダーへのアクセスを認証します。 |
Azure DevOps を使用した Azure Databricks での継続的インテグレーションとデリバリー | Azure DevOps を使用する Azure Databricks の CI/CD パイプラインを開発します。 |
GitHub Actions を使用した継続的インテグレーションと継続的デリバリー | Azure Databricks 用に開発された GitHub Actions を使用するGitHubでの CI/CD ワークフローを開発します。 |
Jenkins を使用する Azure Databricks の CI/CD | Jenkins を使用する Azure Databricks の CI/CD パイプラインを開発します。 |
Apache Airflow を使用して Azure Databricks ジョブを調整する | Apache Airflow を使用するデータ パイプラインの管理およびスケジュール設定を行います。 |
CI/CD のサービス プリンシパル | CI/CD システムでは、ユーザーではなくサービス プリンシパルを使用します。 |