본문 바로가기
IT/Framework

Apache Airflow

by 물통꿀꿀이 2019. 9. 16.

Apache Airflow(줄여서 Airflow)는 Airbnb에서 개발한 워크플로우(Workflow) 모니터링 및 스케줄링 플랫폼이다. 

(2016년도에 아파치재단의 인큐베이터 프로젝트로 등록되었고 2019년인 현재는 Top-Level 프로젝트이다.)


Airflow의 가장 큰 장점은 코드를 통해 워크플로우를 정의할 수 있기 때문에, 워크플로우를 다양한 방식으로 사용 및 유지 보수 할 수 있다.

이는 Airflow의 내부 개념과 맞닿아 있는데 간단히 살펴보면 다음과 같다.

- DAG (Directed Acyclic Graph)

Collection of all the tasks로 실행하고자 하는 모든 작업을 의존성에 따라 구성한다.

단, 구성된 작업이 Acyclic 구성이 아닌 Cyclic이라면 내부적으로 에러가 발생한다.

- Operator

사용자가 원하는 작업을 수행할 수 있도록하는 템플릿이며, 하나의 Operator는 워크플로우상에서 하나의 Task를 나타낸다.

- Task

Operator의 인스턴스

- Task Instance

DAG에 할당되어 실행 상태를 나타내는 Task

즉, Task는 워크플로우가 실행되기 전이라면 Task Instance는 워크플로우가 실행된 것


하지만 Airflow와 같은 워크플로우 플랫폼은 이미 여러가지가 존재한다. 그렇다면 몇몇개와 비교하면서 Airflow의 장단점에 대해 알아보도록 하자.



비교 부분이 여러가지 있지만 더 자세한 것은 아래 Reference에서 살펴보고 몇몇 특징만 본다면 위와 같다. 

그럼 Airflow를 제외한 4가지 중에 Step Functions와 비교해보자.


먼저, Step Functions의 장점은 Owner가 Amazon이라는 것이다. 다시 말해서 Cloud 환경에서 동작하기 때문에 HA를 기본적으로 보장한다. 또한 Lambda와 함께 사용할 수 있으므로 사용자가 원하는 여러 방향의 워크플로우를 만들 수 있다. (+ 가격도 싸다는 것)

하지만 문제는 AWS 내에서만 사용 할 수 있다는 것이고 UI를 원한다면 추가적으로 CloudWatch를 통한 모니터링을 해야한다.


Airflow는 특정 서비스에만 종속된 것이 아닌 여러 서비스와 같이 사용 할 수 있다. 또한 강력한 UI를 가지고 있기 때문에 내부 동작 과정을 면밀히 살펴볼 수 있는 등 UI를 사용하여 다양한 모니터링이 가능하다.

하지만 Step Functions에 비해 큰 단점은 Cloud에 Native하지 않다는 것이다. 당연히 Owner가 Cloud Provider가 아니기 때문에 나타날 수 밖에 없는 큰 단점이다. 때문에 HA를 지원하기 위해서는 Load balancer, Resource Manager 등등의 지원이 필요하다. (추가로 처음보는 사람에게는 UI가 어려울 수 있다.)


Airflow를 튜토리얼에 따라 실행해보면,

그림 1. Webserver 실행


그림 2. Airflow UI


위에서도 언급했듯이 Airflows는 여타 서비스와 연결해서 사용할 수 있다.

즉, Airflow에서 이미 만들어놓은 라이브러리를 Hooking해서 사용하는 것이다. 현재 지원하는 서비스는 아래 페이지를 참조하면 된다.

https://airflow.apache.org/integration.html#


Reference

https://xunnanxu.github.io/2018/04/13/Workflow-Processing-Engine-Overview-2018-Airflow-vs-Azkaban-vs-Conductor-vs-Oozie-vs-Amazon-Step-Functions/

https://github.com/apache/airflow

https://airflow.apache.org/index.html

'IT > Framework' 카테고리의 다른 글

Apache Mesos  (0) 2019.09.23
Prometheus  (0) 2019.09.09

댓글