
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로 처리
- 유동적인 워크로드가 자주 발생하는 데이터 플랫폼
요약
빠른 테스트, 로컬 개발 | 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 |