시리즈 기획: 아파치 에어플로우

지난 2년 반동안 데이터를 다뤄오면서 데이터 중심 워크플로우를 구성하는데 아파치 에어플로우(Apache Airflow)의 도움을 많이 받았습니다. 워크플로우 엔진 혹은 워크플로우 매니저에는 에어플로우 이외에도 아즈카반(Azkaban), 우지(Oozie), 루이지(Luigi)등 여러 오픈소스 제품들이 있습니다. 각기 특징이 있지만, 에어플로우는 직관적이고 다양한 기능의 UI와 적은 관리 비용, 그리고 높은 확장성으로 점점 사용자 층이 두터워지고 있습니다.

저는 데이터 분석팀에서 데이터 과학자 분들께 에어플로우 환경을 제공하고, 다양한 요구사항을 만족하는 워크플로우를 만들고 있습니다. 또한 새로 합류하는 분들께 여러 번 에어플로우의 기능을 설명하고 바뀌는 데이터 환경에 맞춰서 에어플로우 실행 환경을 개선해나간 경험이 새로 시작하시는 분들에게 도움이 될 수 있겠다는 확신이 들어서 시리즈로 블로그 포스트를 기획했습니다.

앞으로 에어플로우에 관한 시리즈 글을 통해서 전달하고 싶은 가치는 크게 세 가지입니다.

  1. 자신이 원하는 워크플로우를 DAG와 Task로 표현할 수 있다.
  2. 워크플로우가 서비스 환경에서 실행할 수 있도록 에어플로우 프로세스들을 적절하게 구성할 수 있다.
  3. 필요한 플러그인을 만들어서 자신의 환경에 맞게 확장 할 수 있다.

우선 큰 틀은 정했지만, 내용을 채워나가면서 순서나 제목은 달라질 수 있습니다.

Part 1. 실습으로 익히는 에어플로우 기본

Part 2. 데이터베이스를 이용한 실전 에어플로우

  • 2-1. REST API 호출 결과를 MySQL 에 저장하기 (Hook)
  • 2-2. 멱등원(idempotent)을 만족하는 오퍼레이터
  • 2-3. 성공하려면 때를 기다릴 줄 알아야 한다 (Sensor)
  • 2-4. 데이터베이스가 없으면 작업끼리 말도 못하나? (XCom)

Part 3. 알아두면 좋은 에어플로우 개념들

  • 3-1. 워크플로우란?
  • 3-2. 에어플로우 핵심 정리 (DAG, Task, Operator, Sensor, Hook, XCom)
  • 3-3. 에어플로우 운영환경 구성
  • 3-4. 에어플로우 설정 정리

Part 4. 에어플로우 사례연구

  • 4-1. 데이터 분석의 대부분. ETL
  • 4-2. 공통적으로 사용하는 워크플로우(Subdag)로 자원을 아껴라
  • 4-3. 동적으로 워크플로우를 만든다 (Dynamic Dag)
  • 4-4. 플러그인(Plugins)으로 확장하라

Part 5. 골치아픈 문제들 (Tips and Tricks)

  • 5-1. start_date, schedule_interval, dag_id
  • 5-2. backfillclear
  • 5-3. Python 3
  • 5-4. 단점

작은 블로그라 피드백을 얻는 것이 쉽지 않으리라 생각하지만, 의견주신다면 반영해서 더 많은 분들께 도움이 되도록 하겠습니다.