Airflow

Airflow - Executor 설정

개발 일기92 2025. 4. 5. 17:40

Airflow Architecture

Airflow Executor 종류별 선택 가이드

Airflow를 어떻게 실행하느냐에 따라 Executor 설정이 매우 중요해진다.

각 환경에 맞는 Executor를 선택하면 성능, 확장성, 운영 효율성이 크게 달라질 수 있다.


테스트, 개발 환경 : LocalExecutor

추천 대상

  • 로컬 머신에서 간단히 테스트할 때
  • 개발 단계에서 빠르게 DAG를 확인하고 디버깅할 때

설명

LocalExecutor는 태스크를 병렬로 실행할 수 있는 가장 간단한 실행기. 모든 작업을 Airflow Scheduler가 실행되는 프로세스에서 직접 실행.

 

장점

  • 설치와 설정이 매우 간단
  • SequentialExecutor보다 빠름 (병렬 실행 가능)
  • 별도 외부 서비스(redis, celery broker 등) 필요 없음

단점

  • 확장성이 부족함 (한 서버의 CPU 자원만 사용)
  • 장애 조치(failover) 기능 없음

사용 예

  • 개발자 로컬 환경
  • CI/CD 테스트 파이프라인
  • 단일 노드 개발 서버

서버가 1대이고 성능이 좋은 경우: LocalExecutor 또는 CeleryExecutor

추천 대상

  • 단일 서버에서 운영할 계획이지만, 병렬 작업량이 많은 경우
  • 향후 확장을 고려할 여지는 있지만 당장은 필요 없는 경우

설명

서버가 1대이고 CPU 코어 수가 많다면 LocalExecutor로도 충분히 많은 태스크를 동시에 처리할 수 있습니다.

하지만 고가용성이나 모니터링 기능이 필요하다면 CeleryExecutor를 도입해볼 수 있다.

 

팁:

  • 단순: LocalExecutor
  • 고가용성/모니터링 필요: CeleryExecutor

서버 여러 대, 또는 확장 고려 중: CeleryExecutor

📌 추천 대상

  • 여러 서버에 걸쳐 Airflow를 실행하고 싶을 때
  • 수십~수백 개 DAG와 수천 개 태스크를 병렬로 처리할 때
  • 안정적이고 예측 가능한 태스크 분산이 필요할 때

설명

CeleryExecutor는 태스크를 분산 처리할 수 있게 해줍니다.

RabbitMQ 또는 Redis 같은 브로커를 통해 각 워커 노드로 태스크를 분배합니다.

 

장점

  • 수평 확장이 가능 (노드를 쉽게 추가)
  • 장애 조치/로드 밸런싱 가능
  • 운영 환경에서 가장 많이 사용됨

단점

  • 구성 복잡 (브로커, 워커, 스케줄러 등 여러 컴포넌트 필요)
  • 오버헤드 발생 가능 (브로커 처리 지연, 네트워크 병목 등)

사용 예

  • 사내 또는 클라우드에서 운영 중인 Airflow
  • 태스크 수가 많은 대규모 파이프라인
  • 장기적인 운영을 고려한 인프라

Kubernetes 친화적, 자원 낭비 최소화: KubernetesExecutor

추천 대상

  • Kubernetes 클러스터에서 Airflow를 배포할 계획일 때
  • 각 태스크마다 독립된 컨테이너로 격리하고 싶을 때
  • 클러스터 자원을 효율적으로 활용하고 싶을 때

설명

KubernetesExecutor는 각 Airflow 태스크를 Kubernetes Pod 단위로 실행합니다.

태스크 실행이 끝나면 Pod는 자동으로 삭제되어 리소스를 낭비하지 않습니다.

 

장점

  • 자원 낭비 거의 없음 (필요할 때만 Pod 생성)
  • 태스크마다 격리된 실행 환경 제공 (보안, 의존성 충돌 최소화)
  • 클러스터 전체 자원을 활용 가능

단점

  • 초기 설정이 복잡 (서비스 계정, RBAC, 볼륨 설정 등)
  • 태스크 실행 속도는 Pod 스케줄링 속도에 따라 다름
  • 로그 수집 등 운영 도구 설정 추가 필요

사용 예

  • 클라우드 기반 데이터 플랫폼
  • MLOps 파이프라인 등 높은 격리 수준이 필요한 환경
  • 각 태스크마다 리소스 요구량이 다를 때

Kubernetes + Celery 조합의 고급 운영: CeleryKubernetesExecutor

추천 대상

  • CeleryExecutor의 안정성과 KubernetesExecutor의 자원 효율성을 둘 다 활용하고 싶을 때
  • 대규모 파이프라인 또는 혼합형 워크로드 운영 시

설명

CeleryKubernetesExecutor는 기본적으로는 CeleryExecutor처럼 동작하지만, 특정 태스크를 KubernetesExecutor로 실행즉, 워커는 Celery로 돌리되, 태스크마다 “이건 쿠버네티스로 실행해줘”라고 설정 가능.

 

장점

  • 하이브리드 운영 가능 (고정 워커 + 유동 Pod)
  • 자원 낭비 줄이면서도 예측 가능한 워크플로우 처리 가능
  • 유연한 태스크 스케줄링 전략

단점

  • 복잡도 최고 (Celery + K8s 둘 다 운영해야 함)
  • 적절한 설정 없이 사용하면 성능 저하 가능

사용 예

  • 정기 태스크는 Celery, 리소스 많이 드는 분석 작업은 K8s로 처리
  • 유동적인 워크로드가 자주 발생하는 데이터 플랫폼

요약

상황별 추천 Executor 설정

 

빠른 테스트, 로컬 개발 LocalExecutor
단일 서버 + 고성능 LocalExecutor or CeleryExecutor
확장 가능한 다중 서버 CeleryExecutor
쿠버네티스 환경, 효율적 자원 활용 KubernetesExecutor
하이브리드 운영 및 고급 설정 CeleryKubernetesExecutor

'Airflow' 카테고리의 다른 글

Airflow - bash dag샘플  (1) 2024.04.11
Airflow - task 기본개념  (0) 2024.04.11
Airflow - 기본개념  (0) 2024.04.11