Airflow란

문해피·2023년 5월 24일
0

airflow

목록 보기
2/5

앞에서 설명드린 crontab이 있는데 왜 airflow를 사용할까요?

airflow는 쉽게 말해서 과자공장을 만들어서 차질없이 잘 돌아가게 하는것입니다.
그리고 공장이 잘 돌아가는지 감시가 가능합니다.

🌺Airflow의 기본 개념

Airflow는 Python 코드로 워크플로우(workflow)를 작성하고, 스케쥴링, 모니터링 하는 플랫폼입니다. Airflow를 통해서 데이터엔지니어링의 ETL 작업을 자동화하고, DAG(Directed Acyclic Graph) 형태의 워크플로우 작성이 가능합니다. 이를 통해 더 정교한 dependency를 가진 파이프라인을 설정할 수 있습니다. 또한 AWS, GCP 모두 Airflow managed service를 제공할 정도로 전세계 데이터팀들에게 널리 사용되고 있으며 그만큼 넓은 커뮤니티를 형성하고 있습니다.


🪻Airflow의 장점

  • 스케쥴링과 자동화 : 에어플로우는 작업을 스케줄링하고 자동으로 실행하는것이 강점입니다.
    시간 기반 스케줄링, 종속성 관리, 재시도 및 실패 처리 등 다양한 스케줄링 기능을 활용하여 작업을 효율적으로 관리할 수 있습니다.

  • 유연한 작업의 흐름 : Airflow는 작업간의 종속성과 흐름을 유연하게 정의가 가능합니다.
    DAG(Directed Acyclic Graph)라는 그래프 구조를 사용하여 작업 간의 종속성을 명확하게 표현할 수 있으며, 작업 간의 조건부 실행과 병렬 실행을 지원합니다.

  • 확장성 : Airflow는 많은 양의 데이터 및 복잡한 작업 흐름을 처리할 수 있는 확장성을 제공합니다. 여러 워커 노드를 사용하여 작업을 분산 처리하고, 클러스터 모드에서 수행되는 작업을 확장할 수 있습니다.

  • 모니터링과 경고 : 에어플로우는 실행 중인 작업의 상태와 진행 상황을 모니터링할 수 있는 대시보드와 로그를 제공합니다. 또한, 실패한 작업에 대한 경고 및 알림을 설정하여 프로세스의 건강 상태를 모니터링할 수 있습니다.

💡하지만 초단위로 나눠서 해야하는 작업에는 적합하지 않습니다.
그러한 이유는 Scheduler가 1분마다 작업을 확인하기 때문입니다.


🌸Airflow의 동작원리

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 명령어를 실행시키는 작업을 할 때 사용하는 기계

profile
행복하려고 개발공부하는 문광식의 로그파일입니다.

0개의 댓글