데이터 워크플로우를 파이프라인으로 관리하여 작업을 오케스트레이션하는(task orchestration) 대표적인 두 가지 툴 Airflow와 Kubeflow의 특징을 비교한 포스트입니다. 🌊
Data Workflow Management Tool , Airflow 란?
데이터를 전처리, 학습, 예측, 배포하거나 ETL을 하다보면 작업들이 일련의 워크플로우로 연결되어 수행되어야 하는 경우가 많습니다. 이 워크플로우를 파이프라이닝하여 쉽게 관리 및 배포할 수 있도록 도와주는 대표적인 툴이 바로 Airflow와 Kubeflow죠. 이번 포스팅에서는 이 둘의 특징을 소개하고 공통점과 차이점을 알아보려고 합니다!
Scalable, Dynamic, Extensible and Elegant
Wikipedia
소개
Apache Airflow는 데이터 엔지니어링 파이프라인을 위한 오픈소스 워크플로우 매니지먼트 플랫폼입니다. Airbnb가 2014년에 시작한 프로젝트로, 시간이 지날 수록 복잡해지는 워크플로우를 관리하기 위해 만들었습니다. 덕분에 Airbnb는 Airflow 내장 UI를 통해 자기들의 워크플로우를 프로그램으로 작성하고 스케줄할 수 있게 되었습니다.
Airflow는 Python으로 작성되었고, 워크플로우 또한 Python으로 작성됩니다! 다른 워크플로우 플랫폼들처럼 XML같은 markup language를 사용하는 대신 Python을 채택함으로써 개발자들은 여러 라이브러리와 클래스를 import하여 그들만의 워크플로우를 만들기가 한층 수월합니다.
특징
Airflow는 워크플로우 오케스트레이션을 관리하기 위해 DAG(Directed Acyclic Graph)를 이용합니다. 작업들(tasks)과 의존성(dependencies)들은 Python으로 정의되어 있고 Airflow가 스케줄링과 실행을 맡아서 관리합니다. DAG가 미리 정의된 스케줄(ex. 매 시간, 매일 등)마다 동작하거나 혹은 특정 외부 이벤트 트리거(ex. Hive에 파일이 생성됨)가 있을 때 동작하도록 설계할 수 있습니다. 기존의 DAG 기반 스케줄러들은 DAG를 생성하기 위해 여러개의 config 파일과 파일 시스템 트리를 만들어야 했지만, Airflow는 단 하나의 Python 파일로 DAG를 생성할 수 있습니다!
Airflow 컴포넌트
Simple, Portable, Scalable "on Kubernetes"
Wikipedia
소개
Kubeflow는 쿠버네티스 클러스터에서 머신러닝 워크플로우가 더욱 쉽고 조화롭게 작동할 수 있도록 디자인된, Google에서 시작된 오픈소스 프로젝트입니다. Kubeflow는 on-premise, GCP, AWS, Azure등 쿠버네티스가 돌아가는 곳이라면 어디든 작동할 수 있게끔 설계되어 있습니다. 쿠버네티스를 이용한 ML(Machine Learning) 워크플로우 배포를 쉽고, 편리하고, 확장하기 쉽게 만들어주기 위해 개발된 프로젝트입니다. 또한 ML 프로젝트를 다양한 인프라로 쉽게, 직관적으로 배포하는 방법을 제시합니다.
특징
Kubeflow 컴포넌트
참고 자료 1 - Airflow vs. Luigi vs. Argo vs. MLFlow vs. KubeFlow
참고 자료 2 - A Comprehensive Comparison Between Kubeflow and Airflow
Pipeline과 DAG의 차이
Pipeline은 각각의 작업(task)이 up/downstream을 최대 하나씩밖에 가지지 못하는, 제한된 형태의 DAG라고 보면 됩니다. Pipeline에서는 모든 작업들이 일렬로 연결되어 있지만, DAG에서는 각 task들이 저마다 다른 dependency를 가지고 있다는 차이점이 있습니다.
보다시피 Airflow와 Kubeflow는 서로 다른 목적을 위해 만들어진 툴이기 때문에, 서로가 대안이 될 수는 없습니다.
공통점
차이점
Airflow | Kubeflow | |
---|---|---|
형태 | DAG 기반 워크플로우 | Pipeline 기반 워크플로우 |
목적 | task(pipeline) orchestration | ML 학습, 실험 추적 등 ML 작업 |
특징 | 데이터 파이프라인, ML 모델링, 인프라 관리 등 다양한 작업 | ML 작업에 특화 |
환경 | 다양한 환경에서 작업할 수 있음 | 쿠버네티스 환경에서만 작업할 수 있음 |
Airflow는 범용적인 목적을 가진 task orchestration 툴이고, Kubeflow는 일련의 머신러닝 작업들을 쉽게 자동화해주는 쿠버네티스 전용 툴입니다. 배포 환경이 쿠버네티스를 이용하는지, 그리고 프로젝트 전반에 걸진 워크플로우가 머신러닝 중심인지를 판단하여 적절한 툴을 고르면 됩니다. 🐱
좋은 내용 감사합니다. 그런데 kubeflow의 파이프라인도 dag형태로 표현 가능하다고 알고 있습니다.
https://www.kubeflow.org/docs/components/pipelines/v1/concepts/graph/