티스토리 뷰

이번 주제에서는 단순히 Airflow를 사용하는것이 목적이 아니라,

왜 Airflow가 실무에서 표준이 되었는지, 실무에서 어떤 문제를 해결하기 위해 등장했는지 등등

기술의 도입 이유와 작동 원리에 대해 공부해보는것이 목적이다.

1. 학습 목표 설정

이번 주제에서의 목표

Airflow 3.0을 활용한 데이터 파이프라인 구축 및 운영 능력 습득
AWS 클라우드 환경에서의 실전 구현 경험
ㄴ 실습구조는 AWS EC2 인스턴스 기반이고 Docker를 활용한 Airflw 3.0 설치 및 운영으로 이뤄진다.

이번 주제의 학습 목차

1. Airflow 3.0 과정 목표 및 로드맵
2. 자동화의 필요성
3. 기존 방식의 한계
4. Airflow 소개
5. 핵심 개념
6. AWS 환경 구성


2. 데이터 작업 자동화의 필요성 및 한계

2-1. 데이터 파이프라인 자동화의 필요성

  • 데이터 복잡성: 현대 비즈니스 환경에서 데이터 양과 종류가 급증함에 따라
    체계적인 파이프라인이 필수적
  • 수동 작업의 한계: 인적 오류 위험이 높고 시간 소모적이며, 대용량 데이터
    처리에 한계가 명확
  • 자동화 이점: 일관성, 신뢰성, 효율성을 제공하며 작업 의존성 관리 및 재시도가
    용이

2-2. 기존 데이터 작업 자동화의 한계

  • Cron 스케줄링 문제: 단순 시간 기반 실행만 가능하며, 작업 간 의존성 관리가
    어렵고 실패 시 알림 기능이 제한적
  • 수동 배치 작업 한계: 반복적인 수동 개입이 필요하고 작업 이력 추적이
    어려움
  • 의존성 관리 어려움: 복잡한 의존 관계를 코드로 표현하기 어렵고 변경 시 전체
    수정이 필요
  • 재실행 메커니즘 부재: 실패 지점부터 재시작하기 어렵고 특정 기간 데이터만
    선택적 처리가 어려움
  • 운영 가시성 부족: 실시간 모니터링이 어렵고 문제 발생 시 원인 파악이
    지연됨

3. Apache Airflow 소개 및 핵심 개념

Airflow는 Cron을 대체하기 위해 나온게 아니다.
"Cron이 해결하지 못하는 영역을 전담하기 위해 나온 도구"

3-1. Apache Airflow란?

  • 워크플로우 오케스트레이션: 데이터 파이프라인의 작업 흐름을 정의, 예약,
    모니터링하는 플랫폼
    Airflow는 데이터를 처리하는 도구가 아니고 지휘자이다.
  • Python 기반 정의: DAG(Directed Acyclic Graph)를 파이썬 코드로 정의하여 버전
    관리와 유연성을 확보
  • 핵심 기능: 스케줄링, 의존성 관리, 재시도 메커니즘, 모니터링 및 알림(Web UI)
    제공
  • Airflow 3.0 개선사항: TaskFlow API 강화, 성능 최적화, 보안 강화, Dataset
    기반 트리거링, 동적 작업 매핑 등

3-2. 핵심 개념 이해

① DAG (Directed Acyclic Graph)

"이 데이터는 이 순서대로 흘러간다"를 코드적으로 설계한 설계도
여기서 말하는 '순서'는 의존성을 포함한다. (뭐를 하면 뭐를 한다 식)
  • 정의: 방향성이 있고 순환하지 않는 그래프 구조 (데이터 파이프라인의 작업
    흐름을 표현)
  • 구성: 노드(Task)와 엣지(의존성)로 구성
  • 특징: Python 코드로 정의되어 가독성이 높고 재사용 및 버전 관리가 용이함
  • 장점: 작업 흐름 시각화, 실패 시 복구 용이, 확장성 우수

② Task & Operator

  • Task: DAG 내 실행 단위, 실제 작업을 수행하는 최소 단위 객체
  • Operator: 작업 유형을 정의하는 템플릿 클래스 (예: PythonOperator,
    BashOperator 등) => Task 를 실행하는 방식
  • TaskFlow API: 함수 기반으로 Task를 간편하게 정의 가능
● 실무 팁 - Task의 단위 설정 법
데이터 적재하는 작업을 한다고 가정,
[데이터 추출 -> 전처리 -> 테이블 생성 -> 적재]  이 작업을 하나의 Task안에 넣어버리면,
실패한 단계만을 다시 실행하기 힘들다.

따라서 [데이터 추출] Task, [전처리] Task, [테이블 생성] Task 등등 최대한 작은 범위로 Task로 묶어버리게 되면,
더 효율적으로 된다.

"Task는 재실행 단위" 이라는 말이 가장 이해하기 쉬울것 같다.

 

③ Scheduler & Executor

Scheduler는 판단하고 Executor는 실행한다.
이 두개의 분리는 의도한 분리이고 이렇게 분리를 해야 더 안정적으로 Airflow가 실행되게 된다.
  • Scheduler:
    • DAG 실행 스케줄링을 담당하는 핵심 컴포넌트 (주기적으로 파싱 및
      조건 확인)
    • DAG 파일을 주기적으로 파싱하고 실행 조건 확인
    • 지금 이 시점에 어떤 일을 해야하는지 결정하는 역할
    • Task를 직접 실행하지 않고 실행 할 시점이 됐다고 알려만 준다. (직접 실행은 Executor)
● 실무 팁 - DAG 내 무거운 코드 금물
DAG에 있는 코드는 실행 시점이 아니라, 스케쥴러가 해당 DAG를 파싱할때마다 실행되기 때문에
DAG 안에 무거운 로직을 넣으면 안된다.

안그러면 스케쥴러가 느려지고 전체 Airflow가 느려지게 된다.
  • Executor:
    • Task 실행 방식을 결정 (Local, Celery, Kubernetes 등)
    • 로직이 아니라 실행방식의 선택 이라는 점
    • 얼마나 많은 Task를 동시에 실행할 수 있는지를 바탕으로 결정하게 됨
  • Worker:
    • 실제 Task를 실행하는 프로세스
    • Executor 유형에 따라 구성 방식이 달라짐
  • Metadata DB:
    • DAG와 Task의 상태 정보, 실행 이력 등을 저장하는 데이터베이스

3-3. Airflow Web UI 구성

Web UI가 없으면
매번 로그를 뒤져야하고, 이거 언제했냐고 사람에게 문의하고 하는 방식으로 일을 하게 된다.
=> WebUI의 Grid View를 보면 바로 답이 나옴 
  • DAG 목록: 활성화/비활성화 설정, 최근 실행 상태 표시
  • Graph View: Task 간 의존성 확인 및 상태 시각화 (DAG를 짠뒤 설계 분석할 때 사용함)
  • Grid View: DAG Run 실행 이력(날짜/시간별) 및 결과 조회 (장애 분석의 시작 부분이긴 함)
  • Task 정보: 상세 로그 확인, 재실행, XCom 확인 등

4. 실습 준비: AWS 계정 및 IAM 설정

이미 AWS 학습에서 배운 항목이라 간단히 넘어가되,
추가적으로 IAM 에 대해 배운점만 더 적어두었다.

4-1. AWS 및 IAM 기본 개념

  • AWS 콘솔: 서비스 접근 통합 인터페이스
  • IAM (Identity and Access Management): 사용자 인증 및 권한 관리 (최소 권한
    원칙 적용)
  • User vs Role:
    • User: 개인 사용자 계정 (장기 보안 자격 증명)
    • Role: 임시 권한 부여 (서비스 간 권한 위임, 예: EC2가 S3에 접근할 때
      사용)
  • IAM Role 생성: EC2용 역할 생성 및 적절한 정책(S3, CloudWatch 등) 연결
    • 위 방식대로 하면 서버용 Key를 생성할 필요도 없고 Key가 유출될 위험도 0
    • 보안과 운영을 사람의 실수를 유발하지 않고 구조에 위임하는 방식
    • 위 방식대로 하면 EC2 서버에서 boto3 SDK 를 accessKey 없이 요청을해도 
      AWS는 '아 이 요청은 EC2의 이 role에서 비롯된거구나'라고 인지하고 role에 따라 허용됨
      => Airflow에서 가장 이상적인 인증구조
구분 IAM User 방식
(비권장)
IAM Role 방식
(권장)
인증 방식 정적 Access Key 파일 저장 임시 보안 자격증명 자동 발급
키 교체 수동 교체 및 배포 필요 AWS가 자동 주기적 교체
보안 위험 Github 유출 시 계정 탈취 키 자체가 없어 유출 불가
확장성 서버 증가 시 관리 불가능 서버 수와 무관하게 일괄 적용
운영 효율 낮음 (휴면 에러 가능성) 높음 (정책 기반 일괄 관리)

5. 실습 준비: EC2 인스턴스 생성 및 설정

5-1. EC2 인스턴스 개요

  • 인스턴스 유형: t4g.large (2 vCPU / 8GB RAM) - Airflow 학습용 권장
  • 운영체제(AMI): Ubuntu Server 24.04 LTS
  • 디스크: gp3 50GB 권장

5-2. 보안 그룹(Security Group) 설정

  • SSH: 22번 포트 개방 (내 IP만 허용 권장)
  • Airflow UI: 8085번 포트 개방 (대시보드 접속용)
  • 보안 강화: 필요한 포트만 개방하고 정기적으로 규칙 검토

형광펜: 개인 IP부분

5-3. Key Pair 생성 및 관리

  • 역할: EC2 접속을 위한 인증 수단 (.pem 또는 .ppk)
  • 권한 설정 (Linux/Mac): chmod 400 키파일.pem (소유자만 읽을 수 있도록 제한)

6. SSH 접속 및 EC2 환경 확인

6-1. 기본 환경 확인 명령어

  • 시스템 정보: uname -a (커널 버전 및 아키텍처 확인)
  • CPU/메모리: top 또는 free -m
  • 디스크 공간: df -h (Docker 설치 공간 충분한지 확인)
  • 네트워크: ping 또는 curl

6-2. Docker 설치 전 점검 사항

  • 필수 패키지 확인 (git, wget, curl 등)
  • 시스템 업데이트 (sudo apt update)
  • 사용자 권한 설정 (docker 그룹 생성 등)
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함