Skip to main content

서버리스 컴퓨팅이란?

💡 Serverless 컴퓨트 는 사용자가 서버(클러스터)를 직접 생성하거나 관리할 필요 없이, 코드를 실행하면 Databricks가 알아서 리소스를 할당 해 주는 방식입니다.
서버리스 컴퓨팅은 인프라 관리의 부담을 완전히 제거합니다. 노드 타입 선택, 오토스케일링 설정, 런타임 버전 관리, 보안 패치 적용 등 모든 인프라 운영을 Databricks가 대신 처리합니다. 사용자는 비즈니스 로직에만 집중 할 수 있습니다.

왜 서버리스가 필요한가?

기존 클러스터 기반 방식에서 팀이 겪는 공통적인 문제들을 서버리스가 해결합니다.
기존 방식의 문제서버리스의 해결
클러스터 시작까지 3~5분 대기합니다수 초 만에 시작 되어 즉시 작업을 시작합니다
노드 타입, 수량, 런타임 버전을 선택해야 합니다설정 없이 코드만 실행하면 됩니다
유휴 클러스터가 비용을 발생시킵니다사용한 만큼만 과금되며 유휴 비용이 없습니다
런타임 업그레이드, 보안 패치를 직접 적용해야 합니다Databricks가 자동으로 최신 상태 를 유지합니다
클러스터 관리를 위한 전담 인력이 필요합니다관리 인건비 절감, 인프라 팀 부담 감소

Databricks 서버리스 아키텍처

서버리스의 핵심은 컴퓨트 리소스가 Databricks 관리 환경에서 실행 된다는 것입니다. 기존 방식에서는 고객의 클라우드 계정(VPC/VNet)에서 VM이 실행되었지만, 서버리스에서는 Databricks가 관리하는 인프라에서 실행됩니다.
구성 요소위치설명
Databricks Workspace고객 환경워크스페이스 UI 및 관리
클라우드 스토리지 (S3/ADLS/GCS)고객 환경데이터 저장
Serverless ComputeDatabricks 관리 환경컴퓨팅 리소스 자동 관리
Control PlaneDatabricks 관리 환경작업 스케줄링, 클러스터 관리
고객의 데이터는 고객 환경에 유지되며, 서버리스 컴퓨트만 Databricks가 관리합니다.

기존 방식과의 비교

구분Customer-ManagedServerless
VM 실행 위치고객의 클라우드 계정Databricks 관리 환경
VM 수명주기고객이 시작/중지 관리Databricks가 자동 관리
네트워크고객 VPC/VNet 내부Databricks VPC (보안 연결)
런타임 버전고객이 선택/업그레이드항상 최신 버전 자동 적용
스토리지 접근VPC 내부에서 직접보안 채널을 통해 고객 스토리지 접근

서버리스 지원 워크로드

현재 Databricks에서 서버리스를 사용할 수 있는 워크로드는 다음과 같습니다.
워크로드서버리스 지원설명
SQL Warehouse✅ GASQL 분석, BI 도구 연결에 가장 많이 사용됩니다
Notebooks✅ GA대화형 개발. Python, SQL, Scala, R 모두 지원합니다
Jobs (Workflows)✅ GA스케줄된 배치 작업. JAR 태스크도 지원됩니다
SDP (Pipelines)✅ GA선언적 데이터 파이프라인을 서버리스로 실행합니다
Model Serving✅ GAML 모델 추론 엔드포인트입니다
Vector Search✅ GA벡터 유사도 검색 인덱스입니다
Apps✅ GAStreamlit, Gradio 등 웹 애플리케이션입니다

서버리스 vs 클래식 상세 비교

시작 시간 비교

컴퓨트 유형시작 시간
Customer-Managed ClusterVM 프로비저닝 (~3분) + Spark 초기화 (~2분) = 약 5분
Serverless Compute웜 풀 할당 (~5초) + 즉시 실행 = 약 10초
단계Customer-ManagedServerless
VM 할당2~3분 (클라우드 API 호출)수 초(사전 예열된 풀에서 할당)
런타임 초기화30초~1분이미 초기화됨
라이브러리 설치추가 시간 소요환경 설정에 포함
총 소요 시간3~5분5~15초

관리 부담 비교

관리 항목Customer-ManagedServerless
노드 타입 선택사용자가 직접자동
오토스케일링 설정Min/Max 직접 설정자동
런타임 버전 관리직접 선택/업그레이드항상 최신
보안 패치런타임 업데이트 필요자동 적용
Spot Instance 설정직접 구성자동 최적화
Init Script직접 관리환경 설정으로 대체
라이브러리 충돌직접 해결격리된 환경

서버리스 SQL Warehouse 상세

서버리스 SQL Warehouse는 가장 먼저 도입되고, 가장 널리 사용되는 서버리스 워크로드입니다.
특징설명
즉시 시작수 초 내에 쿼리 실행이 가능합니다
자동 스케일링동시 쿼리 부하에 따라 자동으로 확장/축소됩니다
Photon 기본C++ 벡터화 엔진이 기본으로 활성화되어 있습니다
자동 중지유휴 상태에서 자동으로 리소스를 해제합니다
관리 불필요사이즈만 선택하면 나머지는 Databricks가 관리합니다
-- 서버리스 SQL Warehouse에서 쿼리 실행 (일반 SQL과 동일)
SELECT
    region,
    COUNT(*) AS order_count,
    SUM(revenue) AS total_revenue
FROM production.ecommerce.orders
WHERE order_date >= '2025-01-01'
GROUP BY region
ORDER BY total_revenue DESC;

서버리스 Notebooks 상세

서버리스 Notebooks는 대화형 개발에서 클러스터 시작 대기 시간을 제거합니다.

사용 방법

  1. 노트북 상단의 클러스터 선택 드롭다운을 클릭합니다
  2. Serverless 를 선택합니다
  3. 코드를 실행하면 수 초 내에 결과를 확인할 수 있습니다

환경 설정 (Environment)

서버리스 Notebooks에서는 Environment 를 통해 Python 라이브러리를 관리합니다.
# 노트북 상단에서 %pip로 라이브러리 설치 가능
%pip install scikit-learn==1.4.0 xgboost==2.0.0

# 설치 후 바로 사용
import sklearn
import xgboost
💡 Environment vs Init Script: 서버리스에서는 Init Script 대신 Environment 설정을 사용합니다. 노트북 또는 Job에서 필요한 Python 라이브러리를 requirements.txt 형식으로 지정할 수 있습니다.

서버리스 Jobs 상세

서버리스 Jobs는 스케줄된 배치 작업을 인프라 관리 없이 실행합니다.

Databricks Asset Bundle에서 설정

# databricks.yml - 서버리스 Job 설정
resources:
  jobs:
    daily_etl:
      name: "Daily ETL Pipeline"
      tasks:
        - task_key: "extract"
          notebook_task:
            notebook_path: "/Workspace/etl/extract"
          # environment_key를 지정하면 Serverless로 실행됩니다
          environment_key: "default"

        - task_key: "transform"
          depends_on:
            - task_key: "extract"
          notebook_task:
            notebook_path: "/Workspace/etl/transform"
          environment_key: "default"

        - task_key: "load"
          depends_on:
            - task_key: "transform"
          notebook_task:
            notebook_path: "/Workspace/etl/load"
          environment_key: "default"

      environments:
        - environment_key: "default"
          spec:
            client: "1"
            dependencies:
              - "pandas>=2.0"
              - "requests"
              - "great-expectations"

      schedule:
        quartz_cron_expression: "0 0 6 * * ?"  # 매일 오전 6시
        timezone_id: "Asia/Seoul"

UI에서 서버리스 Job 설정

  1. Workflows 메뉴에서 Create Job 클릭합니다
  2. 태스크 설정에서 Compute 옵션을 Serverless 로 선택합니다
  3. 필요한 라이브러리를 Environment 탭에서 추가합니다
  4. 스케줄을 설정합니다

서버리스 파이프라인 (SDP)

선언적 데이터 파이프라인(SDP, 구 DLT)도 서버리스로 실행할 수 있습니다.
# SDP 파이프라인 노트북
import dlt

@dlt.table(comment="원본 주문 데이터")
def bronze_orders():
    return spark.readStream.format("cloudFiles") \
        .option("cloudFiles.format", "json") \
        .load("/Volumes/production/raw/orders/")

@dlt.table(comment="정제된 주문 데이터")
@dlt.expect_or_drop("valid_amount", "total_amount > 0")
def silver_orders():
    return dlt.read_stream("bronze_orders") \
        .filter("status IS NOT NULL")
파이프라인 설정에서 Serverless 를 선택하면, 파이프라인 실행 시 자동으로 서버리스 컴퓨트가 할당됩니다.

보안 고려사항

서버리스는 Databricks 관리 환경에서 실행되므로, 보안에 대한 이해가 중요합니다.
보안 항목설명
네트워크 격리각 고객의 워크로드는 별도의 VM에서 격리 실행됩니다
데이터 전송고객 스토리지와의 통신은 암호화된 채널을 사용합니다
CMK (Customer-Managed Key)서버리스에서도 고객 관리 암호화 키를 사용할 수 있습니다
데이터 상주서버리스 VM은 고객의 클라우드 리전 내에서 실행됩니다
서버리스 네트워크 연결(SNC)고객 VPC의 프라이빗 엔드포인트에 접근할 수 있습니다
VM 재사용 금지VM은 사용 후 폐기되며, 다른 고객과 공유되지 않습니다
⚠️ 서버리스 네트워크 연결(Serverless Network Connectivity): 서버리스 컴퓨트에서 고객 VPC 내부의 리소스(예: 온프레미스 데이터베이스, Private Link 엔드포인트)에 접근하려면 서버리스 네트워크 연결(SNC) 설정이 필요합니다. Account Console에서 네트워크 연결 구성을 설정할 수 있습니다.
항목서버리스 컴퓨트고객 환경
Serverless ComputeDatabricks 관리 환경-
VPC/VNet Peering-고객 VPC에서 데이터 소스 접근
클라우드 스토리지-고객 계정의 S3/ADLS/GCS
서버리스 컴퓨트는 Network Connectivity Config(NCC)를 통해 고객 환경과 안전하게 연결됩니다.

참고 링크