インフラストラクチャ
環境一覧
| 環境 | URL | 用途 |
|---|---|---|
| 本番(prd) | 未設定 | 本番サービス。Databricks Apps apps-survey-analysis-prd |
| ステージング(stg) | 未設定 | リリース前確認。Databricks Apps apps-survey-analysis-stg |
| 開発(dev) | https://sample-app-202510-96896088351718.aws.databricksapps.com/ | 開発環境。Databricks Apps apps-survey-analysis-dev |
| ローカル | http://localhost:5173 | ローカル開発(Vite dev server + uvicorn :8000) |
構成図
graph TD
Browser[ブラウザ]
Apps[Databricks Apps<br/>uvicorn: FastAPI + 静的SPA]
Warehouse[(SQL Warehouse)]
UC[(Unity Catalog<br/>cs.cs_dm)]
GH[GitHub]
Actions[GitHub Actions]
GitFolder[Databricks Git フォルダ]
Browser --> Apps
Apps -->|databricks-sql-connector<br/>OAuth M2M| Warehouse
Apps -->|databricks-sdk WorkspaceClient| UC
Warehouse --> UC
GH --> Actions
Actions -->|OIDC| GitFolder
GitFolder --> Apps
アプリは単一プロセスで動く。backend/main.py が backend/routes/ の router をすべて登録し、最後に catch-all GET /{full_path:path} で backend/static/index.html を返して SPA ルーティングを成立させる。
主要サービス一覧
| サービス名 | 用途 |
|---|---|
| Databricks Apps | アプリのホスティング。app.yaml の command で uvicorn を起動する |
| Databricks SQL Warehouse | 集計ビューへのクエリ実行。DATABRICKS_HTTP_PATH で指定 |
| Unity Catalog | データ本体(カタログ cs / スキーマ cs_dm)とメタデータの提供元 |
| Databricks Git フォルダ | /Workspace/survey_analytics/<env>/secure/internal/apps/databricks-apps-survey-analysis。デプロイ元 |
| GitHub Actions | main / stg / prd への push を契機にデプロイを実行 |
デプロイフロー
| ブランチ | デプロイ先 | タイミング |
|---|---|---|
main |
dev | 自動(push 時) |
stg |
stg | 自動(push 時) |
prd |
prd | 自動(push 時) |
GitHub Actions(.github/workflows/deploy.yml)は SP トークンではなく OIDC フェデレーション(DATABRICKS_AUTH_TYPE: github-oidc)で認証し、次の 2 ステップを実行する。
databricks repos update \
/Workspace/survey_analytics/<env>/secure/internal/apps/databricks-apps-survey-analysis \
--branch <branch>
databricks apps deploy apps-survey-analysis-<env> \
--source-code-path /Workspace/survey_analytics/<env>/secure/internal/apps/databricks-apps-survey-analysis/nodejs-fastapi-hello-world-app
つまりデプロイされるのは git に入っているファイルそのもの(ビルド済みの backend/static/ を含む)。
ローカルから手動でデプロイする場合は databricks bundle deploy -t dev を使う。ただし databricks.yml には現状 dev ターゲットしか定義されていない(stg / prd はコメントアウト)。