Skip to main content
이 문서는 데이터 엔지니어링 섹션의 일부입니다.

개념

💡 Lakeflow Jobs (Workflows) 는 데이터 파이프라인과 작업을 스케줄링하고, 의존성을 관리하며, 모니터링 하는 오케스트레이션 서비스입니다. 여러 개의 작업(Task)을 DAG(Directed Acyclic Graph) 형태로 연결하여, 정해진 순서대로 또는 조건에 따라 실행합니다.
비유하자면, 오케스트라의 지휘자 와 같습니다. 각 연주자(Task)가 적절한 순서와 타이밍에 연주하도록 조율하고, 문제가 생기면 즉시 대응합니다. 데이터 팀에서 매일 반복되는 ETL 파이프라인, 정기 보고서 생성, ML 모델 재학습 등의 작업을 자동화하고 안정적으로 운영하는 데 핵심적인 역할을 합니다.
💡 DAG(Directed Acyclic Graph)란? 방향성이 있고 순환하지 않는 그래프를 뜻합니다. 쉽게 말해, 작업의 실행 순서를 화살표로 연결한 흐름도입니다. A → B → C처럼 진행 방향이 있고, C → A로 되돌아가는 순환이 없는 구조입니다. 데이터 파이프라인의 작업 의존성을 표현하는 데 가장 적합한 구조입니다.

Job의 구성 요소

Job: daily-sales-pipeline 구조

Job 라이프사이클

Job은 생성부터 실행, 모니터링까지 명확한 라이프사이클을 갖고 있습니다. 각 단계를 이해하면 운영 중 발생하는 문제를 더 효과적으로 대응할 수 있습니다.

Run의 상태 흐름

재시도 정책

Task 실행이 실패했을 때 자동으로 재시도하도록 설정할 수 있습니다. 일시적인 네트워크 오류나 리소스 부족으로 인한 실패를 자동 복구하는 데 유용합니다.

Task 유형

Lakeflow Jobs는 다양한 유형의 Task를 지원하여, 이기종 워크로드를 하나의 워크플로우에서 관리할 수 있습니다. 각 Task 유형의 특성을 이해하면 적절한 유형을 선택하는 데 도움이 됩니다.

If/Else 분기 예시

품질 검증 결과에 따라 다음 단계를 분기하는 패턴은 데이터 파이프라인에서 매우 자주 사용됩니다. 데이터 품질이 기준을 충족하지 않으면 파이프라인을 중단하고 담당자에게 알림을 보내는 방식으로 안전한 운영이 가능합니다.

For Each 반복 예시

동일한 처리 로직을 여러 테이블이나 파티션에 반복 적용해야 할 때 For Each Task를 사용합니다. 각 반복은 병렬로 실행 되므로 처리 시간을 크게 단축할 수 있습니다.

트리거 유형

Job을 실행하는 트리거는 다양한 방식으로 설정할 수 있습니다. 데이터의 특성과 비즈니스 요구에 맞는 트리거를 선택하면 효율적인 파이프라인 운영이 가능합니다.

스케줄 설정 예시


DAG 오케스트레이션 패턴

실무에서 자주 사용되는 DAG 패턴을 소개합니다. 이 패턴들을 조합하여 복잡한 데이터 파이프라인을 구성할 수 있습니다.

패턴 1: 순차 실행 (Linear)

가장 단순한 형태로, Task를 하나씩 순서대로 실행합니다.

패턴 2: 팬아웃/팬인 (Fan-out / Fan-in)

하나의 Task 이후 여러 Task를 병렬로 실행하고, 모두 완료된 후 다음 단계로 진행합니다. 독립적인 작업을 병렬 처리하여 전체 실행 시간을 단축합니다.

패턴 3: 조건부 분기 (Conditional)

If/Else Task를 사용하여 이전 Task의 결과에 따라 다른 경로를 실행합니다.

패턴 4: 동적 반복 (Dynamic Loop)

For Each Task로 동적 목록을 반복 처리합니다. 처리 대상이 런타임에 결정되는 경우에 유용합니다.

서버리스 Jobs

🆕 Serverless Jobs 는 클러스터를 미리 프로비저닝하지 않고, Task 실행 시 자동으로 컴퓨트가 할당 되는 방식입니다. 클러스터 시작 대기 시간이 대폭 줄어들어 빠른 실행이 가능합니다.

비용 최적화 가이드

Lakeflow Jobs의 비용을 최적화하려면 다음 전략을 고려하세요.

시스템 제약 사항

공식 문서에 명시된 Lakeflow Jobs의 시스템 제약입니다. 대규모 운영 시 참고해야 합니다.

프로그래밍 방식 관리

Lakeflow Jobs는 UI 외에도 다양한 방법으로 관리할 수 있습니다. 특히 CI/CD 파이프라인에서는 코드 기반 관리가 필수적입니다.

Asset Bundles로 Job 정의 (YAML)


다른 오케스트레이션 도구와의 비교

💡 권장: Databricks 내의 워크로드만 오케스트레이션한다면 Lakeflow Jobs 가 가장 간편하고 비용 효율적입니다. 여러 플랫폼(Databricks + 외부 시스템)을 아우르는 복잡한 오케스트레이션이 필요하다면 Apache Airflow 를, SQL 변환 중심이라면 dbt 를 추가로 고려할 수 있습니다.

정리


참고 링크