Airflow란
배치로 던지는 작업에 대한 실행 계획을 비순환 방향성 그래프로 나타내어 의존성, 진행 현황 등을 추적할 수 있는 workflow 엔진입니다.
대용량의 데이터를 가공할 때, 여러 로컬 머신에서 원격 클러스터로 작업을 제출하는 경우가 많습니다.
일회성 추출, 크론탭에 등록한 작업 등등.. 결국에는 여러곳에서 한정된 자원에 접근해야 하기 때문에, 이전 작업에 다음 작업이 영향을 받기 마련입니다. Airbnb에서는 이러한 이슈를 Airflow가 해결할 수 있다고 소개했습니다.
어떻게 해결할 수 있을까요?
1. 이전 작업이 끝난게 맞는지 확인하고 다음 작업을 실행한다.
- 작업은 가장 상위개념인 DAG, DAG를 이루는 다수의 Task로 구성됩니다.
- 엔지니어가 직접 Task들끼리의 실행 순서나 의존성 여부를 명시할 수 있습니다.
A -> A' -> A'' 과 같은 형태로 이전 작업의 결과에 의존하는 가공을 할 때 A가 실패한 이후에는 더이상 실행되지 않게끔, A -> B -> C 처럼 의존성이 없고, 순서대로 실행해야 하는 경우 A가 실패하면 A는 나중에 재시도 하게끔 하고 B를 우선 실행시키는등.. 을 조정할 수 있습니다.
2. Cron을 커버할 수 있는 스케줄링
- 기존에 크론탭에 작업을 등록하던 것 처럼, 일정한 주기에 작업을 실행시킬 수 있습니다.
- 시작일을 명시할 수 있어, 현 시점과 시작일 사이에 실행이 안된 시점이 있으면 알아서 실행을 시켜줍니다.
- 파이썬 스크립트이기 때문에, 형상관리 또한 가능합니다.
3. 모니터링에서의 이점
- 웹서버에서 실행 결과 로그 확인이 가능해, 굳이 로그 파일을 열지 않아도 언제, 어느 Task에서, 어떤 부분에서 실패했는지 확인이 수월합니다.
- 그외 실패하면 재시도를 할지, 재시도를 몇번 할지, 메일을 보낼지 등.. ETL파이프라인 관리에 편의성을 제공하는 다양한 옵션이 존재합니다.
본 포스팅은 아래의 자료를 참고해 작성한 내용입니다.혹시 내용 중 추가/수정 해야할 부분이 있다면 댓글 부탁드립니다. 감사합니다.
Documentation
Platform created by the community to programmatically author, schedule and monitor workflows.
airflow.apache.org