반응형
초보자가 접근하는 ETL 에어플로우 Airflow
아파치 에어플로우(Apache Airflow)는 현재 데이터 엔지니어링 분야에서 가장 대중적인 **워크플로우 관리 플랫폼(Workflow Orchestration Platform)**입니다. 엄밀히 말하면 ETL(Extract, Transform, Load) 작업을 '수행'하는 엔진이라기보다, ETL 작업들의 순서와 일정을 '지휘'하고 '관리'하는 도구에 가깝습니다.
초보자가 에어플로우를 잘 사용하기 위해 필요한 지식과 접근 방법을 단계별로 정리해 드립니다.

1. 에어플로우를 잘 쓰기 위해 필요한 핵심 지식
에어플로우는 "Python Code로 워크플로우를 정의한다(Workflow as Code)"는 철학을 가지고 있습니다. 따라서 다음 기술들이 필수적입니다.
① Python (가장 중요)
- 필수: 에어플로우의 모든 설정과 파이프라인(DAG)은 파이썬 코드로 작성됩니다.
- 학습 포인트: 기본 문법, 함수, 클래스, 모듈 임포트, 그리고 Decorator(@task 같은 문법)에 대한 이해가 필요합니다. Pandas 라이브러리도 데이터를 다룰 때 자주 쓰이므로 알면 좋습니다.
② SQL
- 필수: 데이터 추출(Extract)과 적재(Load) 과정에서 데이터베이스와 통신해야 합니다.
- 학습 포인트: SELECT, INSERT, UPDATE 등 기본 쿼리와 테이블 생성/삭제 구문을 알아야 합니다.
③ Linux/Bash 명령어
- 권장: 에어플로우는 리눅스 환경에서 가장 잘 동작하며, BashOperator를 통해 쉘 명령어를 실행하는 경우가 많습니다.
- 학습 포인트: 파일 이동, 권한 설정, 쉘 스크립트 실행 방법 등.
④ Docker (컨테이너)
- 권장: 에어플로우는 설치와 환경 설정이 꽤 까다롭습니다. 로컬 PC(특히 윈도우)에 직접 설치하기보다 Docker를 이용해 띄우는 것이 표준입니다.
- 학습 포인트: 도커 이미지를 받고 컨테이너를 실행하는 기본 개념(docker-compose up 등).
⑤ Cron 표현식
- 필수: 작업을 주기적으로 실행(스케줄링)할 때 Cron 문법을 사용합니다. (예: 0 0 * * * = 매일 자정에 실행)
2. 초보자를 위한 단계별 접근 가이드
처음부터 복잡한 서버를 구축하려 하지 말고, 내 컴퓨터에서 작게 시작하는 것이 좋습니다.
1단계: 환경 구축 (가장 쉬운 방법 선택)
윈도우 사용자라면 파이썬으로 직접 설치하는 과정에서 오류가 많이 발생합니다. 다음 두 가지 중 하나를 추천합니다.
- 방법 A (추천): Astro CLI 사용
- Astronomer라는 회사가 만든 에어플로우 관리 툴입니다. 도커만 설치되어 있다면 명령어 한두 번으로 에어플로우 환경이 완벽하게 구축됩니다. 초보자에게 가장 추천합니다.
- 방법 B: Docker Compose 사용
- 에어플로우 공식 문서에서 제공하는 docker-compose.yaml 파일을 받아 실행합니다.
2단계: 핵심 개념 이해하기 (용어 익숙해지기)
다음 4가지 용어는 반드시 이해해야 합니다.
- DAG (Directed Acyclic Graph): 작업의 흐름도입니다. "A 작업이 끝나면 B를 해라"와 같은 전체 지도를 의미합니다.
- Operator (오퍼레이터): 실제로 일을 하는 작업자입니다.
- PythonOperator: 파이썬 함수 실행
- BashOperator: 쉘 명령어 실행
- PostgresOperator: DB 쿼리 실행
- Task: 오퍼레이터가 DAG 안에서 구체화된 하나의 작업 단위입니다.
- Execution Date (실행 기준일): (주의) 에어플로우에서 가장 헷갈리는 개념입니다. 오늘 배치가 돌더라도, 이 배치가 처리하는 데이터의 기준 날짜는 '어제'일 수 있습니다. 이 개념을 초반에 잘 잡아야 합니다.
3단계: Hello World 찍어보기
- 아주 간단한 DAG를 만들어보세요.
- Task 1: "시작" 출력 (BashOperator)
- Task 2: 파이썬으로 "Hello Airflow" 출력 (PythonOperator)
- Task 1 -> Task 2 순서 연결하기 (task1 >> task2)
4단계: 데이터 흐름 만들어보기 (ETL 기초)
이제 실제 데이터를 다뤄봅니다.
- 공공 데이터 API나 간단한 CSV 파일을 읽어옵니다. (Extract)
- 파이썬(Pandas)으로 데이터를 가공합니다. (Transform)
- 가공된 데이터를 로컬 파일이나 무료 DB(PostgreSQL 등)에 저장합니다. (Load)
3. 초보자가 주의해야 할 점 (팁)
- 에어플로우는 데이터 처리 엔진이 아닙니다.
- 에어플로우 자체에서 수 기가바이트(GB)가 넘는 데이터를 직접 처리(Pandas 등으로 메모리에 올려서)하려고 하면 서버가 멈춥니다.
- 올바른 방법: 에어플로우는 "명령"만 내리고, 실제 무거운 작업은 외부(Spark, BigQuery, AWS Glue 등)에서 수행하도록 시키는 것이 정석입니다.
- 멱등성 (Idempotency) 유지
- 같은 작업을 두 번, 세 번 실행해도 결과가 똑같아야 합니다. (예: 데이터를 DB에 넣을 때, 이미 있는 데이터면 중복해서 넣지 않고 덮어쓰거나 무시하도록 코드를 짜야 합니다.)
- XCom 주의
- Task 간에 데이터를 주고받을 때 XCom이라는 기능을 씁니다. 하지만 여기에 큰 데이터를 담으면 안 됩니다. 작은 메타데이터(파일 경로, 날짜 등)만 주고받으세요.
4. 추천 학습 리소스
- 공식 문서: Apache Airflow Documentation (튜토리얼 섹션이 잘 되어 있습니다.)
- 유튜브: "Data with Marc" 채널 (에어플로우 초보자 강의로 매우 유명합니다.)
- 연습 사이트: Crontab.guru (Cron 스케줄링 문법 연습)
요약하자면:
파이썬 기초를 다진 후, **Docker(또는 Astro CLI)**를 통해 환경을 구축하고, 간단한 PythonOperator들을 연결하는 것부터 시작해 보세요.
728x90
반응형
'데이터' 카테고리의 다른 글
| 알기쉬운 데이터 SQL 계약 테이블과 고객 테이블 조인 시 설계방식 (2) | 2025.09.23 |
|---|---|
| BI개발 SSAS 모델: 파티션 vs. 인메모리 타뷸러 모델 처리방법 차이점 (0) | 2025.09.04 |
| 데이터 분석 OALP MSBI SSAS와 타뷸러 모델 개방방법 차이를 알아보자 (0) | 2025.09.03 |
| 파이썬으로 ETL구현해보기 ETL구현 예제소스 (0) | 2025.08.25 |
| MSSQL LEVEL쿼리 계층형 쿼리 이해하기 (0) | 2025.08.19 |
댓글