학습일지/workflows

KubeCon2024 - Comparing Argo Workflows and Airflow in a distributed environment

inspirit941 2024. 7. 14. 00:15
반응형

https://youtu.be/IirxP-a14HU?si=29vjK7bjE2_ZnSzO

 

스크린샷 2024-07-12 오후 1 55 38

 

  • ML 파이프라인 구축이 필요하거나
  • Data, Batch Processing이 필요하거나
  • Infrastructure Automation이 필요하거나
  • Workflow Management tool은 있으나 K8s-native Soluction을 들어보고 싶거나

스크린샷 2024-07-12 오후 1 58 45스크린샷 2024-07-12 오후 1 59 10

 

Workflows

스크린샷 2024-07-12 오후 2 00 36스크린샷 2024-07-12 오후 2 01 35

 

작업을 DAG 형태로 정의할 수 있음. Graph의 node는 task (작업) 을 의미한다.

  • k8s Native, container-based, yaml-based
  • Python SDK 제공
  • Dynamic Workflows

스크린샷 2024-07-12 오후 2 57 41

 

  • Argo cli 또는 web ui로 workflow 정의하고 실행할 수 있다.
  • api client 또는 argo event로 trigger
  • workflow controller가 workflow reconciliation 담당.

스크린샷 2024-07-12 오후 3 00 06스크린샷 2024-07-12 오후 3 00 18

 

Airflow

스크린샷 2024-07-12 오후 2 01 43

 

에어비앤비가 개발하고 Apache 재단 소속의 automation open source.

  • python script / task based, DAG 형태로 정의 가능.
  • k8s 아닌, Monolithc 구조에서도 Workflow를 정의하고 실행할 수 있다.

스크린샷 2024-07-12 오후 2 51 46

 

분산 환경에서의 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

스크린샷 2024-07-12 오후 3 00 59

 

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

스크린샷 2024-07-12 오후 3 01 23

 

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

스크린샷 2024-07-12 오후 3 01 34

 

Argo Event 사용해서 Workflow 실행하는 예시. / Hera라는 Python SDK로도 workflow 구성할 수 있다는 걸 보여주고 끝.

  • 아무리 Argo Con이라고는 해도, 같은 데모를 Airflow랑 비교 정도는 해줘야 뭐가 어떤 점에서 더 나은지 알 수 있을 거 아니냐...
반응형