次の方法で共有


Azure Databricks のアーキテクチャのベスト プラクティス

Azure Databricks は、Apache Spark ベースの分析プラットフォームであり、高速で簡単で共同作業が容易です。 これは、データ エンジニアリング、機械学習、分析のワークロードを大規模に構築してデプロイできるように設計されており、データ チームが効率的に共同作業するための統合プラットフォームを提供します。 これらの Databricks のユース ケースでは、Azure Databricks を使用するための一般的な考慮事項とベスト プラクティスがいくつかあります。 この記事では、これらの考慮事項について説明し、Well-Architected Framework の柱の原則にマップされるアーキテクチャに関する推奨事項について説明します。

アーキテクトとして、 分析データ ストアの選択 を確認し、ワークロードの分析プラットフォームとして Azure Databricks を選択したと想定されています。

テクノロジスコープ

このレビューでは、Azure でホストされている Databricks 機能に関する相互に関連する決定に焦点を当てます。

  • Azure Databricks
  • Apache Spark
  • Delta Lake
  • Unity カタログ
  • MLflow

Reliability

信頼性の柱の目的は、十分な回復性を構築 し、障害から迅速に回復する機能をして継続的な機能を提供することです。

信頼性設計の原則、個々のコンポーネント、システム フロー、およびシステム全体に適用される高度な設計戦略を提供します。

ワークロード設計チェックリスト

信頼性 設計レビュー チェックリストに基づいて、設計戦略を開始します。 アプリケーションの性質とそのコンポーネントの重要度を念頭に置いて、ビジネス要件との関連性を判断します。 必要に応じて、より多くのアプローチを含むように戦略を拡張します。

  • サービスの制限とクォータを理解する: Azure Databricks サービス では、コンピューティング クラスター、ワークスペース容量、ストレージ スループット、ネットワーク帯域幅の制限によって、ワークロードの信頼性を直接制限します。 アーキテクチャの設計では、1,000 ノード のクラスター制限、ワークスペース クラスターの最大値、ピーク時にスケーリング操作を停止できるリージョン容量の制約など、予期しないサービス中断を防ぐために、これらのクォータを事前に組み込む必要があります。

  • 障害モード分析を使用して潜在的な障害を予測する: 体系的 な障害モード分析 では、システム障害の可能性を特定し、分散コンピューティングの回復性を維持するための対応する軽減戦略を確立します。

    一般的な障害シナリオとその実証済みの軽減方法は次のとおりです。

    Failure 緩和策
    クラスター ドライバー ノードの障害 クラスターの自動再起動ポリシーを使用し、Spark アプリケーションのチェックポイント処理を実装します。 障害耐性のある状態管理で構造化ストリーミングを使用します。
    ジョブの実行エラー 指数バックオフを使用して再試行ポリシーを実装します。 エラー処理を伴う Databricks ジョブ オーケストレーションを使用します。 適切なタイムアウト設定を構成します。
    データの破損または不整合 Lakeflow 宣言パイプラインでは、Delta Lake ACID トランザクションとタイム トラベル機能とデータ期待値を使用します。 データ検証チェックと監視を実装します。
    ワークスペースまたはリージョンを使用できない 複数リージョンのデプロイ戦略を実装する。 ワークスペースのバックアップと復元の手順を使用します。 リージョン間データ レプリケーションを構成します。

    これらの軽減戦略では、自動再起動、自動スケーリング、Delta Lake 整合性の保証、フォールト トレランスのための Unity カタログ セキュリティ機能など、ネイティブの Azure Databricks 機能を利用します。

  • 重要なレイヤー間の冗長性をサポートするように設計します 。冗長性は、ワークロードの継続性を維持するために重要なアーキテクチャ レイヤーに適用する必要がある重要な戦略です。

    たとえば、さまざまなインスタンスの種類を使用して、クラスターを可用性ゾーン間で分散し、クラスター プールを利用し、自動ノード置換ポリシーを実装します。 同様に、Reliable ネットワーク設計は、コントロール プレーンの到達可能性、データ アクセス、依存関係との通信を妨げかねない接続エラーから保護します。 冗長ネットワーク パス、多様なプライベート エンドポイント構成、DNS フェールオーバー メカニズム、VNet インジェクションを使用すると、ネットワークの回復性を実現できます。 ガバナンスの障害によってデータ アクセスが停止され、コンプライアンス要件が損なわれる可能性があるため、サービスの中断時にコンプライアンスとデータ のアクセシビリティを維持するには、メタデータの回復性も重要です。

    可用性を高める場合は、リージョンの停止から保護し、拡張されたサービス中断時のビジネス継続性を確保する地理的冗長性のために、複数リージョンの Azure Databricks デプロイを検討してください。 複数リージョンのセットアップは、ディザスター リカバリーの実行可能なソリューションでもあります。

  • スケーリング戦略を実装する: 自動スケールを使用して、パフォーマンスを安定した状態に保ちながら、需要の変動に対処します。 ピーク需要期におけるリソース追加とリージョンの容量制限および速度のバランス調整に起因する遅延と、クラスター起動時の待機時間に対処する計画を立てます。

  • 信頼性を向上させるためにサーバーレス コンピューティングを採用します 。サーバーレス コンピューティング オプションを使用すると、インフラストラクチャ管理を Microsoft に移行することで、運用の複雑さが軽減され、信頼性が向上します。これにより、自動スケーリング、組み込みのフォールト トレランス、およびクラスター ライフサイクル管理のオーバーヘッドなしで一貫した可用性が提供されます。

  • 包括的な正常性の監視とアラートの実装:すべての Azure Databricks コンポーネントに対する包括的な監視により、可用性への影響が発生する前にプロアクティブな問題の検出と迅速な対応が可能になり、ワークスペースの正常性、クラスターの状態、ジョブの実行パターン、データ パイプラインのパフォーマンスを自動化されたエスカレーション ワークフローでカバーできます。

  • Delta Lake の信頼性機能を使用してデータを保護する: Delta Lake は、ACID トランザクション、自動バージョン管理、タイム トラベル機能、スキーマの適用を通じて、破損を防ぎ、データの問題からの復旧を可能にする重要なデータ保護を提供します。

  • ジョブの信頼性と再試行メカニズムを構成します。 ジョブの信頼性の構成では、インテリジェントな再試行ポリシー、タイムアウト管理、および一時的な問題と永続的なエラーを区別するエラー処理メカニズムによって回復性のあるデータ処理が確立されます。

  • データ パイプラインの回復性とフォールト トレランスを構築します。 データ パイプラインの回復性は、相互接続されたデータ システム全体で障害が連鎖し、ビジネス分析ワークフローを中断する可能性がある分散データ処理の重要な信頼性の課題に対処します。

    高度な回復性戦略では、Lakeflow 宣言型パイプライン、構造化ストリーミング チェックポイント、自動ローダーの復旧データ機能、および Lakeflow 宣言パイプラインの品質制約を利用して、インフラストラクチャの中断中に自動エラー処理、データ品質の強制、および正常な低下を提供します。

  • バックアップとディザスター リカバリーの手順を確立します。 効果的な ディザスター リカバリー では、回復時間の目標をビジネス要件に合わせ、ワークスペース メタデータ、ノートブック リポジトリ、ジョブ定義、クラスター構成、統合データ ストレージ システムの自動バックアップ プロセスを確立する必要があります。

    復旧にセカンダリ リージョンを使用している場合は、ワークスペース メタデータの同期、コード リポジトリのレプリケーション、依存する Azure サービスとの連携された統合に注意して、地理的境界を越えて運用継続性を維持します。

  • 信頼性テストとカオス エンジニアリングを実装します。 体系的な信頼性テストでは、障害復旧メカニズムが実際の条件下で正しく機能することを検証し、混乱エンジニアリングの原則を組み込んで、運用環境に影響を与える前の回復性のギャップを特定します。

推奨事項

勧告 メリット
クラスターの自動スケーリングを構成し、最小ノード数を2に設定し、ワークスペースのクォータ制限に合わせて最大ノード数を調整します。 コスト効率とパフォーマンスヘッドルームのバランスを取るために、目標使用率のしきい値を 70 から 80% に設定します。 自動スケーリングにより、動的ノード割り当てによってコスト効率を維持しながら、クラスター リソースの枯渇を防ぐことができます。 適切な制限の構成により、ワークロードがサービス クォータ内に収まるようにし、ジョブエラーがワークスペースの容量の制約を超えないようにします。
ミッション クリティカルなワークロードのために、複数の Azure リージョンに Azure Databricks ワークスペースをデプロイします。 Databricks アセット バンドルと Azure DevOps または Azure Data Factory パイプラインを使用して、ソース コード、ジョブ定義、クラスター構成の自動バックアップを使用してワークスペース レプリケーションを構成します。 複数リージョンのデプロイでは、リージョンの障害や災害時にデータ処理機能を維持する地理的な冗長性が提供されます。

自動化されたワークスペース レプリケーションでは、リージョン間で一貫した構成を確保することで、目標復旧時間を数時間から数分に短縮できます。 このアプローチは、ビジネス継続性の要件をサポートし、拡張されたリージョンサービスの中断中の運用上の影響を最小限に抑えます。
同じファミリ内の多様な VM サイズを使用して、事前にウォームされたインスタンスを含む クラスター プール を確立します。 一般的なワークロード要件を上回る 20 から 30% のオーバーヘッド容量を維持するようにプール サイズを構成します。 事前にウォーム化されたクラスター プールを使用すると、クラスターの起動時間が 5 分から 10 分から 60 秒以下に短縮され、ノード障害からの復旧時間が短縮されます。 プール内の多様な VM サイズ設定により、特定のインスタンスの種類が容量の制約に直面した場合でも、クラスターのプロビジョニングが成功します。
テーブルの自動バージョン管理と保持ポリシーを構成して、Delta Lake のタイム トラベル 機能をアクティブ化します。 復旧要件に基づいてリテンション期間を設定します。通常、運用テーブルの場合は 7 日から 30 日です。 タイム トラベル機能は、外部バックアップ システムや複雑な復元手順を必要とせずに、特定の時点のデータ復旧を提供します。

自動バージョン管理では、コンプライアンスとデバッグの目的で完全なデータ系列を維持しながら、データの破損や偶発的な変更から保護します。 この方法では、データの問題から迅速に復旧しながら、個別のバックアップ インフラストラクチャが不要になります。
クラスター イベント、ジョブの実行、データ分析の 診断ログ を有効にして、Azure Databricks を Azure Monitor と統合します。 クラスターの正常性、ジョブの失敗率、リソース使用率のしきい値のカスタム メトリックとアラートを構成します。 一元的な監視により、すべての Azure Databricks コンポーネントで統一された可観測性が提供され、障害が運用環境のワークロードに影響を与える前にプロアクティブな問題検出が可能になります。

カスタム アラートでは、クラスターでパフォーマンスの低下やジョブの失敗が許容されるしきい値を超えたときにチームに自動的に通知することで、解決までの平均時間が短縮されます。
サーバー レス SQL ウェアハウスを デプロイして、クラスター管理のオーバーヘッドなしで一貫性のある可用性を必要とするアドホック分析とレポートワークロードを実現します。 サーバーレス インフラストラクチャにより、クラスターのプロビジョニングの遅延がなくなり、組み込みの高可用性が保証された自動スケーリングが提供されます。 Microsoft は、すべてのインフラストラクチャの修正プログラムの適用、更新、障害復旧を管理し、運用の複雑さを軽減しながら、一貫したパフォーマンスを確保します。
30 秒から始まる指数バックオフと最大再試行回数 3 を使用して、Azure Databricks ジョブ再試行 ポリシー を構成します。 不要なリソース消費を回避するために、一時的なエラーと構成エラーに対して異なる再試行戦略を設定します。 インテリジェントな再試行メカニズムは、手動による介入なしに、ネットワーク タイムアウトや一時的なリソースの使用不能などの一時的な障害から自動的に復旧します。

指数バックオフにより、復旧可能な一時的な問題と永続的な構成の問題を区別しながら、停止中のダウンストリーム サービスの圧倒的な負荷を防ぐことができます。 この方法により、運用上のオーバーヘッドが軽減され、障害復旧の自動化によってシステム全体の回復性が向上します。
Azure Databricks ワークスペースの VNet インジェクション を実装して、カスタム ネットワーク ルーティングとプライベート接続を有効にします。 トラフィック フローを制御し、既存のエンタープライズ ネットワーク インフラストラクチャと統合するように、ネットワーク セキュリティ グループと Azure Firewall 規則を構成します。 VNet インジェクションは、カスタム ルーティング オプションを使用してネットワーク レベルの冗長性を提供し、既定の Azure ネットワーク パスへの依存関係を排除します。

プライベート接続により、セキュリティの分離を維持しながら、オンプレミス ネットワークやその他の Azure サービスとの統合が可能になります。 この構成では、ネットワーク全体の信頼性を高める複数の可用性ゾーンとカスタム負荷分散戦略がサポートされます。
自動メタストア バックアップとリージョン間メタデータ同期を使用して Unity カタログ をアクティブ化します。 ワークスペースの障害時にメタデータの永続化を確保するために、別のストレージ アカウントに外部メタストアの場所を構成します。 Unity カタログ のバックアップにより、ガバナンス ポリシーとデータ系列情報がワークスペースの災害に耐え、コンプライアンスと運用継続性を維持できます。 リージョン間同期により、メタデータの復旧時間が数時間から数分に短縮され、すべての環境で一元化されたアクセス制御ポリシーが維持されます。
自動品質の適用とフォールト トレランスを必要とする運用データ パイプライン用に Lakeflow 宣言型パイプライン をデプロイします。 パイプラインの再起動ポリシーと期待される処理を構成して、処理の継続性を維持しながらデータの品質を確保します。 Lakeflow 宣言型パイプラインは、一時的な障害、データ品質違反、インフラストラクチャの問題を手動で介入せずに自動的に処理する宣言型パイプライン管理を提供します。 期待に応じた組み込みの品質の強制により、破損したデータがダウンストリームに伝達されるのを防ぎ、自動再試行機能により、一時的なリソース制約中にパイプラインが完了することを保証します。 このマネージド アプローチにより、データ整合性標準を維持しながら運用上のオーバーヘッドを削減できます。
Azure REST API または Databricks CLI を使用して、ソース コード、ジョブとパイプラインの構成、クラスター設定、ワークスペース メタデータをエクスポートする自動化されたワークスペース バックアップ 手順を作成します。 リージョン間レプリケーションが有効になっている Azure ストレージ アカウントへの定期的なバックアップをスケジュールします。 包括的なワークスペース バックアップを使用すると、ディザスター シナリオ中に環境を完全に復元でき、すべての開発作業と運用構成が維持されます。 自動化された手順により、人的エラーが解消され、リージョン間ストレージ レプリケーションによってリージョン間の障害から保護される一方で、バックアップの一貫性が確保されます。 このアプローチにより、目標復旧時間が短縮され、データ チームとその分析ワークフローのビジネス継続性が維持されます。
ゾーン冗長ストレージ (ZRS) を使用して、高可用性 Azure ストレージ アカウントに格納されているチェックポイントの場所を使用して 構造化ストリーミング を実装します。 スループット要件と障害復旧目標に基づいて、10 ~ 60 秒のチェックポイント間隔を構成します。 チェックポイント処理では、正確に 1 回の処理が保証され、データの損失や重複する処理を行わずに、クラスターの障害からの自動復旧が可能になります。 ZRS ストレージを使用すると、可用性ゾーンの障害全体でチェックポイントの永続化が確保され、インフラストラクチャの中断中にストリーミング ジョブの継続性が維持されます。
適切な再起動タイムアウトと最大再起動試行回数を使用して、実行時間の長いワークロードの 自動クラスター 再起動ポリシーをアクティブ化します。 ミッション クリティカルなデータ処理ワークフローのクラスター終了検出と自動ジョブ再スケジュールを構成します。 自動再起動ポリシーを使用することにより、計画メンテナンスイベント中や予期しないクラスター障害の際に、ワークロードの継続性が確保され、手動による介入は必要ありません。

インテリジェントな再起動ロジックは、回復可能なエラーと永続的な問題を区別し、重要なデータ処理操作に対するサービスの可用性を維持しながら、無限の再起動ループを防ぎます。
容量の制約時に割り当ての柔軟性を提供するために、同じコンピューティング カテゴリ内に複数の VM ファミリとサイズを持つ インスタンス プール を構成します。 さまざまなインスタンスの種類の構成により、特定の VM サイズでリージョンの容量制限が発生した場合でも、クラスターのプロビジョニングが成功します。 プール内の混合 VM ファミリは、ワークロード要件に適したパフォーマンス特性を維持しながらコストの最適化の機会を提供し、ピーク需要期間中のプロビジョニングエラーのリスクを軽減します。
非運用環境でクラスターの障害、ネットワーク パーティション、リソースの制約を意図的に導入することで、カオス エンジニアリングプラクティスを確立します。 Azure Chaos Studio を使用して障害の挿入を自動化し、復旧手順を検証し、回復性のギャップを特定します。 プロアクティブ障害テストでは、運用インシデントが発生する前に、ディザスター リカバリー手順と自動復旧機能が検証されます。

体系的なカオス エンジニアリングでは、パイプラインの依存関係、クラスター構成、監視システムの弱点を特定します。これは、通常の操作中には明らかでない可能性があります。 このアプローチにより、システムの回復性に自信を持ち、復旧手順が実際の停止時に設計どおりに動作するようにします。

セキュリティ

セキュリティの柱の目的は、ワークロードに対する機密性、整合性、可用性の 保証を提供することです。

セキュリティ設計の原則は、Azure Databricks の技術的な設計にアプローチを適用することで、これらの目標を達成するための高度な設計戦略を提供します。

ワークロード設計チェックリスト

セキュリティ 設計レビュー チェックリストに基づいて設計戦略を開始し、セキュリティ体制を改善するための脆弱性と制御を特定します。

  • セキュリティ ベースラインを確認します。Azure Databricks セキュリティ ベースラインは、Microsoft クラウド セキュリティ ベンチマークで指定されているセキュリティに関する推奨事項を実装するための手順のガイダンスとリソースを提供します。

  • セキュリティで保護された開発ライフサイクル (SLC) を統合する: 開発ライフサイクルの早い段階で脆弱性を特定するために、ソース コードと MLflow モデルのセキュリティ検証のセキュリティ コード スキャンを実装します。

    コードとしてのインフラストラクチャ (IaC) 検証を使用して、Azure Databricks リソースのセキュリティで保護された構成を適用します。

    また、セキュリティで保護されたソース コード管理を実装し、開発ワークフロー内で資格情報を安全に管理し、データ処理と機械学習モデルのデプロイに使用される CI/CD パイプラインに自動セキュリティ テストを統合することで、開発環境を保護します。

  • 一元的なガバナンスを提供します。 Databricks パイプラインを使用して、データ ソースの追跡可能性と監査を追加します。 Unity Catalog は、きめ細かなアクセス制御と検証を使用して、ワークスペース全体のデータ検出と系列追跡をサポートする一元化されたメタデータ カタログを提供します。

    Unity カタログは、外部データ ソースと統合できます。

  • 意図的なリソースのセグメント化を導入します。 個別のワークスペースとサブスクリプションを使用して、さまざまなスコープでセグメント化を適用します。 運用環境、開発環境、サンドボックス環境に個別のセグメントを使用して、潜在的な侵害の爆発半径を制限します。

    機密度と機能によるセグメント化の適用: より厳密なアクセス制御を使用して専用ワークスペース内の機密データ ワークロードを分離し、サンドボックス環境を使用して、制限された特権を持ち、運用データ アクセスなしで探索的な作業を行います。

  • セキュリティで保護されたネットワーク アクセスを実装します。 Spark クラスターや VM などの Azure Databricks のデータ プレーン リソースは、vNet インジェクションを使用して Azure Virtual Network (VNet) にデプロイされます。 これらのリソースは、その VNet 内のサブネットにデプロイされます。 そのため、Databricks プラットフォームによって管理されるコントロール プレーンは、未承認のアクセスを防ぐデータ プレーンから分離されます。 コントロール プレーンはデータ プレーンと安全に通信してワークロードを管理しますが、すべてのデータ処理はネットワーク内に残ります。

    vNet インジェクションを使用すると、Azure のプライベート ネットワーク機能を使用して、構成、ルーティング、セキュリティを完全に制御できます。 たとえば、Azure Private Links を使用して、パブリック インターネットを使用せずにコントロール プレーンへの接続をセキュリティで保護できます。 ネットワーク セキュリティ グループ (NSG) を使用して、サブネット間のエグレス トラフィックとイングレス トラフィックを制御したり、Azure Firewall、NAT ゲートウェイ、またはネットワーク仮想アプライアンスを介してトラフィックをルーティングして検査と制御を行うことができます。 必要に応じて、VNet をオンプレミス ネットワークとピアリングすることもできます。

  • 承認と認証のメカニズムを実装します。 コントロール プレーンとデータ プレーンの両方で ID とアクセスの管理 を検討します。 Databricks ランタイムは、ジョブの実行中に独自のセキュリティ機能とアクセス制御を適用し、階層型セキュリティ モデルを作成します。 Unity カタログや Spark クラスターなどの Azure Databricks コンポーネントは Microsoft Entra ID と統合され、Azure の組み込みの RBAC ポリシーを使用したアクセス管理が可能になります。 この統合により、シングル サインオン、多要素認証、条件付きアクセス ポリシーなどを使用したエンタープライズ認証も提供されます。

    アーキテクチャが Databricks ネイティブ セキュリティに依存する場所と、それが Entra ID と交差する場所を理解することが重要です。 この二重層アプローチでは、個別の ID 管理とメンテナンス戦略が必要になる場合があります。

  • 保存データを暗号化する: Azure Databricks は Azure Key Vault と統合され、暗号化キーを管理します。 この統合ではカスタマー マネージド キー (CMK) がサポートされており、失効、監査、セキュリティ ポリシーへの準拠など、暗号化キーの操作を制御できます。

  • ワークロード シークレットを保護する: データ ワークフローを実行するには、多くの場合、データベース接続文字列、API キー、その他の機密情報などのシークレットを格納する必要があります。 Azure Databricks では、ソース コードやジョブから安全にアクセスできるシークレットをワークスペース内に格納するためのシークレット スコープがネイティブでサポートされています。

    シークレット スコープは Azure Key Vault と統合されているため、シークレットを参照して一元的に管理できます。 エンタープライズ チームでは、多くの場合、コンプライアンス、セキュリティ、およびポリシーの適用のために、Key Vault でサポートされるシークレット スコープが必要です。

  • セキュリティ監視を実装します。 Azure Databricks では、ログイン試行、ノートブック アクセス、アクセス許可の変更など、ワークスペース内の管理者アクティビティを表示できる監査ログがネイティブでサポートされています。 また、Unity カタログのアクセス ログでは、どのデータ、いつ、どのようにアクセスしたかが追跡されます。

    Azure Databricks では、これらのログを Azure Monitor で表示できます。

    セキュリティ分析ツール (SAT) は、Azure Databricks ワークスペースと完全に互換性があります。

推奨事項

勧告 メリット
VNet インジェクションを使用して Azure Databricks ワークスペースをデプロイし、ネットワークの分離を確立し、企業ネットワーク インフラストラクチャとの統合を有効にします。 カスタム ネットワーク セキュリティ グループ、ルート テーブル、サブネット委任を構成して、トラフィック フローを制御し、エンタープライズ セキュリティ ポリシーを適用します。 VNet インジェクションにより、クラスター ノードのパブリック インターネットへの公開がなくなり、カスタム ルーティングとファイアウォール規則を使用してきめ細かいネットワーク制御が提供されます。 オンプレミス ネットワークとの統合により、企業のセキュリティ標準への準拠を維持しながら、セキュリティで保護されたハイブリッド接続が可能になります。
ワークスペース アクセス用の多要素認証と条件付きアクセス ポリシーを使用して、Microsoft Entra ID シングル サインオン統合を構成します。 自動ユーザー プロビジョニングとグループ同期を有効にして、ID 管理を効率化し、エンタープライズ認証標準を適用します。 SSO 統合により、エンタープライズ認証システムを通じて一元化された ID 管理を提供しながら、パスワード関連のセキュリティ リスクが排除されます。

条件付きアクセス ポリシーは、ワークスペースへのアクセスを許可する前に、ユーザーの場所、デバイスのコンプライアンス、およびリスク要因を評価するコンテキスト対応のセキュリティ制御を追加します。 この階層化されたアプローチにより、認証関連のセキュリティの脆弱性が大幅に軽減され、ユーザー エクスペリエンスが向上します。
一元化されたメタストア構成を使用して Unity Catalog をデプロイし、すべての Azure Databricks ワークスペースで統一されたデータ ガバナンスを確立します。 カタログ、スキーマ、およびテーブル レベルのアクセス制御を使用して、定期的なアクセス許可監査を使用して階層型のアクセス許可構造を構成します。 Unity Catalog は、一貫性のないアクセス制御を排除し、複数のワークスペース間のセキュリティ ギャップを軽減する一元的なデータ ガバナンスを提供します。 きめ細かいアクセス許可により、最小限の特権アクセスが可能になりますが、監査ログではコンプライアンス要件とセキュリティ調査がサポートされます。
Azure Key Vault と自動キー ローテーション ポリシーの統合を使用して、ワークスペース ストレージ暗号化用 のカスタマー マネージド キーをアクティブ化します。 さまざまな環境に個別の暗号化キーを構成し、キー管理操作に適切なアクセス制御を実装します。 カスタマー マネージド キーは、暗号化キーのライフサイクル管理を完全に制御し、データ主権に関する規制コンプライアンス要件をサポートします。

環境間でのキーの分離により、セキュリティの露出が減少し、自動ローテーションポリシーによって運用上のオーバーヘッドなしで暗号化の衛生が維持されます。 このアプローチにより、FIPS 140-2 レベル 3 や共通基準標準などの厳格なコンプライアンス要件を満たすことができます。
ロールベースのアクセス制御を使用して資格情報を一元管理するための Azure Key Vault ベースのシークレット スコープ を確立します。 シークレット ローテーション ポリシーを実装し、ソース コードまたはクラスター構成に資格情報を格納しないようにします。 Key Vault の統合により、シークレット管理が一元化され、アクセス ログや自動ローテーション機能などのエンタープライズ レベルのセキュリティ制御が提供されます。 この方法では、外部システムとデータベースへの安全なアクセスを可能にしながら、コード ファイルと構成ファイルでの資格情報の公開を排除します。
信頼された企業ネットワークの許可専用ポリシーと既知の脅威ソースの拒否ルールを使用して 、IP アクセス リスト を作成します。 セキュリティ要件に基づいて、運用環境と開発環境に異なるアクセス ポリシーを構成します。 IP ベースのアクセス制御により、信頼されていないネットワークからの不正アクセスを防ぐ追加のセキュリティ層が提供され、攻撃対象領域が大幅に減少します。 環境固有のポリシーでは、ネットワーク ベースのアクセス制限のコンプライアンス要件をサポートしながら、適切なセキュリティ レベルが有効になります。
セキュリティで保護されたクラスター接続 (パブリック IP なし) を使用するようにすべてのクラスターを構成し、クラスター ノードへの SSH アクセスを無効にします。 承認されていないコードの実行を防ぐために、クラスター アクセス モードとランタイム セキュリティ機能を実装します。 セキュリティで保護されたクラスター接続により、コンピューティング ノードに対するパブリック インターネットの公開を排除しながら、クラスターのセキュリティを損なう可能性のある SSH への直接アクセスを防ぐことができます。 ランタイム セキュリティ機能は、クラスター環境内の悪意のあるコード実行や横移動攻撃に対する追加の保護を提供します。
ワークスペース接続用のパブリック インターネット転送を排除するために、コントロール プレーン アクセス用の Azure Private Link エンドポイント をデプロイします。 プライベート DNS ゾーンを構成し、シームレスなプライベート接続統合のための適切なネットワーク ルーティングを確保します。 Private Link を使用すると、すべての管理トラフィックが Azure のバックボーン ネットワーク内に留まるようにしながら、ワークスペース アクセスに対するパブリック インターネットの公開を排除できます。

プライベート接続により、機密性の高いワークロードのセキュリティが強化され、プライベート ネットワーク アクセスを要求するコンプライアンス要件がサポートされます。 この構成により、ワークスペースの完全な機能を維持しながら、インターネットベースの脅威にさらされるリスクが大幅に軽減されます。
HIPAA、PCI-DSS、または SOC 2 コンプライアンスを必要とする規制された環境に対して、 セキュリティとコンプライアンスの強化 アドオンをアクティブ化します。 自動セキュリティ更新プログラムを構成し、特定の規制フレームワークのコンプライアンス セキュリティ プロファイルを有効にします。 セキュリティとコンプライアンスの強化により、コンプライアンス セキュリティ プロファイル、自動セキュリティ更新プログラム、強化された監視機能など、特殊なセキュリティ制御が提供されます。

このマネージド アプローチにより、セキュリティ管理の運用オーバーヘッドを削減しながら、規制要件に継続的に準拠できます。 自動更新では、業務を中断したり、手動による介入を必要としたりすることなく、セキュリティ体制が維持されます。
Unity カタログ システム テーブルとワークスペース監査ログを通じた自動分析とアラートにより、監査ログ を有効にします。 ログ保持ポリシーを構成し、SIEM システムと統合して、一元的なセキュリティ監視とインシデント対応を実現します。 監査ログは、セキュリティ監視とコンプライアンス レポートのために、ユーザー アクティビティ、データ アクセス パターン、およびシステム変更を完全に可視化します。 SIEM システムとの統合により、一元化されたログ分析により、脅威検出の自動化と迅速なインシデント対応機能が可能になります。
個人用アクセス トークンではなく、API アクセスと自動ワークロード用 に OAuth 2.0 のマシン間認証 を構成します。 プログラムによる安全なアクセスを確保するために、適切なトークン スコープとライフサイクル管理を実装します。 OAuth 認証は、きめ細かいアクセス許可スコープを使用してセキュリティを強化し、個人用アクセス トークンと比較してトークン ライフサイクル管理を強化します。 このアプローチにより、プログラムによるワークスペース操作のための適切なアクセス制御と監査証跡を維持しながら、安全な自動化が可能になります。
異なる環境に個別のワークスペースをデプロイし、ネットワークセグメント化制御を確立することで、ワークスペース分離戦略を実装します。 環境固有のアクセス ポリシーとデータ境界を構成して、環境間のデータ アクセスを防ぎます。 ワークスペースの分離により、データ分離とアクセス制御のコンプライアンス要件をサポートしながら、環境間のデータ漏えいを防ぐことができます。 このアーキテクチャにより、セキュリティ インシデント時の爆発半径が減少し、リスク プロファイルに一致する環境固有のセキュリティ ポリシーが可能になります。
自動修復の推奨事項を使用して継続的なセキュリティ構成評価を行うセキュリティ 分析ツール (SAT) をデプロイします。 定期的なセキュリティ スキャンをスケジュールし、結果を CI/CD パイプラインに統合して、プロアクティブなセキュリティ管理を行います。 自動セキュリティ評価により、セキュリティのベスト プラクティスとコンプライアンス要件に対するワークスペース構成の継続的な監視が提供されます。

開発ワークフローとの統合により、運用環境に到達する前に誤った構成を特定して対処する、シフト左のセキュリティ プラクティスが可能になります。 このプロアクティブなアプローチにより、修復コストと運用の中断を最小限に抑えながら、セキュリティ リスクが大幅に軽減されます。
最小限の必要なアクセス許可で、自動化されたワークフローと CI/CD パイプラインの サービス プリンシパル認証 を構成します。 Azure Key Vault を使用して資格情報管理を実装し、証明書ベースの認証を有効にしてセキュリティを強化します。 サービス プリンシパル認証では、適切なアクセス制御と監査証跡を提供しながら、自動化されたプロセスのユーザー資格情報への依存関係を排除します。 証明書ベースの認証では、運用環境の自動化シナリオで適切な資格情報ライフサイクル管理をサポートしながら、クライアント シークレットと比較してセキュリティが強化されます。
データ転送を監視および制限するために、カスタム ルート テーブルとネットワーク セキュリティ グループを使用して 、VNet インジェクション を使用してネットワーク エグレス制御を確立します。 送信トラフィック パターンを検査および制御するように Azure Firewall またはネットワーク仮想アプライアンスを構成します。 ネットワーク エグレス制御は、トラフィックの監視と分析を通じてデータ移動パターンを可視化しながら、未承認のデータ流出を防ぎます。 カスタム ルーティングとファイアウォール検査を使用すると、セキュリティ侵害や内部関係者の脅威を示す可能性がある異常なデータ転送アクティビティを検出できます。
Azure Data Lake Storage アクセスの Microsoft Entra ID 資格情報パススルー をアクティブ化して、サービス プリンシパルの依存関係を排除します。 ユーザー固有のアクセス制御を構成し、Unity カタログ ガバナンス ポリシーからの適切なアクセス許可の継承を確認します。 資格情報のパススルーにより、データ アクセスのサービス プリンシパルを管理する複雑さがなくなり、エンタープライズ ID システムとのシームレスな統合が実現します。

ユーザー固有のアクセス制御により、データ アクセスのアクセス許可が組織のポリシーとジョブ機能と一致することが保証されます。 この方法により、データ レイク操作の強力なセキュリティ制御と監査機能を維持しながら、資格情報の管理が簡素化されます。
SSH 制限、カスタム イメージ スキャン、ランタイム セキュリティ 制御などの クラスターのセキュリティ強化 プラクティスを実装します。 承認された基本イメージを使用し、クラスター ポリシーと init スクリプトの検証によって、承認されていないソフトウェアのインストールを防止します。 クラスターのセキュリティ強化により、SSH の制限によって攻撃対象領域が減少し、クラスターのセキュリティを損なう可能性のある未承認のソフトウェアインストールが防止されます。 カスタム イメージ スキャンを使用すると、基本イメージがセキュリティ標準を満たすことができますが、ランタイム コントロールによって、クラスター環境内での悪意のあるコードの実行と横移動が防止されます。
CI/CD パイプラインと静的分析ツールおよび脆弱性スキャナーの統合を通じて、ソース コードとコード成果物の自動セキュリティ スキャンを実装する 自動セキュリティ スキャンを使用すると、運用環境に到達する前に、分析コードとインフラストラクチャ構成のセキュリティ脆弱性を早期に検出できます。

コストの最適化

コスト最適化の柱の目的は、 コストを管理して、提供される価値を最大化することです

コスト最適化の設計原則は、これらの目標を達成し、Azure Databricks アーキテクチャ内でトレードオフを行う高度な設計戦略を提供します。

ワークロード設計チェックリスト

コスト最適化の設計レビュー チェックリストに基づいて、設計戦略を開始します。 パフォーマンス要件を満たしながら、コストを継続的に監視および最適化するためのポリシーと手順を定義します。

  • コスト ドライバーを決定します。 理論上の容量計画は、多くの場合、過剰プロビジョニングと無駄な支出につながります。逆に、十分なリソースに投資しないことは危険です。

    ワークロードの動作に基づいてコストを見積もり、最適化の機会を求めます。 パイロット ワークロードを実行し、クラスターのパフォーマンスをベンチマークし、自動スケールの動作を分析します。 実際の使用状況データは、クラスターのサイズを適切に設定し、スケーリング ルールを設定し、適切なリソースを割り当てるのに役立ちます。

  • 支出に対する明確な説明責任を設定します。 複数の Azure Databricks ワークスペースを使用する場合は、特定のコストを担当するチームまたはプロジェクトを追跡することが重要です。 これには、リソース (クラスターやジョブなど) にプロジェクトまたはコスト センターの情報をタグ付けし、チャージバック モデルを使用して使用量ベースのコストをチームに割り当て、予算管理を設定して支出を監視および制限する必要があります。

  • 適切なレベルを選択します。 開発および基本的な運用ワークロードに提供する Standard レベルを使用することをお勧めします。ほとんどの分析ワークロードの中心となる Unity カタログなどのセキュリティ機能を提供するため、運用ワークロードの Premium レベル。

  • サーバーレス コンピューティングと VM のどちらかを選択します。 サーバーレスの場合は、使用した分 (従量課金制) に対してのみ課金されます。 サーバーレスは、自動的にスケーリングされ、運用オーバーヘッドが削減されるため、バースト性の高いワークロードまたはオンデマンド ジョブに推奨されます。 インフラストラクチャを管理したり、アイドル時間の支払いをしたりする必要はありません。

    予測可能または安定した使用量の場合は、VM ベースのクラスターを選択します。 これにより、より詳細な制御が可能になりますが、オーバープロビジョニングを回避するために運用管理とチューニングが必要になります。 長期使用が確実な場合は、予約容量を使用します。 Databricks Commit Units (DBCU) は、使用コミットメントと引き換えに割引を提供する前払いの使用契約です。

    過去の傾向を分析し、将来の需要を予測して最適な選択を行ってください。

  • クラスターの使用率を最適化する: クラスターが不要になったときにクラスターを自動的にスケーリングしてシャットダウンすることで、Azure Databricks のコストを削減します。

    予算でクラスター プールが許可されているかどうかを評価します。 クラスターの開始時刻を短縮できますが、使用していない場合でもインフラストラクチャ コストが発生するアイドル 状態のリソースです。

    スケールダウンされた構成を使用して、開発/テスト環境のコストを節約します。 不要なリソースの作成を回避するために、チーム間のクラスター共有を奨励します。 自動終了ポリシーを適用して、アイドル状態のクラスターのプロビジョニングを解除します。

  • ワークロードごとにコンピューティングを最適化します。 ワークロードによって必要なコンピューティング構成が異なります。 より高いメモリと処理能力が必要なジョブもあれば、低コストの軽量ジョブを実行するジョブもあります。 適切なジョブに適切なクラスターを使用します。

    すべてに同じ大きなクラスターを使用する代わりに、各ジョブに適切なクラスターを割り当てます。 Azure Databricks を使用すると、各ワークロードに合わせてコンピューティング リソースを調整できるため、コストの削減とパフォーマンスの向上に役立ちます。

  • ストレージ コストを最適化する: 大量のデータを格納すると、コストが高くなる可能性があります。 Delta Lake の機能を使用してコストを削減してみてください。 たとえば、データ圧縮を使用すると、多数の小さなファイルを少数の大きなファイルにマージして、ストレージのオーバーヘッドを削減し、クエリを高速化できます。

    古いデータの管理に熱心に取り組む。 保持ポリシーを使用して、古いバージョンを削除できます。 さらに、アクセス頻度の低い古いデータをより安価なストレージ層に移動できます。 必要に応じて、時間ベースの削除や階層化ルールなどのライフサイクル ポリシーを自動化すると、データの価値が低下した際にアーカイブや削除を行い、ストレージを効率的に保つのに役立ちます。

    ストレージ形式や圧縮設定が異なると、使用される領域の量が減る場合もあります。

  • データ処理手法を最適化する: 大量のデータを処理する場合、コンピューティング、ネットワーク、クエリに関連するコストがあります。 コストを削減するには、クエリのチューニング、データ形式の選択、Delta Lake とコードの最適化のための戦略の組み合わせを使用します。

    • データ移動を最小限に抑えます。 データ処理パイプラインを評価して、不要なデータ移動と帯域幅のコストを削減します。 変更されていないデータを再処理しないように増分処理を実装し、キャッシュを使用して頻繁にアクセスされるデータをコンピューティング リソースの近くに格納します。 コネクタが外部データ ソースにアクセスしたり、外部データ ソースと統合したりする際のオーバーヘッドを軽減します。

    • 効率的なファイル形式を使用します。 Zstandard のような Databricks にネイティブな Parquet や圧縮アルゴリズムなどの形式は、移動されるデータが少ないため、読み取り時間が短縮され、データ コストが削減されます。

    • クエリを効率的にします。 テーブル全体のスキャンを避けて、コンピューティング コストを削減します。 代わりに、一般的なフィルター列に基づいて Delta テーブルをパーティション分割します。 ネイティブ機能を使用してコンピューティング時間を短縮します。 たとえば、CatalystOptmzer やアダプティブ クエリ実行 (AQE) などのネイティブ Spark 機能は、実行時に結合とパーティション分割を動的に最適化します。 Databricks Photon エンジンにより、クエリの実行が高速化されます。

    • 競合コンシューマー、Queue-Based 負荷平準化、コンピューティング リソース統合などのコード最適化設計パターンを Azure Databricks 環境内で適用します。

  • 消費量を監視する: Databricks Unit (DBU) は、コンピューティングの使用状況に基づく抽象化された課金モデルです。 Azure Databricks では、クラスター、ランタイム時間、およびその他のコンポーネントに関する使用状況メトリックを可視化する詳細情報が提供されます。 そのデータを予算計画および原価管理に使用します。

  • 自動支出ガードレールを使用する: リソースの過剰な使用と効率的な使用を回避するには、リソースの使用を禁止または規制するポリシーを適用します。 たとえば、作成できるクラスターの種類を確認し、クラスターのサイズまたはその有効期間を制限します。 また、許可された予算境界に近いリソース使用量の通知を受け取るようにアラートを設定します。 たとえば、ジョブが突然 10 個×多くの DBU を消費し始めた場合、スクリプトは管理者に警告したりシャットダウンしたりできます。

    Databricks システム テーブルを利用して、クラスターの使用状況と DBU の使用量を追跡します。 テーブルに対してクエリを実行して、コストの異常を検出できます。

推奨事項

勧告 メリット
汎用クラスターではなく、スケジュールされたワークロード用に ジョブ クラスター をデプロイして、アイドル状態のコンピューティング コストを排除し、ジョブの完了時に自動終了を構成します。 ジョブ クラスターでは、ジョブの完了後の自動終了によって最大 50% コストが削減され、コンピューティング時間と実際の処理要件を正確に一致させることで DBU 消費量が最適化されます。
ワークロード分析に基づいてノードの最小と最大の制限を慎重に構成して クラスターの自動スケーリングを 有効にして、ベースラインの負荷とピーク需要の要件を処理します。

ワークロードの変化に迅速に対応するようにスケーリング ポリシーを構成すると同時に、不必要にコストを増加させる可能性のある不要なスケーリングの振動を回避できます。
自動スケールでは、ピーク時にパフォーマンス レベルを維持しながら、需要の低い期間中はリソースを自動的に削減しながら、固定サイズのクラスターと比較して、オーバープロビジョニング コストを 20 から 40% 削減します。
使用パターンに基づいて適切なタイムアウト期間 (開発環境では通常 30 ~ 60 分) を使用して、すべての対話型クラスターの 自動終了 を構成します。 自動終了により、ユーザーの生産性に影響を与えることなく、対話型クラスターのコストが 60 から 80% 削減され、夜間または週末に実行されるクラスターのコストが削減されます。
対話型 SQL ワークロードに サーバーレス SQL ウェアハウス を導入し、インフラストラクチャ管理のオーバーヘッドを排除し、従量課金を通じてコストを最適化します。

コンカレンシー要件に基づいて適切なサイズ設定を構成し、非アクティブ期間中のコストを最小限に抑える自動停止機能を有効にします。

組み込みの Photon アクセラレーション機能を活用して、パフォーマンスとコスト効率を向上させるために、従来の SQL エンドポイントからサーバーレス SQL ウェアハウスに移行します。
サーバーレス SQL ウェアハウスは、アイドル時間コストを排除する使用量ベースの課金によって、常時接続クラスターと比較して、SQL ワークロードのコストを 30 から 50% 削減します。

組み込みの Photon アクセラレーションにより、最大 12 倍のパフォーマンス向上が実現すると同時に、対話型分析シナリオに対して予測可能なクエリごとのコストが提供されます。
頻繁に使用される構成用の クラスター プール を実装して、起動時間を短縮し、使用パターンと需要予測に基づいてリソース割り当てを最適化します。 クラスター プールは、アイドル状態のプール インスタンスに対する DBU 料金を排除しながら、起動時間を数分から数秒に短縮し、開発チームにコスト効率の高いリソース プロビジョニングを提供します。
OPTIMIZE コマンド、Z-ORDER クラスタリング、VACUUM 操作などの Delta Lake 最適化機能 を使用して、ストレージ コストを削減し、クエリパフォーマンスを向上させます。

通常の最適化ジョブをスケジュールして、小さなファイルを圧縮し、データ保持ポリシーを実装し、データ アクセス パターンに基づいて圧縮設定を構成します。
Delta Lake の最適化により、データの圧縮と効率的な圧縮によってストレージ コストが 40 から 60% 削減され、ファイル スキャン要件を減らすことでクエリのパフォーマンスが向上します。
インスタンスの種類を制限し、自動終了設定を適用することで、すべてのワークスペースとチームにコスト効率の高い構成を適用する コンピューティング ポリシー を実装します。

さまざまなレベルの制限とコスト属性用の適切なタグを使用して、開発、ステージング、運用環境用に異なるポリシー テンプレートを作成します。
コンピューティング ポリシーは、オーバープロビジョニングを防ぎ、ガバナンスを維持しながらコスト最適化標準への準拠を確保することで、平均クラスター コストを 25 から 35% 削減します。
Databricks システム テーブルAzure Cost Management 統合を使用してコストを監視し、DBU の消費パターンと支出の傾向を可視化します。

ワークスペース、ユーザー、ジョブ、クラスターの種類別の使用状況を追跡する自動コスト レポート ダッシュボードを実装し、プロアクティブな管理のためにコスト アラートを構成します。

Unity カタログ システム テーブルを使用して、詳細な使用パターンを分析し、実際のリソース消費量に基づいてさまざまなチームとプロジェクトのチャージバック モデルを作成します。
包括的なコスト監視は、DBU の消費パターンを可視化し、詳細な使用状況分析とタグ付け戦略を通じて正確なコスト属性を実現します。 Azure Cost Management との統合により、組織全体のコスト ガバナンスが可能になり、チーム全体でアカウンタビリティを確立し、より責任あるリソース使用パターンを実現できます。
Databricks Commit Units (DBCU) を通じて Databricks の予約容量 を購入し、安定した使用パターンと最適なコミットメント条件で予測可能なワークロードを実現します。 予約容量は、DBCU を通じてコストを 20 から 40% 削減し、従量課金制の価格と比較して、安定した運用ワークロードに対して 1 年から 3 年間の期間にわたってコストの予測可能性を提供します。
ETL パイプラインのジョブ クラスターや ML トレーニング用の GPU インスタンスなど、さまざまなユース ケースに適した コンピューティングの種類 を選択して、ワークロード固有のコンピューティング構成を最適化します。

すべてのシナリオで汎用構成を使用するのではなく、インスタンスの種類とクラスター構成を特定のワークロード要件に一致させます。
ワークロード固有の最適化では、オーバープロビジョニングを排除し、特定のユース ケース用に最適化された特殊なコンピューティングの種類を活用することで、1 サイズに適合するアプローチと比較して、コストを 30 から 50% 削減できます。
VACUUM コマンド、ログ ファイルの保持、ビジネス要件に基づくチェックポイント管理など、スケジュールされたクリーンアップ操作を使用して、自動化されたデータ ライフサイクル ポリシーを実装します。 自動化されたライフサイクル管理により、不要なデータ バージョン、ログ、一時ファイルを体系的に削除しながら、ストレージの肥大化を防ぎ、ストレージ コストを 50 から 70% 削減できます。
開発およびテスト環境には Standard レベル を使用し、高度なセキュリティ機能とコンプライアンス認定を必要とする運用環境のワークロードにのみ Premium レベルを適用します。 戦略的階層の選択では、高度なセキュリティ機能が必要ない非運用ワークロードに Standard レベルを使用することで、ライセンス コストを最大 30% 最適化します。

RBAC や監査ログなどの Premium レベルの機能は、ビジネス要件とセキュリティ ポリシーによって追加コストの投資が正当化される場合にのみ適用されます。
アドホック分析と試験的なワークロードに対して予測できないスケジュール パターンまたはリソース要件を持つ、可変ワークロードと断続的なワークロードに 対してサーバーレス ジョブ を実装します。

使用パターンを予測して自動最適化機能を活用するのが困難なバッチ処理ジョブ用にサーバーレス コンピューティングを構成します。

使用状況分析とコストメリットの評価に基づいて、従来のクラスターからサーバーレス コンピューティングに適切なワークロードを移行し、リソース使用率を最適化します。
サーバーレス ジョブでは、アイドル時間のコストを削減し、可変リソース要件に対する自動最適化を提供し、予測できないワークロードに対してコストを 40 から 60% 削減します。

使用量ベースの課金モデルを使用すると、実際に使用されたコンピューティング時間に対してのみ料金が支払われるので、リソースの自動最適化を使用した開発環境や散発的な運用ワークロードに最適です。
Azure Cost Management と Databricks の使用状況監視 を使用してコスト アラートと予算を構成し、複数のアラートしきい値でプロアクティブなコスト管理を有効にします。

さまざまな利害関係者グループのエスカレーション手順を設定し、定期的な予算レビューを使用して、重要なコスト超過に対する自動応答を実装します。
プロアクティブなコスト監視により、コストの異常と予算超過を早期に検出し、驚きの費用を防ぎ、コストが予算に大きく影響する前にタイムリーな介入を可能にします。
データ形式を最適化し、 フォトンアクセラレーション を有効にして、列形式のストレージ形式と圧縮アルゴリズムを使用した効率的なデータ処理によってコンピューティング時間を短縮できます。

データ スキャン要件を最小限に抑え、サポートされているワークロードの Photon アクセラレーションを有効にして、ベクター化されたクエリ実行を活用するパーティション分割戦略を実装します。
データ形式の最適化と Photon アクセラレーションにより、列形式ストレージの最適化とベクター化されたクエリ実行機能により、コンピューティング時間とコストが 30 から 50% 削減されます。

これらの最適化により、データ 量の増加に伴う時間の経過と同時に複雑になり、アーキテクチャの変更を必要とせずに、分析ワークロードや複雑なデータ処理パイプラインのコスト上のメリットが高まります。

オペレーショナル エクセレンス

オペレーショナル エクセレンスは主に、開発プラクティス、可観測性、リリース管理の手順に重点を置いています。 オペレーショナル エクセレンス設計原則、ワークロードの運用要件に対してこれらの目標を達成するための高度な設計戦略を提供します。

ワークロード設計チェックリスト

Azure Databricks に関連する監視、テスト、デプロイのプロセスを定義するための オペレーショナル エクセレンスの設計レビュー チェックリスト に基づいて、設計戦略を開始します。

  • 監視データの収集: Azure Databricks ワークロードでは、クラスターの正常性、リソースの使用状況、ジョブとパイプライン、データ品質、アクセス アクティビティなどの主要な領域の追跡に重点を置きます。 これらのメトリックを使用して分析情報を取得し、システムが期待されるパフォーマンスで機能を提供することを確認します。 また、データとリソースへのアクセス方法と使用方法を監査し、ガバナンスを適用するためにも使用できます。

    • クラスターを監視します。 Azure Databricks クラスターを監視する場合は、パフォーマンスと効率を反映するインジケーターに焦点を当てます。 クラスターの全体的な正常性を追跡し、CPU、メモリ、ディスクなどのリソースがノード間でどのように使用されているかを確認します。

    • ジョブとパイプラインを監視する: 実行フローを反映するメトリックをキャプチャします。 これには、ジョブの成功率と失敗率の追跡、実行時間が含まれます。 また、ジョブのトリガー方法に関する情報を収集して、実行コンテキストを明確にします。

      Databricks システム テーブルを使用すると、ジョブの状態、依存関係チェーン、スループットをキャプチャするネイティブな方法が提供されます。

    • データ ソースの接続を監視します。 外部システムとの統合と依存関係を監視します。 これには、データ ソースの接続状態のキャプチャ、API の依存関係の追跡、サービス プリンシパルの認証動作の監視が含まれます。 Unity カタログを使用して外部の場所を管理および監視し、潜在的なアクセスまたは構成の問題を特定できます。

    • データ品質の監視: データの整合性と鮮度の両方を検証するシグナルを収集します。 これには、自動ローダーなどのツールを使用したスキーマの進化に関する問題の監視、完全性チェック、null 値検出、異常識別を行うルールの実装が含まれます。 Lakeflow 宣言パイプラインを使用して、データ処理中に組み込みの品質制約を適用できます。

      さらに、Unity カタログを使用してデータ系列をキャプチャすると、システム間でデータがどのように流れ、変換されるかを追跡し、パイプラインの透明性と説明責任を提供できます。

    Azure Databricks の組み込みの監視ツールは、Azure Monitor と統合されています。

  • 自動化された反復可能なデプロイ資産を設定します 。コードとしてのインフラストラクチャ (IaC) を使用して、Azure Databricks リソースを定義および管理します。

    リージョンの選択、ネットワーク、アクセス制御など、ワークスペースのプロビジョニングを自動化して、環境間の一貫性を確保します。 クラスター テンプレートを使用してコンピューティング構成を標準化し、構成ミスのリスクを軽減し、コストの予測可能性を向上させます。 また、JSON ARM テンプレートなどの形式を使用してジョブとパイプラインをコードとして定義し、バージョン管理され再現可能になります。

    Databricks アセット バンドルを使用して、適切な分岐戦略とロールバック 手順を使用して、Git リポジトリのノートブックのソース コード、ジョブ構成、パイプライン定義、インフラストラクチャ設定のバージョン管理を行います。

  • デプロイを自動化する: Azure Databricks の CI/CD パイプラインを使用して、パイプライン、ジョブ構成、クラスター設定、Unity カタログ資産のデプロイを自動化します。 変更を手動でプッシュする代わりに、バージョン管理用の Databricks Repos、パイプライン自動化用の Azure DevOps または GitHub Actions、コードと構成をパッケージ化するための Databricks アセット バンドルなどのツールを検討してください。

  • 定期的なタスクを自動化する: 一般的な自動化には、クラスターのライフサイクルの管理 (スケジュールされた開始/停止など)、ログのクリーンアップ、パイプラインの正常性の検証が含まれます。 Logic Apps や Functions などの Azure ツールと統合することで、チームは、失敗したジョブの再起動やクラスターのスケーリングなどの問題に自動的に対応する自己復旧ワークフローを構築できます。 この種の自動化は、ワークロードの増加に応じて信頼性の高い効率的な Azure Databricks 操作を維持するための鍵となります。

  • 強力なテストプラクティスがあります。 Azure Databricks 固有の戦略には、ノートブック コードの単体テスト、データ パイプラインの統合テスト、Lakeflow 宣言パイプライン ロジックの検証、Unity カタログでのアクセス許可テスト、インフラストラクチャデプロイの検証が含まれます。 これらのプラクティスは、問題を早期にキャッチし、運用インシデントを減らすのに役立ちます。

  • インシデントを処理する運用 Runbook を開発する:運用 Runbook は 、一般的な Azure Databricks シナリオを処理するための構造化されたステップ バイ ステップ ガイダンスを提供します。 これらの Runbook には、診断コマンド、ログの場所、エスカレーションの連絡先、推定解決時間の復旧手順が含まれており、チーム間で一貫した迅速なインシデント対応が可能になります。

  • バックアップと復旧の手順の開発:バックアップと復旧の手順 では、復旧時間と復旧ポイントの目標を満たす自動バックアップ スケジュールとリージョン間レプリケーションを使用して、ワークスペース構成、分析ソース コード、ジョブ定義、データ資産を保護することで、ビジネス継続性を確保します。

  • チームのコラボレーションとナレッジ管理を実装します。 チームコラボレーションプラクティスは、共有ワークスペース組織、ノートブックコラボレーション機能、ドキュメント標準を通じて Azure Databricks の生産性を最適化します。これにより、知識の転送を容易にし、開発チーム間のプロジェクトの重複を減らすことができます。

推奨事項

勧告 メリット
Azure Databricks ワークスペースの 診断設定 を構成して、プラットフォーム ログ、監査ログ、クラスター イベントを Azure Monitor Log Analytics ワークスペースに送信します。

可観測性をカバーするために、ワークスペース、クラスター、アカウント、ジョブ、ノートブック、Unity カタログの監査ログなど、使用可能なすべてのログ カテゴリを有効にします。
Log Analytics のすべての Azure Databricks テレメトリを一元化し、トラブルシューティング、重要なイベントに関する自動アラート、コンプライアンス レポートのための高度な KQL クエリを有効にします。 プロアクティブな運用管理のために、ワークスペース アクティビティ、クラスターのパフォーマンス、およびデータ アクセス パターン全体で統一された可視性を提供します。
Azure Resource Manager テンプレート または Bicep ファイルとパラメーター化された構成を使用して Azure Databricks ワークスペースをデプロイし、一貫性のある環境プロビジョニングを実現します。

ワークスペースの設定、ネットワーク構成、Unity カタログの有効化、およびセキュリティ ポリシーをテンプレート定義に含め、開発、テスト、運用環境全体で標準化されたデプロイを確保します。
環境間の構成の誤差を排除し、バージョン管理された一貫性のあるインフラストラクチャ定義によってデプロイ エラーを減らします。

手動デプロイ プロセスと比較して、環境のプロビジョニングを 70% 高速化し、災害シナリオ時のワークスペースの自動再作成による迅速な復旧を実現します。
ソース管理と共同開発のために Databricks Repos を使用して、Azure Databricks ノートブックやその他のソース コードを Git リポジトリ と統合します。

Azure DevOps または GitHub Actions を使用して自動化された CI/CD パイプラインを構成し、適切なテストと承認ワークフローを使用して、ソース コードの変更、ジョブとパイプラインの構成、クラスター テンプレートを複数の環境にデプロイします。
バージョン履歴、ブランチ ベースのワークフロー、およびコードのマージ競合解決を使用した共同開発を可能にします。 すべての運用環境の変更の完全な監査証跡を維持しながら、自動テストとステージング リリースによってデプロイリスクを軽減します。
Azure Databricks クラスター メトリックと Azure Monitor データを使用して、自動化された クラスターの権利化 ソリューションをデプロイし、使用率パターンを分析し、最適なインスタンスの種類とサイズを推奨します。

CPU、メモリ、ジョブ キューのメトリックに基づいて自動スケール ポリシーを構成し、ワークロードの需要に応じてクラスターの容量を自動的に調整します。
クラスター リソースを実際のワークロード要件と自動的に照合することでインフラストラクチャ コストを最適化し、過剰プロビジョニングの無駄を防ぎます。 インテリジェントなリソース割り当てと自動スケーリングの決定により、コンピューティング コストを 30 から 50% 削減しながら、パフォーマンス SLA を維持します。

手動監視のオーバーヘッドを排除し、リソースの使用パターンと最適化の機会に関するデータドリブンの分析情報を使用して、プロアクティブな容量管理を可能にします。
Unity カタログ監査ログをアクティブ化して、Azure Databricks ワークスペース内のすべてのデータ アクセス操作、アクセス許可の変更、ガバナンス アクティビティを追跡します。

ログ保持ポリシーを構成し、Azure Sentinel またはサードパーティの SIEM ソリューションと統合して、自動化されたセキュリティ監視とコンプライアンス レポートを実現します。
SOX、HIPAA、GDPR などの規制コンプライアンス フレームワークに必要なデータ アクセス パターン、アクセス許可の変更、ガバナンス操作の完全な監査証跡を提供します。 一元化されたセキュリティ監視を使用して、脅威の検出と疑わしいデータ アクセス動作の調査を自動化できます。
データの検証とパイプラインの品質保証を自動化するために、データ品質の期待と監視ルールを使用して Lakeflow 宣言 型パイプラインを実装します。

パイプラインの信頼性とデータ整合性を維持するために、データ品質違反に対する期待しきい値、検疫ポリシー、自動アラートを構成します。
不適切なデータがダウンストリームに伝播するのを防ぐ宣言型ルールを使用してデータ品質検証を自動化し、手動による検証作業を 80%削減します。 透過的なデータ品質メトリックと、パイプラインの信頼性とデータ精度のビジネスの信頼性を維持する自動修復ワークフローを提供します。
Databricks REST API と Azure Automation Runbook を使用して、Azure Databricks ワークスペース成果物の自動バックアップ手順を確立します。

Azure Storage アカウントのバージョン管理されたストレージとリージョン間レプリケーションを使用して、分析ソース コンテンツ、ジョブ定義、クラスター構成、ワークスペース設定の定期的なバックアップをスケジュールします。
自動復元機能を使用して、誤った削除、構成の変更、またはワークスペースの破損から迅速に復旧できるようにします。 バージョン管理されたバックアップによってビジネス継続性を維持し、標準化されたバックアップと復元の手順を通じて、目標復旧時間を数日から数時間に短縮します。
プロジェクト コード、環境インジケーター、チームの所有権を含む名前付け規則を使用して、標準化された ワークスペース フォルダー階層 を作成します。

知識の共有とコラボレーションを容易にするために、適切なアクセス制御を使用して、共通のライブラリ、テンプレート、ドキュメントの共有フォルダーを実装します。
一貫性のあるワークスペース組織を通じて、プロジェクトの検出可能性が向上し、新しいチーム メンバーのオンボード時間が短縮されます。 チーム間での作業の重複を排除する共有コード ライブラリと標準化されたプロジェクト構造を使用して開発を加速します。
Azure Databricks ワークスペース、クラスター、コンピューティング リソースのリソース タグ付け戦略を使用して Azure Cost Management を構成します。

コスト アラート、予算しきい値、自動レポートを実装して、チャージバック機能と最適化の推奨事項を使用して、プロジェクト、チーム、環境全体の支出を追跡します。
詳細な支出分析と自動予算監視を通じて、組織単位全体できめ細かなコストの可視性とアカウンタビリティを提供します。 予算超過を防ぎ、最適化の機会を特定する支出アラートと使用パターンの分析情報を使用して、プロアクティブなコスト最適化を実現します。

詳細なリソース使用率レポートと、リソース タグに基づく自動コスト センター割り当てを使用して、正確なコスト割り当てとチャージバック プロセスをサポートします。
Azure Databricks と外部システム、データ ソース、および Azure サービスの統合用にサービス プリンシパル認証 を構成します。

可能な限りマネージド ID を実装し、Azure Key Vault 統合を使用して資格情報ローテーション ポリシーを確立し、安全で自動化された認証管理を実現します。
共有資格情報のセキュリティ リスクを排除し、手動による介入なしで自動認証を有効にします。 監査証跡を使用して一元化された資格情報管理を提供し、最小限の特権のセキュリティ原則に合わせたきめ細かなアクセス制御ポリシーをサポートします。
組織のガバナンス標準を適用するために、自動化された終了スケジュール、アイドル タイムアウト構成、およびリソース使用量の制限を使用して 、クラスター ライフサイクル ポリシー を確立します。

リソースの無駄を防ぎ、コンプライアンスを確保するために、ポリシーベースのクラスター作成の制限、インスタンスの種類の制限、および最大ランタイム制御を構成します。
自動化されたクラスター ライフサイクル管理によってコンピューティング コストを 40 から 60% 削減し、リソースの無駄がアイドル状態または忘れ去られたクラスターを防ぎます。 正当なユース ケースに対する運用上の柔軟性を維持しながら、すべてのユーザーとチームに組織のポリシーを一貫して適用します。
クラスターの障害、ジョブの実行エラー、ワークスペースの容量制限、Unity カタログのアクセス違反など、重要な Azure Databricks 操作に対する Azure Monitor アラート ルール をデプロイします。

エスカレーション手順を使用して自動通知ワークフローを構成し、ServiceNow や Jira などのインシデント管理システムと統合します。
ビジネス運用に影響を与える前に、重大な問題をリアルタイムで通知することで、事前対応型のインシデント対応を有効にします。

平均検出時間を数時間から分単位に短縮し、重大度レベルに基づいて適切なチーム メンバーに確実に通知する自動エスカレーション手順をサポートします。
開発、テスト、運用環境の分離を強制する ロールベースのアクセス制御 ポリシーを使用して、環境固有のワークスペース構成を実装します。

Unity カタログ のガバナンス規則、ネットワーク セキュリティ グループ、および各環境のセキュリティとコンプライアンスの要件に適したデータ アクセス許可を構成します。
運用データへの不正アクセスを防止し、強制されたセキュリティ境界を通じて重要な環境での偶発的な変更のリスクを軽減します。

開発アクティビティが運用システムに影響を与えず、環境の境界を越えてデータの整合性が維持されるようにすることで、規制コンプライアンスを維持します。

パフォーマンス効率

パフォーマンス効率とは、容量の管理により、負荷が増加してもユーザー エクスペリエンスを維持することです。 この戦略には、リソースのスケーリング、潜在的なボトルネックの特定と最適化、ピーク パフォーマンスの最適化が含まれます。

パフォーマンス効率設計の原則、予想される使用に対してこれらの容量目標を達成するための高度な設計戦略を提供します。

ワークロード設計チェックリスト

パフォーマンス効率 設計レビュー チェックリストに基づいて、設計戦略を開始します。 Azure Databricks の主要業績評価指標に基づくベースラインを定義します。

  • 容量計画を実行します。 ワークロードを分析し、リソースの使用状況を監視して、ワークロードに実際に必要なコンピューティングとストレージの量を決定します。 その分析情報を活用して、クラスターのサイズを最適化し、ジョブ スケジュールを効率化し、ストレージの増加を予測することで、プロビジョニングの不足を回避してリソースの制約を防ぎます。

  • ワークロードの特性に最適なコンピューティング構成を選択します 。サーバーレス オプションを評価します。このオプションにより、自動スケーリングが向上し、起動時間が短縮されます。 それらを従来のクラスターと比較して、最適な方法を選択します。

    クラスターの場合は、データ ボリュームと処理パターンに基づいて、インスタンスの種類、サイズ、スケーリング設定などの構成を最適化します。 特定のユース ケースについて、インスタンス ファミリ間のトレードオフを分析してください。 たとえば、パフォーマンス要件に合わせて、メモリ最適化インスタンスとコンピューティング最適化インスタンス(ローカル SSD と Standard ストレージ オプション)を評価します。

    Spark クラスターでは、さまざまな種類のワークロードを実行できます。そのためには、独自のパフォーマンス チューニングが必要です。 一般に、ジョブの実行を高速化し、コンピューティングのボトルネックを回避する必要があります。 これらの目標を達成するために、Executor メモリ、並列処理、ガベージ コレクションなどの設定を微調整します。

    ワークロード に適したサービスを選択する 方法に関する追加のガイダンスについては、適切なサービスの選択に関する推奨事項を参照してください。

  • 重要なワークロードのリソース割り当てに優先順位を付けます。 同時に実行されているワークロードを分離し、優先順位を付けます。 リソース プール、クラスター プール、分離モード、ジョブ キューなどの機能を使用して、ジョブ間の干渉を回避します。 リソース クォータとスケジュール ルールを設定して、優先度の高いタスクがバックグラウンドプロセスまたは優先度の低いプロセスによって遅くなるのを防ぎます。

  • 可変ワークロードの自動スケールを構成します。 Azure Databricks で自動スケール ポリシーを設定するには、クラスターのスケーリングトリガー、ノードの追加または削除の速度、リソース制限を定義します。 これらの設定は、Azure Databricks が変化するワークロードに効率的に対応し、リソースの使用を最適化し、イベントのスケーリング中にパフォーマンスの問題を回避するのに役立ちます。

  • 効率的なデータストレージと取得メカニズムを設計する: 特に大量のデータに対するデータ集中型操作のパフォーマンス向上には、慎重な計画とチューニングが必要です。

    • 戦略的にデータを整理します。 Delta Lake テーブルを整理するときにクエリのパフォーマンスを最適化するデータ パーティション分割スキームを設計します。 適切なパーティション分割により、テーブル全体をスキャンするのではなく、Spark がクエリ中に関連するデータのサブセットのみを読み取るパーティションの排除が可能になります。

      ファイルのサイズ設定は重要な役割を果たします。ファイルが小さすぎると、過剰なメタデータ オーバーヘッドが発生し、Spark ジョブが遅くなりますが、大きすぎるファイルはメモリとパフォーマンスの問題を引き起こす可能性があります。

      ユーザーまたはジョブが通常データに対してクエリを実行する方法に合わせてデータ レイアウトを調整する。 それ以外の場合は、テーブル全体のスキャンによってパフォーマンスが低下する可能性があります。

    • 効果的なキャッシュを実装します。 ホット データセットのキャッシュを使用し、キャッシュ ヒット率を監視して、メモリを不必要に使用しないようにします。 Spark には組み込みのキャッシュ メカニズムが用意されており、Azure Databricks には Delta Cache が用意されており、ノード間でディスク レベルでデータをキャッシュすることでさらに最適化されます。

    • 効率的なクエリを記述します。 不要なデータ スキャン、過剰なシャッフル、実行時間の長さを回避します。これらはすべてパフォーマンスの非効率性に寄与します。

      クエリ プラン分析を利用して実行効率を向上させる適切なインデックス作成、述語プッシュダウン、プロジェクション プッシュダウン、結合の最適化手法を使用して、SQL クエリと Spark 操作を最適化します。

      Azure Databricks には、いくつかの組み込みの最適化が用意されています。 Catalyst オプティマイザーは効率のためにクエリを書き換えますが、アダプティブ クエリ実行 (AQE) は実行時にプランを調整してデータ スキューを処理し、結合を改善します。 テーブル統計、Z オーダー クラスタリング、ブルーム フィルターなどの Delta Lake 機能により、スキャンされるデータがさらに削減され、より高速でコスト効率の高いクエリが実現します。

    • 適切なデータ形式と圧縮を選択します。 パフォーマンスを損なうことなくストレージを削減し、読み取りを高速化する Parquet やスマート圧縮アルゴリズム (ZSTD など) などの形式を選択します。

  • ネットワークと I/O のパフォーマンスを最適化する: 高パフォーマンスのストレージ オプション (Premium や SSD ベースのストレージなど) を選択し、格納場所の近くでデータを処理してデータ移動を最小限に抑えるようにアーキテクチャを設計します。

    さらに、書き込みのバッチ処理や不要なシャッフルの回避など、効率的なデータ転送戦略を使用してスループットを最大化し、待機時間を短縮します。

  • ワークロードの種類に基づいてジョブの実行を最適化する:. 特定のニーズに合わせて最適化戦略を調整する 例:

    • ストリーム処理: リアルタイム データ パイプラインには、低待機時間と高スループットのパフォーマンスが必要です。 Azure Databricks では、これはトリガー間隔、マイクロバッチ サイズ、透かし、チェックポイント処理などのパラメーターのチューニングを意味します。 構造化ストリーミングやスキーマの進化、厳密な一度限りの処理を含むDelta Lakeの機能を使用すると、負荷が変動する中で一貫した処理を実現できます。
    • 機械学習: ML のトレーニングジョブと推論ジョブは、多くの場合、コンピューティング集中型です。 分散トレーニング、GPU アクセラレーション、効率的な特徴エンジニアリング パイプラインを使用して、パフォーマンスを向上させることができます。 Azure Databricks では、MLflow、ML 用 Databricks Runtime、Horovod などのツールとの統合による ML パフォーマンス チューニングがサポートされています。 リソース構成をチューニングし、データの前処理の最適化を適用すると、トレーニング時間と推論の待機時間を大幅に短縮できます。

    Lakeflow 宣言型パイプラインを使用すると、これらの最適化に関する推奨事項の実装が簡略化され、自動化されます。

  • 監視システムを使用して、パフォーマンスのボトルネックを特定します。包括的なパフォーマンス監視を実装して、ジョブ、クラスター、クエリのパフォーマンスを可視化し、コストを増やし、ワークロードを遅くするボトルネックや非効率性を特定します。

    CPU とメモリの使用量、ジョブの実行時間、クエリの待機時間、クラスターの正常性などの主要なメトリックの異常を分析します。 これにより、低下した Spark 構成、最適化されていないクエリ、プロビジョニング不足/過剰なクラスターのいずれが原因であるかに関係なく、速度低下を特定できます。

    Spark UI などの組み込みツールを使用してクエリ プランとジョブ ステージを分析し、Azure Monitor を使用してインフラストラクチャ レベルのメトリックを追跡し、カスタム メトリックまたはログを使用して詳細な分析情報を得ることができます。 これらのツールはプロアクティブ チューニングをサポートしているため、ユーザーまたは重要なパイプラインに影響を与える前に問題を修正できます。

  • 体系的なパフォーマンス テストを実施する: ロード テスト、ストレス テスト、ベンチマークを使用して、実行時間、リソースの使用状況、システムの応答性を検証します。 パフォーマンス ベースラインを確立し、CI/CD パイプラインに自動テストを組み込むことで、速度低下を早期に検出し、最適化の影響を測定できます。

推奨事項

勧告 メリット
広範なメモリ内キャッシュ、機械学習モデルのトレーニング、または複雑な分析操作を必要とする大規模なデータセットを処理するときに、E シリーズや M シリーズの VM などの メモリ最適化インスタンスの種類 を使用して Azure Databricks クラスターを構成します。

データセットのサイズと処理パターンに基づいてメモリ要件を評価し、最適なパフォーマンスを得るためにメモリと CPU の比率が高い十分なメモリ容量を提供する適切な VM サイズを選択します。
ジョブの失敗やパフォーマンスの大幅な低下を引き起こす可能性のあるメモリのボトルネックを排除し、大規模な機械学習トレーニングや複雑な分析ワークロードなどのメモリ集中型操作をスムーズに実行できるようにします。
ワークロード パターンとパフォーマンス要件に基づいて、適切な最小および最大ノード制限を使用して クラスターの自動スケール ポリシー を構成します。 ベースライン ワークロードを効率的に処理するように最小ノードを設定し、ランナウェイ コストを防ぐための上限を確立します。

CPU 使用率、メモリ使用量、またはジョブ キューの深さに基づいてスケーリング トリガーを定義し、応答性とコストの最適化のバランスを取るためにスケーリング速度を構成します。
需要変動時に一貫したパフォーマンスを維持しながら、ピーク期間中にスケールアップし、使用率の低い期間中にスケールダウンする自動リソース調整によってコストを最適化します。
Delta Lake テーブル で Z オーダーを使用して OPTIMIZE コマンド を実行し、データ クラスタリングとクエリのパフォーマンスを向上させます。 クエリで頻繁に使用されるフィルター条件と結合条件に基づいて Z オーダー列を選択します。通常は、WHERE 句、GROUP BY 操作、JOIN 述語で使用される列を含みます。

Azure Databricks ジョブまたは Lakeflow 宣言パイプラインを使用して定期的な最適化操作をスケジュールし、データの増加に合わせて最適なパフォーマンスを維持します。
データのスキップと I/O 操作の最小化によってクエリの実行時間を 3 ~ 10 倍短縮すると同時に、関連するデータをクラスタリングすることで達成される圧縮率の向上によってストレージ コストを削減します。

実際のクエリ パターンに合わせた定期的なメンテナンスとインテリジェントなデータ編成により、最適化の利点が時間の経過と共に組み合わされるため、パフォーマンスの累積的な向上が提供されます。
複数のクエリまたはジョブ間で同じデータセットに頻繁にアクセスするクラスター構成で デルタ キャッシュ を有効にします。 ローカル NVMe SSD ストレージを効果的に利用するようにキャッシュ設定を構成し、データセットの特性とアクセス パターンに基づいて適切なキャッシュ サイズの割り当てを確保します。

キャッシュ ヒット率を監視し、キャッシュ構成を調整して、特定のワークロードのパフォーマンス上の利点を最大化します。
低速のネットワーク ストレージをバイパスするインテリジェントな SSD ベースのキャッシュにより、頻繁にアクセスされるデータのクエリ パフォーマンスを 2 ~ 5 倍に高速化し、反復分析と機械学習ワークロードの待機時間を大幅に短縮します。
クラスター構成と SQL ウェアハウスで Photon エンジン を有効にして、ベクター化された実行によって SQL クエリと DataFrame 操作を高速化します。 Photon は、集計、結合、複雑な SQL 操作を使用して分析ワークロードに最も大きな利点を提供します。

データ エンジニアリング パイプライン、ビジネス インテリジェンス ワークロード、および大規模なデータセットを処理する分析アプリケーション用に Photon 対応のコンピューティング リソースを構成します。
ネイティブベクター化された実行を通じて SQL および DataFrame 操作のパフォーマンスを最大 12 倍向上させる一方で、処理効率の向上と実行時間の短縮によりコンピューティング コストを 2 ~ 3 倍削減します。

同じ時間制約内で大規模なデータセットの処理を可能にし、パフォーマンスを低下させることなくより多くの同時実行ユーザーをサポートし、システム全体のスループットを大幅に向上させます。
最大のデータセット サイズと処理の複雑さに基づいて、Executor あたり 2 から 8 GB の Spark Executor メモリ設定 とドライバー メモリを構成します。 並列処理とリソース効率のバランスを取るために、spark.executor.cores を Executor ごとに 2 ~ 5 コアに設定します。

リソース使用率を最大化しながらメモリ不足エラーを防ぐために、特定のワークロード特性、データ ボリューム、クラスター サイズに基づいてこれらの設定を調整します。
リソース割り当ての効率を最適化しながら、メモリの問題によるジョブエラーを防ぎ、適切に調整されたメモリ構成によって実行時間と不要なリソースの無駄の両方を削減します。
高い IOPS と低待機時間を必要とする Azure Databricks ワークロード用の Premium SSD パフォーマンス レベルで Azure Storage アカウントを構成します。 読み取り/書き込み操作を集中的に行うデータ レイク シナリオでは、Premium ブロック BLOB ストレージを使用します。

ネットワーク待機時間を最小限に抑えるために、ストレージ アカウントが Azure Databricks ワークスペースと同じリージョンにあることを確認します。
ストレージ操作に最大 20,000 IOPS とミリ秒未満の待機時間を提供し、データ集中型ワークロードのパフォーマンスを大幅に向上させ、ストレージ I/O のボトルネックを排除することでジョブの実行時間を短縮します。
クエリで一般的に使用されるフィルター列 (通常は時系列データの場合は日付列、ディメンション データの場合はカテゴリ列) に基づいてデータ のパーティション分割戦略 を設計します。 パーティションを 10,000 未満に制限し、各パーティションに少なくとも 1 GB のデータが含まれていることを確認することで、過剰なパーティション分割を回避します。

パーティションの排除に適したクエリ パターンを使用し、複数のパーティション候補を持つテーブルの液体クラスタリングを検討します。
効果的なパーティションの排除によってデータ スキャンを 80 から 95% 減らし、関連するデータ パーティションのみを処理することでクエリパフォーマンスを大幅に向上させ、コンピューティング コストを削減します。

テーブルの合計サイズではなく、フィルター処理されたデータ サイズで直線的にスケーリングする予測可能なクエリ パフォーマンスを有効にし、データセットがペタバイト規模に拡大するにつれて一貫した応答時間を維持します。
ストレージ効率とクエリ パフォーマンスの両方を最適化するために、分析ワークロードには、ZSTD または Snappy 圧縮で Parquet ファイル形式 を使用します。 ZSTD ではコールド データの圧縮率が向上し、Snappy では頻繁にアクセスされるデータセットの圧縮解除が高速化されます。

適切な圧縮レベルを構成し、アクセス パターンとストレージ コストに基づいて圧縮のトレードオフを評価します。
列形式のストレージ効率と最適化された圧縮によってクエリのパフォーマンスを向上させ、データ スキャンの高速化とネットワーク I/O の削減を実現しながら、ストレージ コストを 60 から 80% 削減します。
アドホック クエリと対話型分析を必要とするビジネス インテリジェンスと分析ワークロード用の サーバーレス SQL ウェアハウス をデプロイします。 コンカレンシー要件とクエリの複雑さに基づいて、適切なウェアハウス サイズ (2X-Small から 4X-Large) を構成します。

自動停止機能と自動再開機能を有効にして、エンド ユーザーのクエリの応答性を迅速に確保しながらコストを最適化します。
クラスター管理のオーバーヘッドをなくしながら、インスタント スケーリングと Photon 高速パフォーマンスを実現し、SQL ワークロードの従来のクラスターと比較して 2 ~ 3 倍の価格パフォーマンスを実現します。

手動による介入や構成のチューニングなしで、変化するワークロード パターンに適応する一貫した秒未満のクエリの起動時間と自動最適化を提供します。
Spark 構成で アダプティブ クエリ実行 (AQE) を有効にして、シャッフル パーティションの動的結合、動的結合戦略の切り替え、偏った結合の最適化などのランタイム最適化機能を活用します。

一般的なデータ ボリュームとクラスターの特性に基づいて、ターゲット シャッフル パーティション サイズや合体しきい値などの AQE パラメーターを構成します。
実際のデータ特性と実行パターンに適応するインテリジェントなランタイム最適化により、クエリのパフォーマンスを 20 から 50% 向上させ、小さなファイルやデータ スキューなどの一般的なパフォーマンスの問題に自動的に対処します。
最も一般的なクラスター構成と一致する事前ウォーミングされたインスタンスを使用してクラスター プール を作成し、対話型クラスターとジョブ クラスターの両方の起動時間を短縮します。

予想される同時使用パターンに基づいてプール サイズを構成し、ピーク時にアイドル 状態のインスタンスを維持して、開発チームとスケジュールされたジョブをすぐに利用できるようにします。
クラスターの起動時間を 5 ~ 10 分から 30 秒以下に短縮し、開発者の生産性を大幅に向上させ、時間の影響を受けやすいデータ処理ワークフローのジョブ実行を高速化します。
Azure Databricks ジョブを使用して通常の OPTIMIZE 操作 をスケジュールして、小さなファイルを圧縮し、クエリのパフォーマンスを向上させ、VACUUM コマンドを実行して期限切れのトランザクション ログと削除されたファイルをクリーンアップします。 データ インジェスト パターンに基づいて最適化の頻度を構成します。通常は、大量のテーブルでは毎日、更新頻度の低いテーブルの場合は毎週です。

テーブルの統計情報とファイル数を監視して、最適なメンテナンス スケジュールを決定します。
ファイルの急増とデータの断片化を防ぎ、不要なファイルのクリーンアップと圧縮率の向上によってストレージ コストを削減することで、データ ボリュームの増加に伴う一貫したクエリ パフォーマンスを維持します。

適切なメンテナンスなしでデータ レイクで一般的に発生する時間の経過に伴うパフォーマンスの低下を防ぎ、予測可能なクエリ応答時間と最適なリソース使用率を確保します。
待機時間の要件とデータ到着パターンに基づいて 構造化ストリーミング トリガー間隔を 構成します。1 秒未満の待機時間のニーズに対して連続トリガーを使用するか、バランスの取れたパフォーマンスを実現するために 1 ~ 10 秒間隔でマイクロバッチ トリガーを使用します。 高速ストレージを使用してチェックポイントの場所を最適化し、フォールト トレランスとパフォーマンス オーバーヘッドのバランスを取るために適切なチェックポイント間隔を構成します。 待機時間とスループットの最適なバランスを実現してリアルタイムのデータ処理を実現し、さまざまなデータ到着率を処理できる一貫したストリーム処理パフォーマンスを実現し、エンドツーエンドの待機時間を低く維持します。
ディープ ラーニング モデルのトレーニングと推論のワークロード用に、NC、ND、または NV シリーズの仮想マシンを使用して GPU 対応クラスター をデプロイします。 適切な GPU メモリ割り当てを構成し、分散トレーニング オーケストレーションに MLflow を使用します。

特定の機械学習ワークロードのメモリ容量とコンピューティング パフォーマンスの要件の両方を考慮して、モデルの複雑さとトレーニング データセットのサイズに基づいて GPU インスタンスの種類を選択します。
機械学習操作用に特別に設計された並列処理機能により、CPU 専用クラスターと比較してモデル トレーニングを 10 ~ 100 倍高速化し、トレーニング時間を大幅に短縮し、モデルの反復サイクルを高速化します。

Azure ポリシー

Azure には、Azure Databricks とその依存関係に関連する広範な組み込みポリシー セットが用意されています。 上記の推奨事項の一部は、Azure Policy を使用して監査できます。 たとえば、次のことを確認できます。

  • Azure Databricks ワークスペースでは、ネットワークのセキュリティと分離を強化するために VNet インジェクションを使用します
  • プライベート エンドポイントを使用する場合、Azure Databricks ワークスペースでパブリック ネットワーク アクセスが無効になります
  • Azure Databricks クラスターでは、保存データを保護するためにディスク暗号化が有効になっています
  • Azure Databricks ワークスペースでは、暗号化制御を強化するためにカスタマー マネージド キーを使用します
  • Azure Databricks ワークスペースでは、監視とコンプライアンスのために診断ログが有効になっています
  • Azure Databricks ワークスペースは、コンプライアンスのために承認済みの地理的リージョンにのみデプロイされます
  • エンタープライズ ワークロードでは、セキュリティとコンプライアンス機能を強化するために Azure Databricks Premium レベルを使用します
  • Azure Databricks ワークスペースでは、一元的なデータ ガバナンスのために Unity カタログが有効になっています

ガバナンスの詳細については、 Azure Databricks の Azure Policy 組み込み定義 と、分析プラットフォームのセキュリティに影響する可能性があるその他のポリシーを確認してください。

Azure Advisor の推奨事項

Azure Advisor は、Azure デプロイを最適化するためのベスト プラクティスに従うのに役立つ、パーソナライズされたクラウド コンサルタントです。

詳細については、 Azure Advisor に関するページを参照してください。

トレードオフ

柱のチェックリストのアプローチを使用する場合は、設計のトレードオフを行う必要がある場合があります。

パフォーマンスとコストのトレードオフを分析する

パフォーマンスとコストのバランスを適切に取り組むのが重要です。 あなたが過剰にプロビジョニングした場合、あなたはお金を無駄にします。プロビジョニングが不足している場合、ワークロードの速度が低下したり、失敗したりする可能性があります。 両方を回避するには、異なる構成をテストし、パフォーマンス ベンチマークを使用し、コスト分析を実行して、選択を導きます。

シナリオのアーキテクチャ

主要な推奨事項を示す基本的なアーキテクチャ: Azure Databricks を使用したストリーム処理