본문 바로가기
데이터

초보자가 접근하는 ETL 에어플로우 Airflow

by 웨더맨 2025. 12. 2.
반응형

초보자가 접근하는 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가지 용어는 반드시 이해해야 합니다.

  1. DAG (Directed Acyclic Graph): 작업의 흐름도입니다. "A 작업이 끝나면 B를 해라"와 같은 전체 지도를 의미합니다.
  2. Operator (오퍼레이터): 실제로 일을 하는 작업자입니다.
    • PythonOperator: 파이썬 함수 실행
    • BashOperator: 쉘 명령어 실행
    • PostgresOperator: DB 쿼리 실행
  3. Task: 오퍼레이터가 DAG 안에서 구체화된 하나의 작업 단위입니다.
  4. 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. 초보자가 주의해야 할 점 (팁)

  1. 에어플로우는 데이터 처리 엔진이 아닙니다.
    • 에어플로우 자체에서 수 기가바이트(GB)가 넘는 데이터를 직접 처리(Pandas 등으로 메모리에 올려서)하려고 하면 서버가 멈춥니다.
    • 올바른 방법: 에어플로우는 "명령"만 내리고, 실제 무거운 작업은 외부(Spark, BigQuery, AWS Glue 등)에서 수행하도록 시키는 것이 정석입니다.
  2. 멱등성 (Idempotency) 유지
    • 같은 작업을 두 번, 세 번 실행해도 결과가 똑같아야 합니다. (예: 데이터를 DB에 넣을 때, 이미 있는 데이터면 중복해서 넣지 않고 덮어쓰거나 무시하도록 코드를 짜야 합니다.)
  3. XCom 주의
    • Task 간에 데이터를 주고받을 때 XCom이라는 기능을 씁니다. 하지만 여기에 큰 데이터를 담으면 안 됩니다. 작은 메타데이터(파일 경로, 날짜 등)만 주고받으세요.

4. 추천 학습 리소스

  • 공식 문서: Apache Airflow Documentation (튜토리얼 섹션이 잘 되어 있습니다.)
  • 유튜브: "Data with Marc" 채널 (에어플로우 초보자 강의로 매우 유명합니다.)
  • 연습 사이트: Crontab.guru (Cron 스케줄링 문법 연습)

요약하자면:
파이썬 기초를 다진 후, **Docker(또는 Astro CLI)**를 통해 환경을 구축하고, 간단한 PythonOperator들을 연결하는 것부터 시작해 보세요.

728x90
반응형

댓글