1. Batch Serving
일정 기간 데이터 수집 이후 일괄 학습 및 결과 제공하는 특성이 있음
대량의 데이터를 처리할 때 효율적
모델을 주기적으로 학습시킬 때
30분에 1번씩 최근 데이터를 가지고 예측할 때
Batch 묶음(30분의 데이터)를 한번에 예측
모델의 활용 방식에 따라 30분일 수도 있고, 1주일, 하루 단위일 수도 있음
Batch Serving은 예측 코드를 주기적으로 실행해서 예측 결과를 제공하며
Job scheduler는 Apache Airflow를 주로 사용
- 학습과 예측을 별도 설정을 통해 수행
- 학습: 1주일에 1번
- 예측: 10분, 30분, 1시간에 한번씩
Jupyter Notebook, Lab에 있는 코드를 스크립트로 바꿀때 편함
-> 절차형으로 작성한 코드를 정리한 후, 주기적으로 실행
수요예측, spotify 노래 추천 등
- sklearn에서 pandas 데이터를 가지고 일괄로 예측하거나
- 데이터베이스나 데이터 웨어하우스에 존재하는 데이터를 SQL 쿼리로 추출한 후에 일괄로 예측한다.
-
이미지 예측
- AWS S3(저장소) 등에 저장된 이미지를 사용해 예측한다.
- 데이터베이스엔 이미지를 바로 저장하지 않고, 이미지의 저장 위치를 기록(s3 등)
- 새로 추가된 이미지를 확인하고 예측(SQL 쿼리를 사용)
-
자연어 예측
- 데이터베이스나 데이터 웨어하우스에 저장한 자연어 데이터를 활용하여 사용
- 새로 추가된 자연어 데이터를 확인하고 예측(SQL 쿼리 사용)
2. Apache Airflow
2.1 Batch Processing
소프트웨어 프로그램을 자동으로 실행하는 방법. 예약된 시간에 자동으로 실행
- 일회성도 가능하고, 주기적인 실행도 가능하다.
이번주 일요일 07시에 한번 실핼되는 프로세스
매주 일요일 07시에 실행되는 프로세스
2.2 Airflow 등장 전: Crontab
대표적으로 Linux Crontab 활용하였음

출처: https://babytiger.netlify.app/posts/cron-expression/
다만, Linux Crontab의 경우 문제가 있다.
- 재실행 및 알림
- 파일 실행하다 오류가 발생한 경우, Crontab이 별도의 처리를 하지 않음.
- 실패할 경우, 자동으로 몇 번 더 재실행 하고, 그래도 실패하면 실패했다는 알림을 받아야 대응할 수 있음
- 과거 실행 이력 및 실행 로그를 보기 어려움
- 여러 파일을 실행하거나, 복잡한 파이프라인을 만들기 힘듦
즉, 간단히는 사용할 수 있지만 정교하지는 못 하다
2.3 Airflow 소개
- Airflow 등장 후, 스케줄링 및 워크플로우 도구의 표준
- Airbnb에서 개발했으며 2점대 버전이 존재. 업데이트 진짜 빠름
- 스케줄링 도구로 무거울 수 있지만, 거의 모든 기능을 제공하고, 확장성이 좋아 일반적으로 스케줄링과 파이프라인 작성 도구로 많이 사용
- 데이터 엔지니어, MLOps 팀에서 많이 사용
- 위 직무 외에도 데이터 분석가, 데이터 과학자도 많이 사용
-
Airflow를 많이 사용하는 이유
- 워크플로우 관리 도구
- 코드로 작성된 데이터 파이프라인 흐름을 스케줄링하고 모니터링 하는 목적
- 데이터 처리 파이프라인을 효율적으로 관리하여 시간과 자원을 절약하도록 함
-
Aifrflow의 주요 기능
- 파이썬을 사용해 스케줄링 및 파이프라인 작성
- 특정 조건에 따라 작업분기 가능(Branch)
-
Airflow의 핵심 개념
- DAGs(Directed Acyclic Graphs)
Airflow에서 작업을 정의하는 방법, 작업의 흐름과 순서 정의
- Operator
- Airflow의 작업 유형을 나타내는 클래스
- BashOperator, PythonOperator, SQLOperator 등 다양한 Operator 존재
- Scheduler
- Aifrlfow의 핵심 구성요소 중 하나, DAGs를 보며 현재 실행해야 하는지 스케줄을 확인
- DAGs의 실행을 관리하고 스케줄링
- Executor
- 작업이 실행되는 환경
- LocalExecutor, CeleryExecutor 등 다양한 Executor가 존재
-
기본 아키텍쳐

- DAG Directory
DAG 파일들을 저장
- 기본 경로는
$AIRFLOW_HOME/dags
- DAG_FOLDER 라고도 부르며, 이 폴더 내부에서 폴더구조를 어떻게 두어도 상관 없음
- Scheduler에 의해 .py파일은 모두 탐색되고 DAG이 파싱함
- Operator
Batch Scheduling을 위한 DAG 생성
- Airflow에서는 스케줄링할 작업을 DAG라고 부름
- DAG는 Directed Acyclic Graph의 약자로, Airflow에 한정된 개념이 아닌 소프트웨어 자료구조에서 일반적으로 다루는 개념
- DAG는 이름 그대로, 순환하지 않는 방향이 존재하는 그래프를 의미함.
- Airflow는 Crontab처럼 단순히 하나의 파일을 실행하는 것이 아닌, 여러 작업의 조합도 가능함
DAG 1개: 1개의 파이프라인
Task: DAG 내에서 실행할 작업
- 하나의 DAG에 여러 Task의 조합으로 구성