Databricks アプリのベスト プラクティス
このセクションでは、Databricks アプリを開発および実行するための重要なベスト プラクティスを示します。これらのガイドラインは、セキュリティ、パフォーマンス、およびプラットフォームの要件に焦点を当てています。
-
データ処理には Databricks ネイティブの機能を使用します 。App コンピュートは、UI レンダリング用に最適化されています。 クエリとデータセットには [ Databricks SQL ] を、バッチ処理には [ LakeFlow ジョブ] を、推論ワークロードの AI にはモデルサービングを使用します。
-
安全なコーディング手法に従ってください 。SQL クエリをパラメータ化してインジェクション攻撃を防ぎ、入力検証やエラー処理などの一般的な安全な開発ガイドラインを適用します。安全なクエリの実行方法については、 ステートメント実行 API を参照してください。
-
グレースフル シャットダウン処理を実装します 。アプリは、
SIGTERM
シグナルを受信してから 15 秒以内にシャットダウンするか、SIGKILL
で強制的に終了する必要があります。 -
特権操作は避けてください 。アプリは特権のないユーザーとして実行され、ルート アクセスなどの昇格されたアクセス許可を必要とするアクションを実行できません。
-
プラットフォーム管理型ネットワーキングを理解する 。リクエストはリバースプロキシ経由で転送されるため、アプリはリクエストの発信元に依存することはできません。Databricks は TLS ターミネーションを処理し、アプリは HTTP/2 クリアテキスト (H2C) をサポートする必要があります。カスタム TLS 処理を実装しないでください。
-
正しいホストとポートにバインドします 。アプリは
0.0.0.0
でリッスンし、DATABRICKS_APP_PORT
環境変数で指定されたポートを使用する必要があります。詳細については、 環境変数 を参照してください。 -
コンテナの起動時間を最小限に抑えます 。初期化ロジックを軽量にして、コールドスタートのレイテンシを短縮します。スタートアップ中に大きな依存関係のインストールや外部 API 呼び出しなどの操作をブロックしないようにします。必要な場合にのみ、重いリソースをロードします。
-
stdout と stderr にログを記録します 。Databricks は、標準出力ストリームとエラー ストリームからログをキャプチャします。これらをすべてのログに使用して、ログが Databricks UI に表示されるようにします。ローカルファイルへのログの書き込みは避けてください。
-
予期しないエラーを適切に処理します 。グローバル例外処理を実装して、キャッチされないエラーによるクラッシュを防ぎます。スタックトレースや機密データを公開せずに、適切なHTTPエラー応答を返します。
-
ピン留め 依存関係のバージョン .
requirements.txt
ファイルで正確なバージョン番号を使用して、ビルド間で一貫した環境を確保します。ピン留めされていないパッケージや最新バージョンのパッケージの使用は避けてください。 -
ユーザー入力を検証し、サニタイズします 。内部向けアプリであっても、常に受信データを検証し、サニタイズして、インジェクション攻撃や不正な形式の入力を防ぎます。
-
負荷の高い操作には、メモリ内キャッシュを使用します 。クエリ結果や API 応答など、頻繁に使用されるデータをキャッシュして、レイテンシを減らし、冗長な処理を回避します。
functools.lru_cache
、cachetools
、または同様のライブラリを使用し、マルチユーザー アプリではキャッシュのスコープを慎重に設定します。