Airflow 자세히 확인하기
k8s 내에 있는 airflow pod 확인
| 구성 요소 | 역할 | 비유 |
| Webserver | UI 제공 | 가게 카운터 및 메뉴판 |
| Scheduler | 작업 스케줄링 | 지배인 (주문서 작성) |
| PostgreSQL | 메타데이터 저장소 | 가게 장부 (누가 언제 뭘 했나) |
| Redis | 메시지 브로커 | 주문 대기표 (작업 순서 대기열) |
| Worker | 실제 작업 수행 | 주방장 (Trino에 쿼리 던지기) |
| Flower | Celery 모니터링 | 주방 모니터링 CCTV |
| DB Migration | DB 스키마 업데이트 | 인테리어/공사팀 (기초 공사) |
주요 Executor 방식 비교
| 구분 | CeleryExecutor | KubernetesExecutor |
| 동작 방식 | 일정한 수의 Worker Pod이 항상 떠서 대기함. | 작업이 생길 때마다 새로운 Pod을 띄워서 실행함. |
| 추가 부품 | Redis(브로커), Flower(모니터링) 필수. | 없음 (K8s API가 직접 관리). |
| 확장성 | Worker 개수를 미리 정해둬야 함 (고정적). | 작업량에 따라 무한대로 Pod이 생김 (유연함). |
| 자원 효율 | 일이 없어도 Worker가 자원을 점유함. | 일이 없을 땐 자원을 하나도 안 씀. |
| 격리성 | 한 Worker에서 여러 작업이 돌아 충돌 위험 있음. | 작업마다 독립된 Pod이라 완벽히 격리됨. |
2. 장단점 상세 분석 (엔지니어 관점)
CeleryExecutor (현재 방식)
- 장점:
- 응답 속도가 빠름: 워커가 이미 떠 있어서 작업을 던지면 즉시 실행돼.
- 부하 예측 가능: 워커 개수를 고정해두니 인프라 전체 자원 소모가 안정적이야.
- 단점:
- 낭비되는 자원: 밤에 분석 작업이 없어도 워커 Pod들은 계속 떠서 월급(CPU/Mem)을 받아가.
- 관리 포인트 증가: Redis랑 Flower까지 네가 관리해야 할 Pod이 늘어나지.
KubernetesExecutor
- 장점:
- 극강의 효율: 일이 있을 때만 Pod이 뜨니까 클러스터 자원을 아주 알뜰하게 써.
- 환경 자유도: 작업 A는 Python 3.8, 작업 B는 Python 3.10 이미지로 각각 다르게 띄울 수 있어. (이미지 태그를 다르게 설정 가능)
- 단점:
- 기동 지연 (Overhead): 작업마다 Pod을 새로 만드니, 실제 코드가 돌기 전까지 5~10초 정도 준비 시간이 걸려.
- K8s 부하: 작업이 수천 개면 K8s API 서버가 Pod 생성하느라 정신없어질 수 있어.
3. 어떤 환경에서 뭐가 더 좋을까?
CeleryExecutor가 유리한 경우
- "빨리빨리"가 중요한 환경: 1~2분 안에 끝나는 짧은 작업이 엄청나게 많이 몰아칠 때 좋아.
- 자원이 넉넉한 환경: 회사 내부 클러스터(L.Cloud 등) 자원이 여유로워서 워커 몇 개 상시 띄워두는 게 안 아까울 때.
- 이미 익숙한 운영: 지금처럼 Redis, Flower 구조가 이미 잡혀 있고 트러블슈팅이 익숙할 때.
KubernetesExecutor가 유리한 경우
- "자원 아끼기"가 최우선인 경우: 작업이 간헐적으로(예: 새벽에만 왕창) 돌 때.
- 작업마다 사양이 다를 때: 어떤 작업은 메모리 32GB가 필요하고, 어떤 건 1GB면 될 때 (Pod마다 Resource 설정을 다르게 줄 수 있음).
- 인프라 관리 최소화: Redis 같은 외부 브로커 관리가 귀찮고 K8s 기능만으로 끝내고 싶을 때.
'Dataops > Airflow와 Trino' 카테고리의 다른 글
| 🔐 OPA API로 Trino Access Control(접근 제어)하기 (0) | 2026.05.13 |
|---|---|
| 🐰 Trino iceberg와 hive connector 비교하기 (0) | 2026.03.01 |
| Airflow와 Trino 관계 보기 (0) | 2026.03.01 |