Apache Airflow

  • 데이터 파이프라인을 작성하고 스케줄링 및 모니터링을 하는데 사용되는 워크플로우 관리 오픈 소스 플랫폼이다.
  • Python 을 사용해 DAG(Directed Acyclic Graph, 비순환 방향 그래프)를 작성해 ETL 작업을 정의할 수 있다.
  • 데이터 엔지니어에서도 자주사용하지만 MLops 에서도 사용되고 있다.

장점

  • 의존성을 부여한 데이터 파이프라인을 사용할 수 있다.
  • python을 사용해 코드기반으로 워크플로우를 정의하기 때문에 라이브러리 등을 사용할 수 있다.
  • 웹 UI를 통해 복잡한 파이프라인도 한눈에 알아볼 수 있고 모니터링하기 편리하다.
  • 데이터 엔지니어 분야에서 많이 사용되기 때문에 활발한 커뮤니티가 존재한다.
  • Airflow 공식문서가 깔끔하게 잘 나와있다.

단점

  • Airflow는 database, worker, webserver, scheduler 등 다양한 구성 요소를 함께 배포하기 때문에 복잡할 수 있다.
  • 가벼운 플랫폼이 아니기 때문에 어느정도 넉넉한 리소스가 필요하다.
  • 업데이트가 잦아 최신 정보를 찾기 어려울 수 있다.

구축 방법

  • Airflow 를 구축해 사용하는 방법에는 크게 3가지 방법이 있다.

VM에 Airflow 설치

  • pip 을 사용해 airflow를 설치할 수 있다.
pip install apache-airflow
  • 또는, docker-compose를 사용할 수 있다.
  • 공식문서에서 기본 설정이 된 docker compose 파일을 제공하고 있다. Link
  • 단, docker를 미리 설치해둬야 한다.

클라우드 서비스

  • aws에 airflow 를 제공하는 서비스인 Managed Workflows for Apache Airflow 가 있다.
  • GCP에는 Cloud Composer 가 있다.
  • 이처럼 클라우드 서비스에서도 airflow를 제공하고 있다.
  • 직접 설치해서 사용하는 것 보다 편리하게 사용할 수 있지만 자유도가 낮다.

Kubernetes + Helm

  • 여러개의 VM을 운영할 수 있는 분산환경인 Kubernetes를 사용해 효율적으로 배포하고 관리할 수 있다.
  • Helm은 패키지 관리 도구로 airflow를 쉽게 구성하고 배포할 수 있게 해준다.
  • 각 작업이 개별 컨테이너에서 작동하기 때문에, 작업간에 영향을 받지 않는 장점이 있다.
  • Kubernetes는 내용이 방대하고 어렵기 때문에 사용하기 위해서는 인프라나 도구에 대해서 추가적인 지식이 필요하다.
  • 리소스가 많이 필요될 수 있기 때문에 오버 엔지니어링이 될 수 있다.