airflow는 쉽게 말해서 과자공장을 만들어서 차질없이 잘 돌아가게 하는것입니다.
그리고 공장이 잘 돌아가는지 감시가 가능합니다.
Airflow는 Python 코드로 워크플로우(workflow)를 작성하고, 스케쥴링, 모니터링 하는 플랫폼입니다. Airflow를 통해서 데이터엔지니어링의 ETL 작업을 자동화하고, DAG(Directed Acyclic Graph) 형태의 워크플로우 작성이 가능합니다. 이를 통해 더 정교한 dependency를 가진 파이프라인을 설정할 수 있습니다. 또한 AWS, GCP 모두 Airflow managed service를 제공할 정도로 전세계 데이터팀들에게 널리 사용되고 있으며 그만큼 넓은 커뮤니티를 형성하고 있습니다.
스케쥴링과 자동화 : 에어플로우는 작업을 스케줄링하고 자동으로 실행하는것이 강점입니다.
시간 기반 스케줄링, 종속성 관리, 재시도 및 실패 처리 등 다양한 스케줄링 기능을 활용하여 작업을 효율적으로 관리할 수 있습니다.
유연한 작업의 흐름 : Airflow는 작업간의 종속성과 흐름을 유연하게 정의가 가능합니다.
DAG(Directed Acyclic Graph)라는 그래프 구조를 사용하여 작업 간의 종속성을 명확하게 표현할 수 있으며, 작업 간의 조건부 실행과 병렬 실행을 지원합니다.
확장성 : Airflow는 많은 양의 데이터 및 복잡한 작업 흐름을 처리할 수 있는 확장성을 제공합니다. 여러 워커 노드를 사용하여 작업을 분산 처리하고, 클러스터 모드에서 수행되는 작업을 확장할 수 있습니다.
모니터링과 경고 : 에어플로우는 실행 중인 작업의 상태와 진행 상황을 모니터링할 수 있는 대시보드와 로그를 제공합니다. 또한, 실패한 작업에 대한 경고 및 알림을 설정하여 프로세스의 건강 상태를 모니터링할 수 있습니다.
💡하지만 초단위로 나눠서 해야하는 작업에는 적합하지 않습니다.
그러한 이유는 Scheduler가 1분마다 작업을 확인하기 때문입니다.
Airflow는 작성된 pythonDAGs를 읽고, 거기에 맞춰서 Scheduler가 Task를 스케줄링하면, Worker가 Task를 가져가 실행합니다.
이러한 Task의 실행상태는 Database에 저장되고, 사용자는 UI를 통해서 각 Task의 실행 상태, 성공 여부 등을 확인할 수 있습니다.
스케쥴러 : 작업의 스케줄링과 실행을 관리하는 역할을 합니다. 정의된 스케줄에 따라 작업을 실행하고 상태를 감시하여 작업 간의 종속성을 관리합니다.
DAG : 작업간의 종속성을 나타내는 그래프입니다.Airflow에서 작업의 순서와 종속성을 제어하는 핵심 요소입니다.
웹서버 : Airflow의 웹 인터페이스를 제공합니다.
워커 : 작업을 수행하는 실행 단위입니다. 워커는 에어플로우 스케줄러로부터 할당받은 작업을 처리하고 결과를 보고합니다.
MetaDB : Airflow 메타데이터 저장소입니다. 어떤 DAG가 존재하고 어떤 태스크로 구성되었는지, 어떤 태스크가 실행 중이고, 또 실행 가능한 상태인지 등의 많은 정보가 기입됩니다.
PythonOperator : 파이썬 코드를 돌리는 오퍼레이터
sqliteOrerator : SQL DB 사용과 관련된 작업을 할 때 사용하는 오퍼레이터
SimpleHttpOperator : HTTP 요청(request)을 보내고 응답(response) 텍스트를 받는 작업을 할 때 사용하는 오퍼레이터
HttpSensor : 응답(response)하는지 확인할 때 사용하는 센서 기계
BashOperator : bash 명령어를 실행시키는 작업을 할 때 사용하는 기계