ݺߣ

ݺߣShare a Scribd company logo
Airflow @ 우아한형제들
Data Platform
Airflow Usecase
• Data Ingestion, Source → Destination
• Data Analytics Pipeline
• AI / ML Work
fl
ow, IDC Kubernetes GPU Cluster
• Data Platform, Governance Management
860
DAGs Providers
51 Users
450
Airflow
Airflow 플랫폼 사용편의성
Airflow 플랫폼 확장성
Airflow 플랫폼 안정성
Airflow 플랫폼 운영
Airflow 환경
• 계정에 따라 다양한 환경이 존재 ( prod, stage, beta … )
• 각 환경에 매핑되는 저장소와 브랜치
• 불일치 발생, 화려한 cherrypick과 빈번한 hard reset 의 반복
• PR → beta → PR → beta → PR → prod 😭
Airflow 환경
feature → develop 단일 저장소, 단일 브랜치로 운영하자
Airflow 환경
로컬 개발 환경?
개인마다 다른 환경 → 운영 부담
feature 브랜치를 기준으로 생성할 수 있는
개인개발환경을 제공하자
Airflow Operator SDK
Observe → Check Differences → Take Action (Reconciliation Loop)
Airflow Operator SDK
복잡한 어플리케이션 (Custom Resource) 에 대해 Custom Controller를 구현
Operator Helm SDK를 통해 개발, Airflow Helm Chart를 그대로 활용
Airflow 개인개발환경
저장소에서 feature 브랜치 생성 → UI 플러그인을 통해 개인개발환경 생성 → Airflow CR 생성
Airflow 개인개발환경
Airflow UI 에서 브랜치, Provider 설치 여부, 권한을 선택
개인 주소로 접근 후 개발 ( https://airflow.mydomain/myname ) / 정책에 따라 삭제
Airflow 개인개발환경
• Pool, RBAC Security 모든 환경에 설정 필요
• DB까지 삭제되는 임시 환경의 Connection, Variable 관리
• 단일 브랜치를 여러 환경에서 사용하도록 (beta, prod…)
• 이 DAG은 beta에만 / prod에만 배포해야 합니다
• on / o
ff
기능 활용으로 부족
Airflow 개인개발환경 - RBAC, Pool
RBAC 설정
Custom Security Manager를 통해 확장
커스텀 플러그인에 대한 접근 권한 설정
Pool 설정
json 파일로 관리, 이미지에 추가
initContainer를 통해 pool 자동 등록
Airflow 개인개발환경 - Conn / Variable
개인개발환경을 위한 Connection, Variable UI 플러그인 추가
SSM Parameter Store Secret Backend에 저장 / DB까지 삭제 후 다시 생성해도 접근 가능
Airflow 개인개발환경 - 단일 브랜치
Airflow DAG Policy를 활용, AirflowClusterPolicySkipDag Exception 적용
DAG에 only_for_beta 태그 추가 → prod 환경은 skip, beta 환경에서만 사용 가능
Airflow UI 플러그인
Backfill 플러그인, Spark / Pod Operator 모니터링 플러그인
Airflow 플러그인
Spark Prometheus 메트릭을 통해 어플리케이션, 리소스 확인
Airflow 플랫폼 사용편의성
Airflow 플랫폼 확장성
Airflow 플랫폼 안정성
Airflow 플랫폼 운영
CeleryExecutor on EKS
22년 Kubernetes 환경 이관, Airflow 2.0+ 업데이트
KEDA AutoScaler
KEDA AutoScaler
MetaDB의 실행 중인 task 수에 따라
Air
fl
ow Worker AutoScaling
새벽 배치 시간 📈 , 주간 📉
안정적인 Scale-In을 위해
HPA replica
fl
apping
Worker Warm Shutdown
Pod Termination Grace Periods
Airflow 플랫폼 사용편의성
Airflow 플랫폼 확장성
Airflow 플랫폼 안정성
Airflow 플랫폼 운영
Airflow Reliability
• 단일 장애 지점
• Scheduler HA
• Git-Sync → Backup
• Postgres PgBouncer
Airflow 테스트
DAG 테스트
• DAG 순환 참조, Syntax 오류 등
Provider 테스트
• CI 단계에서 단위 테스트 수행
• DAG 통합 테스트 수행
Air
fl
ow 테스트
• 패키지 의존성 검사
• 테스트 환경에서 수행
• UI 플러그인
• 신규 버전 테스트
• 성능 테스트
Airflow 플랫폼 사용편의성
Airflow 플랫폼 확장성
Airflow 플랫폼 안정성
Airflow 플랫폼 운영
Airflow 비용 정산
플랫폼팀의 누명, 누가 범인일까
DAG 태그 정책 추가 : 팀 이름 필수
DAG에서 수행하는 Operator에서 Label 전달
Kubecost를 통해 팀 별 파이프라인 비용 집계
Airflow Self-Service
CI를 통해 정책 반영
• Owner 작성, 팀 태그 추가, 권한 확인
• Spark 3.1 버전 F/O → 점진적인 3.3 버전 업데이트
• 지원 종료된 Operator 경고 안내
Provider에 누구나 기여할 수 있도록
• 문서, 버전 관리, CI / CD
Airflow Self-Service
Provider 패키지 업데이트 → Airflow 이미지 업데이트
Airflow OpenSource
Airflow Repository fork vs Airflow Contribution
Airflow @ 우아한형제들

More Related Content

Airflow @ 우아한형제들