Batch Process란?
예약된 시간에 실행되는 프로세스
일회성(1회)도 가능하고, 주기적인 실행도 가능
ex. 이번 주 일요일 07:00에 1번 실행되는 프로세스
ex. 매주 일요일 07:00에 실행되는 프로세스
- 모델을 주기적으로 학습시키는 경우 사용(Continuous Training)
- 주기적인 Batch Serving을 하는 경우 사용
- 그 외 개발에서 필요한 배치성 작업
Batch Process 구축 방법
1) Linux Crontab
- (서버에서) crontab -e 입력
- 실행된 에디터에서 0 * * * * predict.py 입력
- (0 * * * * 은 크론탭 표현으로 매 시 0분에 실행하는 것을 의미)
- OS에 의해 매 시 0분에 predict.py가 실행
- Linux는 일반적인 서버 환경이고, Crontab은 기본적으로 설치되어 있기 때문에 매우 간편
- 간단하게 Batch Process를 시작하기에 Crontab은 좋은 선택
크론 표현식
- Batch Process의 스케줄링을 정의한 표현식
- 이 표현식은 다른 Batch Process 도구에서도 자주 사용됨
크론 표현식 제너레이터 사이트 : http://www.cronmaker.com
Linux Crontab 문제점
- 재실행 및 알람
- 파일을 실행하다 오류가 발생한 경우, 크론탭이 별도의 처리를 하지 않음
- 예) 매주 일요일 07:00에 predict.py를 실행하다가 에러가 발생한 경우, 알람을 별도로 받지 못함
- 실패할 경우, 자동으로 몇 번 더 재실행(Retry)하고, 그래도 실패하면 실패했다는 알람을 받으면 좋음 - 과거 실행 이력 및 실행 로그를 보기 어려움
- 여러 파일을 실행하거나, 복잡한 파이프라인을 만들기 힘듬
Crontab은 간단히 사용할 수는 있지만, 실패 시 재실행, 실행 로그 확인, 알람 등의 기능은 제공하지 않음
2) 스케줄링 워크플로우 전용 도구의 등장
Airflow
현재 스케줄링, 워크플로우 도구의 표준
- 에어비앤비(Airbnb)에서 개발
- 현재 릴리즈된 버전은 2.2.0으로, 업데이트 주기가 빠름
- 스케줄링 도구로 무거울 수 있지만, 거의 모든 기능을 제공하고, 확장성이 넓어 일반적으로 스케줄링과 파이프라인 작성 도구로 많이 사용
- 특히 데이터 엔지니어링 팀에서 많이 사용
1) 파이썬을 사용해 스케줄링 및 파이프라인 작성
2) 스케줄링 및 파이프라인 목록을 볼 수 있는 웹 UI 제공
3) 스케줄링 및 파이프라인 목록을 볼 수 있는 웹 UI 제공
4) 스케줄링 및 파이프라인 목록을 볼 수 있는 웹 UI 제공
- 실패 시 알람
- 실패 시 재실행 시도 - 동시 실행 워커 수
- 설정 및 변수 값 분리