본문 바로가기
Data Engineering/Airflow

Airflow를 알아보자

by 홍띠 2023. 5. 14.

얼마전에 프로그래머스에서 하는 "실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python" 강의를 수강 완료 했다. 강의를 통해서 그동안 호기심이 많았던 Airflow를 처음 사용해봤다.

앞으로 계속해서 배운 내용을 토대로 Airflow를 더 깊고 다양하게 사용해 볼 예정이나, 그 전에 Airflow에 대해서 좀 더 알아보고 정리해 놓고 싶다는 생각이 들어 이 글을 작성한다.

Apache Airflow 란??

Airflow는 Python 코드를 사용하여 배치 워크플로우를 개발, 예약 및 모니터링 할 수 있는 오픈소스 플랫폼이다. Airflow를 이용하여 ETL작업을 자동화 할 수 있고, 웹 UI를 이용해서 워크플로우의 상태를 관리 할 수 있다. 워크플로우에서는 각 작업간의 종속성을 정의 할 수 있고, 작업을 수행하는 일련의 단계를 구성 할 수 있다. Airflow는 데이터 엔지니어링과 데이터 과학 작업에서 일반적으로 사용되며, 대규모 데이터 처리 및  ETL 작업을 수행하는 데 특히 유용하다.

 

Why Airflow?

  • 확장성과 유연성: Airflow는 많은 종류의 플러그인과 확장성을 제공하여 다양한 사용자 정의작업, 데이터 소스, 모니터링 도구 등을 통합 할 수 있다. 이를 통해 조직의 특정 요구에 맞게 Airflow를 유연하게 사용 가능 하다.
  • 코드 기반의 워크플로우: Airflow의 워크플로우는 Python 코드로 정의되어, 버전 제어, 팀 동시 개발, 테스트 작성, 동적 파이프라인 생성 등이 가능하다.
  • 시각화 및 모니터링: Airflow는 웹 UI를 제공하여 파이프라인 및 개별 작업에 대한 모니터링을 제공한다. 이 UI를 통해 실행중인 작업, 히스토리, 종속성 그래프 등을 시각적으로 확인 할 수 있어, 워크플로우의 작업 상황을 쉽게 파악하고 관리 할 수 있다.
  • 커뮤니티와 생태계: Airflow는 많은 사용자를 보유한 오픈소스 플랫폼으로 활발한 커뮤니티를 보유하고 있다. 이 커뮤니티에서는 다양한 문제 해결, 지원 자료를 제공하고, 향상된 기능과 플러그인도 지속적으로 개발되고 있다.

Airflow 구조?

Airflow는 다음과 같은 구조를 갖는다.

출처: https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/overview.html

  • Web Server: 사용자 인터페이스를 제공하는 서버
  • Scheduler: DAG를 읽어와서 이에 정의된 작업과 종속성 그래프를 기반으로 작업의 실행을 계획하고 예약한다.
  • Worker: 실제로 작업을 실행하는 컴퓨팅 자원으로, Executor의 종류에 따라 동작 방식이 다양하다.
  • DAG(Directed Acyclic Graph): 작업과 작업의 종속성을 정의한다. DAG에서 작업의 실행 순서와 관계를 명시적으로 정의하며, 작업간의 의존성을 관리한다.
  • Metadata Database: Airflow의 작업 및 실행 상태, 종속성, 결과 및 히스토리 등을 저장하는 중앙 저장소이다. 디폴트로 SQLite를 제공하지만, 대규모 및 운영환경에서는 PostgreSQL, MySQL 등과 같은 외부 데이터베이스를 사용하는것을 권장한다.