15분
크론탭 지옥에서 탈출하기
Day 1: 크론탭으로 ETL 돌리다 지쳤다
크론탭 지옥에서 탈출하기
Apache Airflow - 워크플로우 오케스트레이션 > Day 1: 크론탭으로 ETL 돌리다 지쳤다
학습 목표
크론탭의 한계를 이해한다 워크플로우 오케스트레이션의 필요성을 파악한다
"선배, 이거 왜 이렇게 되어 있어요?"
새벽 3시. 슬랙 알림이 울린다.
모니터링봇: ETL 실패 - transform.py 에러
서버에 접속해서 확인해본다. extract.py가 아직 안 끝났는데 transform.py가 먼저 실행됐다.
crontab을 열어본다:
에디터 로딩 중...
"extract는 2시에 시작하고, transform은 2시 30분에 시작하고..."
근데 extract가 40분 걸리면?
transform이 먼저 끝나버린다. 당연히 에러다.
크론탭의 한계
| 상황 | 크론탭의 대응 |
|---|---|
| 이전 작업이 끝났는지 확인 | 불가능 |
| 작업 실패 시 재시도 | 불가능 (직접 구현해야 함) |
| 실패 알림 발송 | 불가능 |
| 작업 간 데이터 전달 | 불가능 |
| 여러 서버에서 분산 실행 | 불가능 |
크론탭은 "이 시간에 이 스크립트를 실행해"만 할 수 있다. "이 작업이 끝나면 저 작업을 실행해"는 못 한다.
모든 회사가 겪는 문제
"크론탭 스케줄 꼬여서 데이터 정합성 깨졌어요" "어제 ETL 실패한 거 아무도 몰랐어요" "재처리하려면 서버 들어가서 일일이 돌려야 해요"
데이터 팀이 커질수록 이 문제는 심각해진다. 그래서 나온 게 워크플로우 오케스트레이션 도구다.
오늘 배울 것
크론탭 지옥에서 벗어나는 방법: Apache Airflow
- 작업 의존성 정의
- 자동 재시도
- 실패 알림
- 웹 UI로 모니터링
- 히스토리 관리
시작하자.