반응형
https://youtu.be/IirxP-a14HU?si=29vjK7bjE2_ZnSzO
- ML 파이프라인 구축이 필요하거나
- Data, Batch Processing이 필요하거나
- Infrastructure Automation이 필요하거나
- Workflow Management tool은 있으나 K8s-native Soluction을 들어보고 싶거나
Workflows
작업을 DAG 형태로 정의할 수 있음. Graph의 node는 task (작업) 을 의미한다.
- k8s Native, container-based, yaml-based
- Python SDK 제공
- Dynamic Workflows
- Argo cli 또는 web ui로 workflow 정의하고 실행할 수 있다.
- api client 또는 argo event로 trigger
- workflow controller가 workflow reconciliation 담당.
Airflow
에어비앤비가 개발하고 Apache 재단 소속의 automation open source.
- python script / task based, DAG 형태로 정의 가능.
- k8s 아닌, Monolithc 구조에서도 Workflow를 정의하고 실행할 수 있다.
분산 환경에서의 Airflow 구조
- 사용자는 DAG file을 생성할 수 있음.
- plugin 폴더에 scheduler, executor, web server 세 개의 컴포넌트를 정의한다.
- scheduler: DAG workflow를 실행하는 trigger
- executor: scheduler의 일부로, configuration property of scheduler 담당.
- pre-built 쓰거나 customize
- webserver: apache airflow UI
- metadata DB: workflow와 각 workflow의 state를 저장한다.
비교
features
Workflows:
- k8s native이고 yaml based로 동작.
- Python SDK인 Hera도 지원하고, REST API 제공
- k8s 기능을 쉽게 활용할 수 있음. resource limit 설정, service Account 등
- Artifact Support (S3, Public Clouds...)
- Cron Workflow, 재사용 가능한 Template 제공
Airflow
- Pythonic DSL. python으로 작성해야 함
- 다양한 datasource에 접근할 수 있는 pre-built connector library 제공
- k8s에서도 실행 가능
- scalable. 싱글 서버가 최소 단위이므로, 서버 여러 대 붙이면 그대로 scale됨.
- DAG
monitoring / observability
Workflows
- k8s의 모니터링 솔루션 쓸 수 있음. dedicated Prometheus Endpoint 제공
- Argo server의 Web UI로 monitor 쉬움.
Airflow
- k8s monitoring stack이 지원되긴 하지만, k8s 외부에 있는 airflow component는 모니터링 불가능
- Web UI 지원
- built-in Support for Observability
- StatsD 또는 OpenTelemetry 설정 가능
Demo
Argo Event 사용해서 Workflow 실행하는 예시. / Hera라는 Python SDK로도 workflow 구성할 수 있다는 걸 보여주고 끝.
- 아무리 Argo Con이라고는 해도, 같은 데모를 Airflow랑 비교 정도는 해줘야 뭐가 어떤 점에서 더 나은지 알 수 있을 거 아니냐...
반응형