Skip to main content

DBU (Databricks Unit)

💡 DBU(Databricks Unit) 는 Databricks의 과금 단위입니다. 사용한 컴퓨팅 리소스의 양을 DBU로 환산하여 과금합니다. DBU당 단가는 워크로드 유형(SQL, Jobs, All-Purpose 등)과 요금 플랜에 따라 다릅니다.

서버리스 vs 클래식 비용 비교

서버리스의 DBU 단가는 클래식보다 높지만, 총 비용(TCO) 은 서버리스가 더 낮은 경우가 많습니다.
비용 요소Customer-ManagedServerless
DBU 단가낮음높음
클라우드 VM 비용별도 과금DBU에 포함
유휴 비용발생 (자동 종료 전)없음
관리 인건비높음 (클러스터 운영)낮음
런타임 업그레이드 비용테스트/마이그레이션 필요없음(자동)
총 비용 (TCO)상황에 따라보통 더 저렴
비용 항목클래식 비용 구조서버리스 비용 구조
Databricks DBU 비용포함포함
클라우드 VM 비용별도 과금DBU에 포함
유휴 시간 비용발생 (자동 종료 전까지)없음 (즉시 반환)
총 비용DBU + VM + 유휴DBU만 (사용한 만큼)

비용 최적화 팁

설명
Auto-Stop 활용서버리스는 유휴 시 즉시 해제되므로 별도 설정 없이 비용이 절감됩니다
적절한 사이즈SQL Warehouse는 필요한 최소 사이즈로 시작하고, 필요 시 확장합니다
예약 용량(Committed Use)장기 사용이 확실하면 예약 용량 할인을 활용합니다
시스템 테이블 모니터링system.billing.usage로 비용을 추적하고 이상을 감지합니다
-- 서버리스 vs 클래식 비용 비교 쿼리
SELECT
    sku_name,
    billing_origin_product,
    SUM(usage_quantity) AS total_dbus,
    COUNT(DISTINCT usage_date) AS active_days,
    ROUND(SUM(usage_quantity) / COUNT(DISTINCT usage_date), 1) AS avg_daily_dbus
FROM system.billing.usage
WHERE usage_date >= CURRENT_DATE() - INTERVAL 30 DAY
  AND billing_origin_product IN ('JOBS_COMPUTE', 'JOBS_SERVERLESS',
                                  'SQL_COMPUTE', 'SQL_SERVERLESS',
                                  'ALL_PURPOSE_COMPUTE', 'INTERACTIVE_SERVERLESS')
GROUP BY sku_name, billing_origin_product
ORDER BY total_dbus DESC;

제한사항 및 주의사항

제한사항설명대안
GPU 미지원서버리스에서 GPU 워크로드는 실행할 수 없습니다딥러닝 학습은 Customer-Managed 클러스터를 사용합니다
Spark 설정 제한일부 Spark 설정을 직접 변경할 수 없습니다대부분의 최적화가 자동 적용됩니다
Init Script 미지원기존 Init Script를 직접 사용할 수 없습니다Environment 설정으로 대체합니다
커스텀 Docker 미지원사용자 정의 Docker 이미지를 사용할 수 없습니다Environment에서 라이브러리를 지정합니다
네트워크 제약기본적으로 고객 VPC 내부 리소스에 접근 불가합니다SNC(Serverless Network Connectivity)를 설정합니다
리전 가용성일부 클라우드 리전에서는 사용이 불가할 수 있습니다지원 리전 목록을 확인합니다
⚠️ 중요: 서버리스로 전환하기 전에, 기존 워크로드가 위 제한사항에 해당하지 않는지 반드시 확인하시기 바랍니다. 특히 Init Script, 커스텀 Spark 설정, 특수 라이브러리(JNI 등)를 사용하는 경우 호환성 테스트가 필요합니다.

마이그레이션 가이드 (클래식 → 서버리스)

마이그레이션 단계

단계설명
1. 현황 분석워크로드 목록 파악
2. 호환성 확인제한사항 체크
3. 파일럿 전환비핵심 워크로드 먼저
4. 성능/비용 비교기존 대비 평가
5. 점진적 확대핵심 워크로드 전환

Step 1: 현황 분석

-- 현재 클러스터 사용 현황 분석
SELECT
    cluster_name,
    cluster_source,
    COUNT(*) AS job_count,
    SUM(usage_quantity) AS total_dbus
FROM system.billing.usage u
JOIN system.compute.clusters c ON u.usage_metadata.cluster_id = c.cluster_id
WHERE usage_date >= CURRENT_DATE() - INTERVAL 30 DAY
GROUP BY cluster_name, cluster_source
ORDER BY total_dbus DESC;

Step 2: 호환성 체크리스트

체크 항목확인 방법
Init Script 사용 여부클러스터 설정에서 Init Script 확인합니다
커스텀 Spark 설정spark.conf.get() 또는 클러스터 설정에서 확인합니다
특수 라이브러리 (JNI, C 확장)클러스터의 라이브러리 목록을 확인합니다
VPC 내부 접근 필요 여부온프레미스 DB, Private Link 사용 여부를 확인합니다
GPU 사용 여부클러스터 노드 타입에 GPU 인스턴스가 있는지 확인합니다

Step 3: Job 마이그레이션 예시

# Before: Customer-Managed 클러스터 사용
resources:
  jobs:
    my_job:
      tasks:
        - task_key: "etl"
          existing_cluster_id: "0123-456789-abcdef"
          notebook_task:
            notebook_path: "/Workspace/etl/pipeline"

# After: 서버리스로 전환
resources:
  jobs:
    my_job:
      tasks:
        - task_key: "etl"
          # existing_cluster_id 제거
          environment_key: "default"
          notebook_task:
            notebook_path: "/Workspace/etl/pipeline"
      environments:
        - environment_key: "default"
          spec:
            client: "1"
            dependencies:
              - "pandas>=2.0"

Step 4: 성능/비용 비교

마이그레이션 후 최소 2주간 성능과 비용을 비교합니다.
-- 마이그레이션 전후 비교
SELECT
    CASE
        WHEN billing_origin_product LIKE '%SERVERLESS%' THEN 'Serverless'
        ELSE 'Classic'
    END AS compute_type,
    SUM(usage_quantity) AS total_dbus,
    COUNT(DISTINCT usage_date) AS active_days
FROM system.billing.usage
WHERE usage_date >= CURRENT_DATE() - INTERVAL 14 DAY
  AND billing_origin_product IN ('JOBS_COMPUTE', 'JOBS_SERVERLESS')
GROUP BY 1;

언제 서버리스를 사용하고, 언제 클래식을 사용하나요?

상황추천이유
SQL 분석, 대시보드✅ Serverless즉시 시작, SQL 최적화가 자동 적용됩니다
노트북 개발, 프로토타이핑✅ Serverless빠른 반복 개발이 가능합니다
정기 ETL Jobs✅ Serverless관리 간소화, 비용 효율적입니다
SDP 파이프라인✅ Serverless파이프라인별 리소스 자동 관리됩니다
GPU 워크로드 (딥러닝)❌ 클래식서버리스에서 GPU를 지원하지 않습니다
특정 라이브러리/JNI 필요⚠️ 상황에 따라서버리스 Environment로 해결 가능한지 먼저 확인합니다
극도로 세밀한 클러스터 튜닝❌ 클래식노드 타입, Spark 설정을 직접 제어해야 할 때 사용합니다
VPC 내부 리소스 접근⚠️ SNC 필요SNC 설정 후 서버리스 사용이 가능합니다

정리

핵심 개념설명
Serverless인프라 관리 없이 코드만 실행하면 자동으로 리소스가 할당됩니다
즉시 시작사전 예열된 VM 풀에서 수 초 내에 시작됩니다
자동 비용 관리유휴 시 즉시 리소스를 해제하여 불필요한 비용이 발생하지 않습니다
Databricks 관리VM, 런타임, 보안 패치 등을 Databricks가 자동으로 관리합니다
SNC서버리스에서 고객 VPC 내부 리소스에 안전하게 접근하는 방법입니다
Environment서버리스에서 Python 라이브러리를 관리하는 방법입니다
DBUDatabricks의 컴퓨팅 과금 단위이며, 서버리스는 VM 비용이 포함되어 있습니다
이것으로 컴퓨트와 워크스페이스 섹션을 마치겠습니다. 다음 섹션에서는 실제 데이터 엔지니어링 파이프라인 구축 방법을 알아보겠습니다.

참고 링크