> ## 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.

# 비용 구조 이해 — 이 문서에서 다루는 내용

## 이 문서에서 다루는 내용

Databricks 플랫폼의 비용을 체계적으로 관리하고 최적화하는 방법을 다룹니다. 비용 구조를 이해하는 것부터 시작하여, 컴퓨트/스토리지/SQL Warehouse 각 영역의 최적화 전략, 그리고 비용 모니터링 대시보드 구축까지 실전에서 바로 적용 가능한 가이드를 제공합니다.

***

## 1. 왜 비용 구조 이해가 중요한가

### 클라우드 비용 폭주 사례

클라우드 환경에서는 온프레미스와 달리 **잘못된 설정 하나가 수백만 원의 청구서** 로 이어질 수 있습니다. Databricks 환경에서 자주 발생하는 실제 패턴은 다음과 같습니다.

| 사례                 | 원인                         | 결과                             |
| ------------------ | -------------------------- | ------------------------------ |
| 주말 내내 켜진 대화형 클러스터  | Auto-termination 미설정       | 48시간 × All-Purpose DBU = 수백만 원 |
| BI 대시보드 자동 새로고침    | SQL Warehouse Always-On 설정 | 야간/주말에도 DBU 소모                 |
| 실패한 Job의 무한 재시도    | max\_retries 미설정           | DBU + 클라우드 스토리지 비용 누적          |
| 개발용 클러스터를 프로덕션에 사용 | All-Purpose를 Jobs 대신 사용    | 동일 작업 대비 2\~3배 과금              |
| 리전 간 데이터 전송        | 멀티 리전 아키텍처 설계 오류           | 예상치 못한 Egress 비용               |

### 예상치 못한 청구 패턴

Databricks 청구서는 **DBU 비용(Databricks 청구) + 클라우드 인프라 비용(AWS/Azure/GCP 청구)** 두 가지로 나뉩니다. 많은 팀이 DBU 비용만 모니터링하다가 클라우드 청구서에서 충격을 받는 경우가 있습니다.

```
총 비용 = Databricks DBU 비용 + 클라우드 VM(EC2) 비용 + 스토리지 비용 + 네트워크 비용
```

> ⚠️ **주의**: Databricks 콘솔의 비용 모니터링은 DBU 소모량 중심입니다. EC2 인스턴스 비용, S3 스토리지 비용, NAT Gateway 비용은 AWS 청구서를 별도로 확인해야 합니다.

***

## 2. DBU(Databricks Unit) 단가 체계

### DBU란 무엇인가

Databricks의 과금은 **DBU(Databricks Unit)** 라는 정규화된 처리 단위를 기반으로 합니다. 동일한 작업이라도 어떤 SKU를 사용하느냐에 따라 DBU 소모량과 단가가 달라집니다.

> 💡 **DBU란?** Databricks의 과금 단위로, CPU 코어, 메모리, 컴퓨트 유형을 종합하여 정규화한 값입니다. 1 DBU는 약 1시간의 기본 컴퓨트 처리량에 해당합니다. 인스턴스 크기가 클수록 시간당 소모 DBU가 증가합니다.

### SKU별 가격 비교표 (AWS 기준, 상대 단가)

| SKU 유형                         | 대표 용도          | 상대 단가      | 특징                    |
| ------------------------------ | -------------- | ---------- | --------------------- |
| **Jobs Compute**               | 스케줄된 배치 작업     | ★☆☆☆☆ (최저) | 가장 경제적, 프로덕션 파이프라인 권장 |
| **Jobs Compute (Serverless)**  | 서버리스 배치 작업     | ★★☆☆☆      | 인프라 관리 불필요, 빠른 시작     |
| **All-Purpose Compute**        | 인터랙티브 개발, 노트북  | ★★★★☆      | 개발 시에만 사용, 프로덕션 금지    |
| **All-Purpose (Serverless)**   | 서버리스 인터랙티브     | ★★★☆☆      | 유휴 비용 없음, 개발자 생산성 극대화 |
| **SQL Warehouse (Serverless)** | BI 쿼리, 대시보드    | ★★★☆☆      | 자동 스케일링, 캐싱 내장        |
| **SQL Warehouse (Pro)**        | BI 쿼리 (클래식)    | ★★★☆☆      | 수동 스케일링, 예측 가능한 비용    |
| **Model Serving**              | 실시간 추론         | ★★★★☆      | GPU 사용 시 비용 급증        |
| **Foundation Model API**       | DBRX, Llama 호출 | 토큰 기반      | 입력/출력 토큰 수에 비례        |

> ⚠️ **핵심 원칙**: 개발은 All-Purpose, 프로덕션은 Jobs Compute를 사용하면 **동일 작업 대비 2\~3배 비용 절감** 이 가능합니다.

### Commit vs Pay-as-you-go

Databricks는 두 가지 구매 모델을 제공합니다.

| 구분    | Pay-as-you-go      | Pre-purchase Commit (PUPM) |
| ----- | ------------------ | -------------------------- |
| 단가    | 정가 (최고)            | 최대 40\~50% 할인              |
| 약정    | 없음                 | 1년 또는 3년 약정                |
| 유연성   | 매우 높음              | 낮음 (미소진 시 소멸)              |
| 적합 대상 | POC, 소규모, 불규칙 워크로드 | 안정적 프로덕션 워크로드              |
| 리스크   | 예산 초과              | 미소진 DBU 손실                 |

> 💡 **전략**: 전체 DBU 소모량의 70\~80%는 Commit으로 커버하고, 나머지 피크 부하는 Pay-as-you-go로 처리하는 혼합 전략이 일반적입니다.

***

## 3. 비용 발생 3대 영역

### 전체 비중

| 비용 카테고리  | 일반적 비중  | 세부 항목                                                 |
| -------- | ------- | ----------------------------------------------------- |
| **컴퓨트**  | 60\~80% | 클러스터 DBU, SQL Warehouse DBU, Serverless DBU, Jobs DBU |
| **스토리지** | 10\~20% | S3/ADLS 저장, Delta 트랜잭션 로그, 스냅샷 보존                     |
| **네트워크** | 5\~10%  | 리전 간 전송, PrivateLink, NAT Gateway                     |

### 컴퓨트 비용: 클래식 vs 서버리스

**클래식 컴퓨트 (Classic Compute)**

* 사용자가 클러스터를 직접 생성하고 관리합니다.
* 클러스터가 기동 중인 시간 전체에 대해 DBU가 부과됩니다 (쿼리 실행 여부와 무관).
* Auto-termination을 반드시 설정해야 유휴 비용을 방지할 수 있습니다.
* EC2 인스턴스 비용은 AWS 청구서에 별도로 발생합니다.

**서버리스 컴퓨트 (Serverless Compute)**

* Databricks가 인프라를 완전히 관리합니다.
* 쿼리/작업 실행 시간에만 DBU가 부과됩니다 (유휴 비용 없음).
* EC2 인스턴스 비용이 DBU 단가에 포함되어 있습니다 (AWS 청구서에 별도 항목 없음).
* 단위 DBU 단가는 클래식보다 높지만, 유휴 시간 제거로 총비용은 낮아지는 경우가 많습니다.

```
클래식 총비용 = (기동 시간 × DBU/시간 × DBU 단가) + EC2 비용
서버리스 총비용 = (실행 시간 × DBU/시간 × 서버리스 DBU 단가)
```

### 스토리지 비용: Delta 로그 비용

Delta Lake는 모든 트랜잭션을 `_delta_log/` 디렉터리에 JSON 파일로 기록합니다. 테이블에 잦은 소규모 쓰기가 발생하면 Delta 로그 파일 수가 폭발적으로 증가하고, 이는 스토리지 비용과 쿼리 성능 저하로 이어집니다.

```python theme={null}
# Delta 로그 정리 - OPTIMIZE + VACUUM 주기적 실행
spark.sql("OPTIMIZE my_catalog.my_schema.my_table")
spark.sql("VACUUM my_catalog.my_schema.my_table RETAIN 168 HOURS")
```

### 네트워크 비용: Egress 비용

| 전송 유형                 | 비용 발생 여부    | 비고                |
| --------------------- | ----------- | ----------------- |
| 동일 AZ 내 전송            | 없음          | 클러스터와 S3가 같은 AZ   |
| 리전 내 AZ 간 전송          | 발생          | 약 \$0.01/GB       |
| 리전 간(Cross-Region) 전송 | 발생          | 약 \$0.02\~0.09/GB |
| 인터넷 Egress            | 가장 비쌈       | 약 \$0.09/GB       |
| PrivateLink 사용        | 시간 + 데이터 요금 | 엔드포인트당 월 고정 비용 발생 |

> 💡 **팁**: 클러스터와 S3 버킷을 같은 리전/AZ에 배치하면 네트워크 비용을 크게 줄일 수 있습니다.

***
