Airflow

Sieun·2023년 2월 4일
1

Data Engineering

목록 보기
3/4
post-thumbnail

Airflow란

  • Apache Airflow: 프로그래밍 방식으로 워크플로우를 작성, 예약 및 모니터링하는 오픈 소스 플랫폼이다. Airflow는 정확한 시간에, 정확한 방법으로, 정확한 순서대로 실행하게 해주는 오케스트레이터이다. (공식문서)

Airflow는 AirBnB에서 만든 workflow management tool이다. workflow는 일련의 작업의 흐름을 뜻한다. 예를 들어서 ETL 같은 경우는 데이터를 Extractaction → Transformation → Loading 하는 작업의 흐름이 있는데, 이러한 workflow를 관리하는 툴이 Airflow이다.
여기서 관리라는 것은 워크플로우(workflow)를 작성, 스케줄링, 모니터링 하는 작업을 말한다.
Airflow는 최근 mlops에서도 많이 사용되고 있으며 Data Engineering 영역에서도 많이 사용되는 SW이다.

Airflow의 장점

  • Dynamic Data Pipeline
    Airflow는 데이터 파이프라인을 정의하는데, Python을 이용한다.
    따라서 Python으로 가능한 대부분의 작업들을, Airflow 파이프라인에서 처리가 가능하다.

  • Scalability
    Airflow는 매우 뛰어난 확장성을 가지고 있다. 원하는 만큼의 다양한 Task들을 병렬적으로 실행이 가능(Parellelly executable)하다. 또한 쿠버네티스(Kubernetes) 클러스터, 분산 클러스터 환경에서도 파이프라이닝이 가능하다.

  • Useful User Interface
    Airflow Webserver에서 제공해주는 웹 인터페이스를 통해 데이터 파이프라인을 모니터링, 관리하기 매우 편리하다.

  • High Extensiblility
    Airflow Instance에는 손쉽게 Plugin을 설치할 수 있어서, 새로운 작업 툴이 나와 적용해야할 필요가 있을때는 플러그인을 개발하여 적용할 수 있다. 따라서 Airflow가 특정 툴을 지원할 때 까지 기다릴 필요가 없다. 이처럼 Airflow Instance는 Customizing 하기가 굉장히 쉽다.

Core components

  • Scheduler : Workflow를 스케줄링하는 스케줄러 데몬이다. Airflow에서 가장 핵심이 되는 컴포넌트
  • Web Server : 앞서 언급한 Airflow의 웹 인터페이스를 제공하는 웹 서버이다. Flask와 Gunicorn을 이용하여 인터페이스를 제공한다.
  • MetaStore(MetaDB) : 메타데이터가 저장되는 데이터베이스이다. 주로 Postgresql을 추천하지만, SQL Alchemy와 호환 가능한 MySQL이나 SQLite도 이용이 가능하다.
  • Executor : 어떤 환경에서 Task가 실행(Execute)될지에 대한 타입을 정의한다.
    Debug Executor, Local Executor, Sequential Executor, Celery Executor , etc.. Executor Type Doc
  • Worker : 실제 Task를 처리하는 컴포넌트
    Executor가 어떻게 실행될지에 대해 정의하고, Worker는 실제 프로세스를 작업한다.

참고문헌
https://velog.io/@jjongbumeee/Airflow1 - 👀
https://lsjsj92.tistory.com/631

profile
AI/ML 공부중👩🏻‍💻

0개의 댓글