얼마전에 프로그래머스에서 하는 "실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 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는 다음과 같은 구조를 갖는다.
- Web Server: 사용자 인터페이스를 제공하는 서버
- Scheduler: DAG를 읽어와서 이에 정의된 작업과 종속성 그래프를 기반으로 작업의 실행을 계획하고 예약한다.
- Worker: 실제로 작업을 실행하는 컴퓨팅 자원으로, Executor의 종류에 따라 동작 방식이 다양하다.
- DAG(Directed Acyclic Graph): 작업과 작업의 종속성을 정의한다. DAG에서 작업의 실행 순서와 관계를 명시적으로 정의하며, 작업간의 의존성을 관리한다.
- Metadata Database: Airflow의 작업 및 실행 상태, 종속성, 결과 및 히스토리 등을 저장하는 중앙 저장소이다. 디폴트로 SQLite를 제공하지만, 대규모 및 운영환경에서는 PostgreSQL, MySQL 등과 같은 외부 데이터베이스를 사용하는것을 권장한다.
'Data Engineering > Airflow' 카테고리의 다른 글
Airflow에서 custom timetable로 자유롭게 스케쥴 설정하기 (0) | 2024.07.28 |
---|---|
Helm Chart로 쿠버네티스에 Airflow설치(KubernetesExecutor 사용) (0) | 2024.04.13 |
[Airflow] git-sync 설정하기 (0) | 2024.03.31 |
docker-compose로 Airflow 설치하기 (0) | 2024.03.17 |
Airflow Rest API를 사용하여 DAG 호출하기 (0) | 2024.01.13 |