개념
Databricks Declarative Automation Bundles (DABs) 는 Databricks 리소스(Jobs, Pipelines, 대시보드 등)를 코드로 정의하고 배포 하는 IaC(Infrastructure as Code) 도구입니다. YAML 파일로 리소스를 선언하고, databricks bundle CLI 명령어로 배포합니다.
명칭 변경: 2025년부터 Databricks Asset Bundles (DABs) 가 Declarative Automation Bundles 로 리브랜딩되었습니다. CLI 명령어(databricks bundle)와 설정 파일 구조는 동일합니다. 기존 문서나 블로그에서 “DABs”나 “Asset Bundles”로 언급되는 것은 같은 기능을 가리킵니다.
IaC(Infrastructure as Code)란? 인프라(서버, 데이터베이스, 파이프라인 등)를 수동으로 설정하는 대신, 코드(설정 파일)로 정의 하여 자동으로 배포하는 방식입니다. 코드이므로 Git으로 버전 관리할 수 있고, 코드 리뷰를 통해 변경 사항을 검토할 수 있으며, 여러 환경(dev, staging, prod)에 동일한 구성을 일관되게 배포할 수 있습니다.
1. 왜 DABs가 필요한가
수동 배포(UI 클릭)의 문제점
실제 엔터프라이즈 환경에서 UI로만 Databricks 리소스를 관리하면 다음과 같은 문제가 발생합니다.| 문제 | 구체적인 현상 |
|---|---|
| 재현 불가 | ”누가, 언제, 어떤 설정으로 만들었지?” 추적이 어렵습니다 |
| 환경 불일치 | 개발 환경과 프로덕션 환경의 설정이 미묘하게 달라 버그가 발생합니다 |
| 온보딩 비용 | 신규 팀원이 리소스 구조를 파악하려면 UI를 일일이 탐색해야 합니다 |
| 롤백 불가 | 잘못된 변경을 되돌리는 공식적인 방법이 없습니다 |
| 감사(Audit) 곤란 | 누가 어떤 Job 설정을 바꿨는지 추적하기 어렵습니다 |
| 코드 리뷰 불가 | 인프라 변경에 대한 팀 리뷰 프로세스가 없습니다 |
IaC가 이 문제를 해결하는 방법
DABs는 모든 리소스 정의를 YAML 파일로 관리합니다. Git에 커밋되는 순간 다음 모든 것이 자동으로 확보됩니다.- 버전 이력 — 언제, 누가, 무엇을 바꿨는지
git log로 확인 - 코드 리뷰 — PR(Pull Request)을 통해 변경 사항을 팀이 검토
- 재현 가능성 — 동일 YAML로 어느 환경에나 동일한 리소스 생성
- 자동화 — CI/CD 파이프라인에서 배포 자동 실행
DABs vs Terraform — 무엇을 선택해야 하나
| 비교 항목 | DABs | Terraform |
|---|---|---|
| 관리 대상 | Databricks 리소스 전용 | 모든 클라우드 인프라 |
| 설정 언어 | YAML | HCL (HashiCorp Configuration Language) |
| 학습 곡선 | 낮음 (Databricks 개념만 알면 됨) | 중간~높음 (Terraform 개념 추가 필요) |
| 상태 관리 | Databricks 플랫폼이 자동 관리 | terraform.tfstate 파일 직접 관리 필요 |
| Databricks 신기능 | 즉시 반영 (네이티브) | Provider 업데이트 후 사용 가능 |
| 적합한 경우 | Databricks 리소스만 관리 | VPC, S3, IAM + Databricks 통합 관리 |
| 혼합 사용 | 가능 — 실제로 권장되는 패턴 | 가능 — Terraform으로 클라우드 인프라, DABs로 워크로드 |
권장 패턴: 클라우드 인프라(VPC, 서브넷, IAM Role)는 Terraform으로, Databricks 워크로드(Jobs, Pipelines, Dashboards)는 DABs로 관리합니다.
2. 핵심 개념
Bundle 구조
DABs 프로젝트의 핵심은databricks.yml이라는 메인 설정 파일입니다. 이 파일을 중심으로 전체 번들이 구성됩니다.
핵심 4대 구성 요소
| 구성 요소 | 설명 |
|---|---|
| bundle | 번들 이름, 버전 등 메타데이터를 정의합니다 |
| resources | Jobs, Pipelines, Dashboards 등 Databricks 리소스를 선언합니다 |
| targets | dev, staging, prod 등 배포 환경별 설정을 정의합니다 |
| variables | 환경별로 달라지는 값(카탈로그명, 웨어하우스 ID 등)을 변수로 관리합니다 |
Variables (변수)
변수는 두 가지 방식으로 값을 받습니다.${var.변수명} 형식을 사용합니다. Bundle 자체 메타데이터는 ${bundle.name}, ${bundle.target} 으로 참조할 수 있습니다.
3. 프로젝트 초기화
databricks bundle init
Databricks CLI가 제공하는 공식 템플릿으로 프로젝트를 빠르게 시작할 수 있습니다.공식 내장 템플릿
| 템플릿 | 적합한 경우 |
|---|---|
default-python | Python 노트북/Job 위주의 일반적인 파이프라인 |
default-sql | SQL 위주, DLT + SQL 작업 조합 |
dbt-sql | dbt Core와 Databricks를 연동하는 프로젝트 |
mlops-stacks | ML 모델 훈련~서빙 전체 MLOps 워크플로 |
4. 주요 리소스 유형
4-1. Jobs
${resources.pipelines.medallion.id} 처럼 다른 리소스를 참조할 수 있습니다. DABs가 배포 순서를 자동으로 결정합니다.
4-2. Pipelines (DLT, Delta Live Tables)
4-3. Dashboards (AI/BI 대시보드)
대시보드도 YAML로 코드화하여 Git 관리가 가능합니다.*.lvdash.json)은 Databricks UI에서 “Export as code” 기능으로 추출합니다.