티스토리 뷰
재직 중인 회사에서 airflow를 사용하여 공부 후 정리한 포스팅입니다.
Airflow의 주요 기능
Airflow는 python 기반의 workflow 스케줄러입니다.
workflow는 DAG과 task라는 단위로 다양하게 구성 가능합니다.
DAG은 Directed Acyclic Graph는 약자로, 어떤 task들의 모임으로 구성되는데, task들의 순서를 정해줄 수 있습니다.
Acyclic이므로 순환 구조는 가질 수 없습니다.
DAG와 DAG를 연결해줄 수도 있습니다.
스케줄러와 워커가 나뉘어져 있기 때문에 워커를 확장할 수 있고 이 때문에 수많은 workflow를 실행하고 관리할 수 있습니다.
즉, DAG이 아무리 많아지더라도 관리가 가능하다는거죠.
또한 Airflow는 Web UI 관리 툴이 있어서 다양한 배치작업을 시각화 및 디버깅할 수 있습니다.
Airflow의 한계
목적 자체가 스케줄링 기반이므로 스트리밍, 무한히 실행되는 작업 및 airflow 외부 요소에 의한 트리거 작업을 수행할 수 없습니다.
그러므로 다음과 같은 작업은 지양해야 합니다.
- 지연을 허용하지 않는 작업의 스케줄링
- 워커 내에서 처리되는 고부하 작업
Airflow Architecture
User Interface
위 이미지는 Airflow의 Web UI입니다.
DAG을 진입하게 되면 그 DAG의 Log도 확인할 수 있습니다.
Webserver
Webserver는 위에서 설명했던 User Interface를 제공하는 역할을 합니다.
Scheduler
Scheduler는 예약된 workflow 트리거와 실행할 태스크를 모두 처리하는 역할을 합니다.
Executor
말 그대로 task를 처리하는 작업기입니다.
점선으로 표시된 이유는 필수가 아니기 때문입니다.
보통은 Celery Executor나 Kubernetes Exector를 사용하고, Workers를 사용합니다.
Metadata Database
scheduler, executor and webserver가 상태를 저장하는 데 사용됩니다.
MySQL인 경우 5.7 혹은 8 버전만 가능합니다.
5.7 버전은 하나 이상의 스케줄러로 실행하는 것이 권장되지 않는다고 하여 8 버전을 사용하는걸 추천드립니다.
DAG Directory
~~dag.py를 위치시켜 스크립트를 읽습니다.
dag는 위에서 설명한 스케줄러 웹서버, worker 모두를 알아야 합니다.
결론
airflow의 장점과 어떻게 구성되어 있는지 간단하게 알아봤습니다.
다음 포스팅에서는 Celery Exectutor를 사용한 airflow는 어떤 구조인지 간단하게 살펴보고 실습을 해보겠습니다.
읽어주셔서 감사합니다.
Reference
https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/overview.html
- Total
- Today
- Yesterday
- 이팩티브 자바
- BAEKJOON
- AWS
- Spring
- 코테
- 정규표현식
- 디자인패턴
- programmers
- 알고리즘
- MSA
- Kotlin
- Olympiad
- JPA
- 디자인 패턴
- 객체지향
- 클린 아키텍처
- BOJ
- 이펙티브 자바
- Effective Java
- kkoon9
- 프로그래머스
- C++
- Algorithm
- 클린 코드
- Java
- 백준
- 테라폼
- kotest
- Spring Boot
- node.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |