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는 내용이 방대하고 어렵기 때문에 사용하기 위해서는 인프라나 도구에 대해서 추가적인 지식이 필요하다.
- 리소스가 많이 필요될 수 있기 때문에 오버 엔지니어링이 될 수 있다.