> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sifi.life/llms.txt
> Use this file to discover all available pages before exploring further.

# DABs 배포

> 이 문서는 **[Databricks Apps](/blog/guides/apps/overview)** 섹션의 일부입니다.

**Databricks Asset Bundles (DABs)** 를 사용하면 앱을 Infrastructure as Code로 관리하고, CI/CD 파이프라인과 통합할 수 있습니다.

***

## DABs 프로젝트 구조

```bash theme={null}
my-app-bundle/
├── databricks.yml          # Bundle 설정 파일
├── src/
│   ├── app.py              # 앱 코드
│   ├── app.yaml            # 앱 런타임 설정
│   └── requirements.txt    # 의존성
└── resources/
    └── my_app.yml           # 앱 리소스 정의
```

***

## databricks.yml 예시

```yaml theme={null}
bundle:
  name: my-dashboard-app

workspace:
  host: https://<workspace-url>

targets:
  dev:
    mode: development
    default: true
    workspace:
      host: https://<dev-workspace-url>

  prod:
    mode: production
    workspace:
      host: https://<prod-workspace-url>

include:
  - resources/*.yml
```

***

## 앱 리소스 정의 (resources/my\_app.yml)

```yaml theme={null}
resources:
  apps:
    my_dashboard_app:
      name: "my-dashboard-app"
      description: "매출 분석 대시보드"
      source_code_path: ../src
      config:
        command:
          - streamlit
          - run
          - app.py
        env:
          - name: DATABRICKS_WAREHOUSE_ID
            value: ${var.warehouse_id}
      resources:
        - name: sql_warehouse
          sql_warehouse:
            id: ${var.warehouse_id}
            permission: CAN_USE
      permissions:
        - level: CAN_MANAGE
          user_name: admin@company.com
        - level: CAN_USE
          group_name: data-team
```

***

## DABs 배포 명령

```bash theme={null}
# Bundle 유효성 검사
databricks bundle validate -t dev

# 개발 환경에 배포
databricks bundle deploy -t dev

# 프로덕션 환경에 배포
databricks bundle deploy -t prod

# 배포 상태 확인
databricks bundle summary -t dev
```

***

## DABs의 장점

| 장점           | 설명                                       |
| ------------ | ---------------------------------------- |
| **환경 분리**    | `targets`로 dev/staging/prod 환경을 코드로 관리   |
| **변수 치환**    | `${var.warehouse_id}`로 환경별 설정 자동 적용      |
| **CI/CD 통합** | GitHub Actions, Azure DevOps 등과 자연스러운 연동 |
| **버전 관리**    | Git으로 인프라 설정 포함 전체 이력 관리                 |
| **권한 관리**    | `permissions`로 앱 접근 권한을 코드로 선언           |

> **참고**
> **DABs vs CLI 직접 배포**: 소규모 프로젝트나 프로토타이핑에서는 `databricks apps deploy` CLI가 더 빠릅니다. 프로덕션 환경이나 여러 환경에 배포하는 경우에는 DABs가 훨씬 효율적입니다.
