5. 환경별 배포 (Targets)
dev / staging / prod 타겟 설정
mode: development vs mode: production
| mode | 동작 |
|---|---|
development | 리소스 이름에 [dev 사용자명] 접두사가 자동으로 붙어 개인 개발 공간 격리 |
production | run_as 설정 필수, bundle destroy 시 확인 프롬프트 표시 |
| (미설정) | 기본 동작, 이름 변경 없음 |
권한(Permissions) 설정
6. 배포 워크플로
배포 3단계
validate 출력 예시
GitHub Actions CI/CD 연동
인증 방법: 프로덕션 배포에는 Personal Access Token 대신 Service Principal + OAuth M2M 인증을 사용합니다. GitHub Secrets에DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRET을 저장하고DATABRICKS_TOKEN대신 사용합니다.
7. 실전 패턴
7-1. 모노레포(Monorepo) 구조
여러 팀/도메인의 파이프라인을 하나의 Git 저장소에서 관리하는 패턴입니다.databricks bundle deploy를 실행합니다. GitHub Actions에서는 paths 필터로 변경된 도메인만 선택적으로 배포합니다.
7-2. 다중 Job 오케스트레이션
한 번들 내에서 여러 Job이 서로를 참조할 수 있습니다.7-3. 대시보드 코드화
7-4. include로 설정 분리
큰 프로젝트에서는 리소스 파일을 분리하여 가독성을 높입니다.8. 장단점과 트레이드오프
DABs vs 수동 배포(UI)
| DABs | 수동 배포 | |
|---|---|---|
| 초기 설정 | YAML 학습 필요, 초기 비용 있음 | 즉시 시작 가능 |
| 반복 배포 | 명령어 한 줄 | 매번 UI 클릭 반복 |
| 환경 일관성 | 완벽히 보장 | 사람에 의존, 오류 발생 가능 |
| 감사/추적 | Git 이력으로 완전 추적 | 불가 |
| 팀 협업 | PR 리뷰 기반 변경 관리 | 변경 충돌 발생 가능 |
| 적합한 규모 | 중규모 이상 팀 | 개인/소규모 PoC |
DABs vs Terraform
| DABs | Terraform | |
|---|---|---|
| Databricks 신기능 | 즉시 지원 | Provider 릴리즈 대기 |
| 클라우드 인프라 | 불가 (Databricks 전용) | AWS/Azure/GCP 모두 관리 |
| 상태 파일 | 불필요 (플랫폼 관리) | .tfstate 직접 관리, 협업 시 원격 상태 설정 필요 |
| 드리프트 감지 | 제한적 | 강력한 terraform plan |
| 생태계 | Databricks 내부 | 광범위한 커뮤니티 모듈 |
학습 곡선
9. 베스트 프랙티스와 흔한 실수
베스트 프랙티스
1. 항상 validate 먼저 실행-t 옵션 없이 명령을 실행하면 기본 타겟(dev)이 사용됩니다. 실수로 prod에 영향을 주는 것을 방지합니다.
5. 리소스 이름에 ${bundle.target} 포함
흔한 실수
| 실수 | 원인 | 해결 방법 |
|---|---|---|
| 배포 후 리소스가 사라짐 | mode: development에서 다른 사용자가 deploy 실행 — 이름에 사용자명이 붙어 별도 리소스로 생성됨 | dev는 개인별 독립 공간임을 이해, 공유 dev는 mode 생략 |
| prod에 dev 카탈로그 데이터가 들어감 | 변수 기본값이 dev 카탈로그인 상태로 prod 배포 | -t prod 지정 시 변수 재확인, validate에서 변수 출력 확인 |
| CI/CD 인증 실패 | Token 만료 또는 Service Principal 권한 부족 | SP에 Workspace 접근 + 번들 리소스 CAN_MANAGE 권한 부여 |
| YAML 들여쓰기 오류 | 탭/스페이스 혼용 | 에디터에서 YAML 린터 활성화, bundle validate로 사전 확인 |
| 리소스 삭제 안 됨 | bundle destroy를 실행했지만 외부에서 수동으로 생성된 리소스는 삭제 불가 | DABs 외부에서 생성한 리소스는 DABs가 관리하지 않음을 이해 |
정리
| 핵심 개념 | 설명 |
|---|---|
| databricks.yml | 번들의 모든 것을 정의하는 메인 설정 파일입니다 |
| resources | Jobs, Pipelines, Dashboards 등 Databricks 리소스를 YAML로 선언합니다 |
| targets | dev, staging, prod 등 환경별 설정을 분리합니다 |
| variables | 환경별로 다른 값(카탈로그, 엔드포인트 등)을 ${var.이름} 으로 참조합니다 |
| bundle validate | 실제 배포 없이 설정 오류를 사전에 확인합니다 |
| bundle deploy | 정의된 리소스를 대상 환경에 생성/업데이트합니다 |
| CI/CD | GitHub Actions 등과 연동하여 PR 기반 자동 배포 파이프라인을 구축합니다 |
참고 링크
- Databricks: Declarative Automation Bundles 공식 문서
- Databricks: Bundle configuration reference (전체 YAML 스키마)
- Databricks: Bundle resources (리소스 유형별 설정)
- Databricks: Bundle templates
- Databricks: CI/CD with DABs (GitHub Actions)
- Azure Databricks: Declarative Automation Bundles
- Databricks: DABs vs Terraform — When to use each