Cloud
Airflow란?
Yunny52
2023. 5. 3. 19:54
멀티 클라우드 플랫폼을 개발할 때 필요한 툴 중 하나인 Airflow에 대해 알아봤다!
Airflow 자체를 처음 접했던 거라,, 아주 기초적인 내용부터 다루고자 한다.
📌 Apache Airflow란?
- 초기 에어비앤비(Airfbnb) 엔지니어링 팀에서 개발한 오픈소스 워크플로우 관리 플랫폼
- 프로그래밍 방식으로 워크플로우를 작성, 예약 및 모니터링
- 즉, 복잡한 워크플로우를 프로그래밍 방식으로 작성해서 스케줄링하고, 모니터링할 수 있는 플랫폼
📌 Airflow Key Concept
1️⃣ DAG (Directed Acyclic Graph)
- 순차적으로 작업이 이루어지며, 순환 실행을 방지한다.
- 하나의 DAG 안에는 한 개 이상의 task가 있다.
2️⃣ Operator
- 작업을 정의하는데 사용한다.
- Operator 타입
- Action Operator: 기능이나 명령을 실행. 실제 연산, 데이터 추출 및 프로세싱 수행.
- Transfer Operator: 하나의 시스템을 다른 시스템으로 옮기는 역할 수행.
- Sensor Operator: 조건이 만족할 때까지 기다렸다가 조건이 충족되면 다음 task를 실행시키는 역할 수행
3️⃣ Task & Task Instance
- Task
- 데이터 파이프라인에 존재하는 operator를 의미
- Operator를 실행하면 task가 됨
- Task Instance
- 데이터 파이프 라인이 Trigger되어 실행될 때 생성된 Task
#️⃣ Operator vs Task
operator와 task가 같은 의미로 느껴질 수 있지만, 사용자는 각 환경별 작업이 잘 이루어지는지 확인하기 위해 operator 내 코드를 구성하고, airflow는 각 operator 내의 구성 요소들이 전부 잘 맞을 경우 task를 올바르게 실행하기에 차이가 있다.
📌 Airflow Component
- Webserver: 웹 대시보드 UI로, 스케줄러에서 분석한 DAG를 시각화하고 DAG 실행과 결과를 확인할 수 있는 인터페이스를 제공한다.
- Scheduler: DAG를 분석하고 현재 시점에서 DAG의 스케줄이 지난 경우 Airflow worker에 DAG의 task를 예약한다.
- Worker: 예약된 task를 실제로 실행시킨다.
- Metastore:Airflow에 있는 DAG, task 등의 메타데이터를 관리한다.
- Executor: task가 어떻게 실행되는지 정의한다.
📌 Airflow 기본 동작 원리
- 사용자가 DAG로 새로운 워크플로우를 작성하면 DAG 폴더 안에 파이썬 파일이 배치된다.
- Airflow Scheduler가 DAG 내용을 파싱하여 읽어온다.
- Scheduler가 DAG Run 오브젝트를 생성하는데, 이는 사용자가 작성한 DAG가 인스턴스화된 것이다. 이때 DAG Run의 상태는 "Running"이며, 이들은 Metastore에 전달된다.
- DAG Run 오브젝트는 task instance를 생성하고, Scheduler는 task instance를 스케줄링한다.
- task가 여러 개라면, Metastore와 task의 처리 상태를 업데이트하면서 실행한다.
- DAG의 예약된 시간이 지났다면 task를 예약한다. 예약된 task가 존재하는 동안 task 간의 의존성을 확인하고, 의존성이 모두 해결되었다면 실행할 task를 대기열에 추가한다.
- Airflow Worker는 예약된 task, 즉 대기열에 추가된 task를 실행하고 결과를 반환한다.
- 반환된 task 실행 결과는 Airflow Metastore에 저장된다.
- Scheduler는 DAG 실행이 완료되었는지 Metastore를 통해 확인 후에 DAG Run의 상태를 "Completed"로 변경한다.
- Airflow Webserver에 DAG 목록과 task 결과가 전달되면, 사용자는 웹 인터페이스를 통해 task 실행과 결과를 모니터링할 수 있다.
📌 Airflow 장단점
- 장점
- 동적인 데이터 파이프라인: 데이터 파이프라인을 정의하는데 파이썬을 이용하기 때문에 파이썬으로 가능한 대부분의 작업을 에어플로우 파이프라인에서 처리할 수 있으며, 동적인 구성이 가능하다.
- 뛰어난 확장성: 파이썬 코드를 이용하여 파이프라인을 구현하므로, 파이썬 기반으로 쉽게 확장 가능하고 다양한 시스템과 통합 가능하다.
- 편리한 사용자 인터페이스: 웹 서버에서 제공하는 인터페이스를 통해 데이터 파이프라인을 모니터링하고 관리하기 편리하다.
- 단점
- Airflow는 반복적이거나 배치 태스크를 실행하는 기능에 초점이 맞춰져 있기에, Data streaming solution에 적용하기엔 적합하지 않다.
- 파이썬 경험이 없는 경우 DAG 구성에 어려움이 있을 수 있다.