15

크론탭 지옥에서 탈출하기

Day 1: 크론탭으로 ETL 돌리다 지쳤다

학습 목표

크론탭의 한계를 이해한다 워크플로우 오케스트레이션의 필요성을 파악한다

"선배, 이거 왜 이렇게 되어 있어요?"

새벽 3시. 슬랙 알림이 울린다.

모니터링봇: ETL 실패 - transform.py 에러

서버에 접속해서 확인해본다. extract.py가 아직 안 끝났는데 transform.py가 먼저 실행됐다.

crontab을 열어본다:

에디터 로딩 중...

"extract는 2시에 시작하고, transform은 2시 30분에 시작하고..."

근데 extract가 40분 걸리면?

transform이 먼저 끝나버린다. 당연히 에러다.


크론탭의 한계

상황크론탭의 대응
이전 작업이 끝났는지 확인불가능
작업 실패 시 재시도불가능 (직접 구현해야 함)
실패 알림 발송불가능
작업 간 데이터 전달불가능
여러 서버에서 분산 실행불가능

크론탭은 "이 시간에 이 스크립트를 실행해"만 할 수 있다. "이 작업이 끝나면 저 작업을 실행해"는 못 한다.


모든 회사가 겪는 문제

"크론탭 스케줄 꼬여서 데이터 정합성 깨졌어요" "어제 ETL 실패한 거 아무도 몰랐어요" "재처리하려면 서버 들어가서 일일이 돌려야 해요"

데이터 팀이 커질수록 이 문제는 심각해진다. 그래서 나온 게 워크플로우 오케스트레이션 도구다.


오늘 배울 것

크론탭 지옥에서 벗어나는 방법: Apache Airflow

  • 작업 의존성 정의
  • 자동 재시도
  • 실패 알림
  • 웹 UI로 모니터링
  • 히스토리 관리

시작하자.