일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- trino #hive #sync
- merge
- crossfit_geeks #크로스핏 #crossfit #당산크로스핏 #크로스핏긱스 #running #역도 #오운완 #크로스핏터 #Django가 고장날때까지
- Push
- Trino
- Exception
- nodeport
- Git
- k8s
- 오블완
- aws #modernization #eks #k8s
- 티스토리챌린지
- pyenv
- 쿠버네티스
- fetch
- Glossary #Python
- pull
- til #loguru #str #format
- Python3 #PEP
- 카프카
- Python #PEP
- 타입 #type
Archives
- Today
- Total
Django가 고장날때까지
[Airflow 밋업] 250213 본문
반응형
1. Airflow 에러 메시지 개선 및 모니터링 최적화
발표자는 Airflow에서 발생하는 에러 메시지를 개선하고 디버깅을 효율적으로 수행하는 방법을 공유했습니다.
주요 내용
- Airflow 콜백 시스템 개선
- 테스크가 성공, 실패, 리트라이, 스킵될 때 콜백을 활용해 특정 액션을 자동 실행하도록 설정.
- 예제 코드를 통해 콜백을 DAG 레벨 및 테스크 레벨에서 정의하는 방법 소개.
- Slack 알림 메시지 개선
- 기존 Slack 알림은 제공하는 정보가 부족해 디버깅이 어려웠음.
- 개선 내용:
- DAG 및 Task 상세 링크 추가.
- 실패한 오퍼레이터 종류 표시 (PythonOperator, SparkOperator 등).
- Task 실행 시간(Duration) 포함 → 원인 분석 용이.
- Databricks 작업 실패 시 로그 접근성 향상
- 기존: Airflow → Databricks 로그 링크 클릭 → Databricks 웹에서 오류 확인 (과정이 복잡).
- 개선: Databricks API를 활용해 Airflow 알림에서 바로 오류 메시지를 확인할 수 있도록 개선.
- 모바일에서도 오류를 쉽게 확인할 수 있도록 UI 최적화.
- KubernetesPodOperator 리소스 모니터링 추가
- Airflow에서 실행되는 Kubernetes Pod 정보를 Grafana 링크와 연동하여 CPU, 메모리 사용량 모니터링 가능.
- Pod이 실패했을 때 Slack 알림에서 바로 리소스 문제를 확인 가능.
- 에러 발생 패턴 분석 및 KPI 설정
- 실패 및 리트라이 발생 횟수를 데이터로 저장하여 주기적으로 분석.
- Sensor 기반 작업이 많아 리트라이가 빈번했으며, 스팟 인스턴스 문제로 인한 실패도 다수 발생.
- 해결책: 지표를 기반으로 개선 작업 수행, 데이터 엔지니어 KPI로 설정.
- Splunk 연동을 통한 에러 로그 분석 자동화
- Airflow 에러 로그를 Splunk와 연동하여 대시보드에서 에러 로그 집계 및 시각화.
- DAG/Operator별 에러 발생 빈도를 분석하여 주요 원인을 파악.
- GPT를 활용한 위클리 리포트 생성
- 최근 10일간의 에러 로그를 수집하여 GPT로 요약 및 리포트 자동 생성.
- Slack에 자동 전송하여 팀원들이 에러 발생 패턴과 개선 방안을 쉽게 파악 가능.
2. DBT 기반 Airflow 운영 및 자동화된 배치 파이프라인
발표자는 DBT(Data Build Tool)와 Airflow를 활용한 배치 파이프라인 자동화 및 데이터 팀의 업무 효율성을 높이는 방법을 소개했습니다.
주요 내용
- 데이터 민주화 (Data Democratization)
- 데이터 팀이 모든 데이터 요청을 처리하는 방식에서 벗어나, 각 팀이 직접 데이터를 활용할 수 있도록 셀프 서비스 환경을 구축.
- "요청을 줄이는 것이 핵심" → 데이터 동기화 및 가공 요청 없이 직접 처리 가능하도록 시스템 설계.
- Airflow와 DBT의 통합
- DBT: 데이터 변환(Transformation) 전용 도구, SQL 기반.
- Airflow: 데이터 워크플로우 스케줄링 및 실행.
- DBT를 Airflow에서 실행하여 ETL(Extract, Transform, Load) 자동화.
- 자동 데이터 동기화 시스템 구축
- 기존: 데이터 연동을 요청해야 함.
- 개선: 테이블 스키마, 데이터 동기화 방식 등을 입력하면 자동 동기화되는 툴 개발.
- Airflow DAG 설계 개선
- 기존 방식: DAG 하나에 여러 개의 Task 포함 → 복잡하고 유지보수 어려움.
- 개선 방식:
- 각 DBT 모델을 하나의 DAG로 변환 (모델 단위로 독립 실행).
- Airflow에서 DAG을 자동 생성하여 코드 중복 제거.
- DBT 모델 간 의존성 관리
- DBT는 데이터 의존성, Airflow는 Task 의존성을 기반으로 DAG을 생성.
- 기존에는 DAG이 너무 많아지고 파싱 시간이 길어지는 문제가 발생.
- 해결책:
- DBT의 manifest.json을 활용하여 DAG 간 관계를 자동 생성.
- TriggerDagRunOperator를 사용하여 DAG 간 실행 순서를 조정.
- 마스터 DAG 생성
- 기존 DAG 수가 급증하는 문제 해결을 위해 "마스터 DAG" 개념 도입.
- TriggerDagRunOperator를 활용하여 DBT 모델 간 실행 순서를 조정.
- DBT의 manifest.json을 분석하여 DAG 간 의존성을 자동으로 설정.
- 검색 및 유지보수 편의성 향상
- DAG이 많아지면서 태그(Tag) 기반 검색 시스템 도입.
- 모델별 실행 주기를 다르게 설정하여 최적의 성능 유지.
결과 및 효과
- DAG 파싱 속도 5분 → 1분 내외로 단축.
- 데이터 가공 및 동기화 요청 0건 → 각 팀이 직접 실행 가능.
- DAG 유지보수 비용 절감, 운영 편의성 증가.
요약
- 첫 번째 발표는 Airflow 에러 메시지 개선 및 모니터링 최적화에 초점을 맞췄고, Slack 알림 개선, Databricks 로그 접근성 향상, Splunk 연동, GPT를 활용한 위클리 리포트 자동화 등이 핵심.
- 두 번째 발표는 DBT와 Airflow를 활용한 자동화된 배치 파이프라인 운영을 다루며, DBT 기반 DAG 자동 생성, 마스터 DAG 설계, 데이터 민주화 및 셀프 서비스 환경 구축 등을 소개.
반응형
Comments