일정 기간 데이터 수집 후 일괄 학습 및 결과 제공하는 특성이 있음
대량의 데이터 처리할 때 효율적인 방식이다.
Batch Serving은 예측 코드를 주기적으로 실행해서 예측 결과를 제공
Job Scheduler는 Apache Airflow를 주로 사용
Batch Processing : 일정 기간 동안 일괄적으로 작업을 수행
Batch Serving : 일정 기간동안 일괄적으로 머신러닝 예측 작업을 수행
Batch Processing이 더 큰 개념이며, Batch로 진행하는 작업에 Airflow를 사용할 수 있음
airflow 등장전 사용하던 시스템이다.
(서버에서) crontab -e 입력
실행된 에디터에서 0 * * * predict.py 입력(0 * * * 은 매 시 0분을 의미)
OS에 의해 매 시 0분에 predict.py가 실행한다.
Linux는 일반적인 서버 환경이고, Crontab도 기본적으로 설치되어 있기 때문에 매우 간편하다.
airflow는 좀 더 정교한 스케줄링 및 워크플로우 도구이다!!
Airflow 등장 후, 스케줄링 및 워크플로우 도구의 표준이 되었다.

DAGs (Directed Acyclic Graphs)
Airflow에서 작업을 정의하는 방법, 작업의 흐름과 순서 정의
DAG은 이름 그대로, 순환하지 않는 방향이 존재하는 그래프를 의미
DAG Directory
DAG 파일들을 저장하는 곳

Operator
Airflow의 작업 유형을 나타내는 클래스
Batch Scheduling을 위한 DAG 생성한다.
BashOperator, PythonOperator, SQLOperator 등 다양한 Operator 존재
Airflow는 Crontab처럼 단순히 하나의 파일을 실행하는 것이 아닌, 여러 작업의 조합도 가능함
DAG 1개 : 1개의 파이프라인
Task : DAG 내에서 실행할 작업
하나의 DAG에 여러 Task의 조합으로 구성

Scheduler
Airflow의 핵심 구성 요소 중 하나. DAGs를 보며 현재 실행해야 하는지 스케줄을 확인
DAGs의 실행을 관리하고 스케줄링
Executor
작업이 실행되는 환경
LocalExecutor, CeleryExecutor 등 다양한 Executor가 존재
window 환경에서는 리눅스를 써야할 때 wsl을 사용한다.
(도커나 다른 방법을 사용해도 되지만 기본적인 것부터 배워보자)
python -m venv .venv
source .venv/bin/activate
airflow설치(파이썬 버전에 맞게 설치한다.)
Airflow에서 사용할 DB 초기화
export AIRFLOW_HOME=`pwd`
echo $AIRFLOW_HOME
airflow db init
# airflow webserver 실행
airflow webserver --port 8080
# airflow scheduler 실행
airflow scheduler


Scheduler
Scheduler는 각종 메타 정보의 기록을 담당
Scheduler - Executor
Executor는 스케줄링 기간이 된 DAG을
실행하는 객체. 크게 2종류로 나뉨
Workers
DAG의 작업을 수행
Metadata Database
메타 정보를 저장
Webserver
WEB UI를 담당
Airflow를 구축하는 방법으로 보통 3가지 방법을 사용
클라우드 서비스 형태로 Airflow를 사용하는 방법
장점
- 설치와 구축을 클릭 몇번으로 클라우드 서비스가 다 진행
- 유저는 DAG 파일을 스토리지(파일 업로드) 형태로 관리
단점
- 높은 비용과 적은 자유도, 클라우드에서 기능을 제공하지 않으면 불가능한 제약이 많음
직접 VM 위에서 Docker compose로 Airflow를 배포하는 방법
장점
1. Managed Service 보다는 살짝 복잡하지만, 어려운 난이도는 아님
2. (Docker와 Docker compose에 익숙한 사람이라면 금방 익힐 수 있음)
3. 하나의 VM만을 사용하기 때문에 단순
단점
1. 각 도커 컨테이너 별로 환경이 다르므로, 관리 포인트가 늘어남
2. 특정 컨테이너가 갑자기 죽을 수도 있고, 특정 컨테이너에 라이브러리를 설치했다면, 나머지 컨테이너에도 하나씩 설치해야 함
Kubernetes 환경에서 Helm 차트로 Airflow를 배포하는 방법
Kubernetes는 여러 개의 VM을 동적으로 운영하는 일종의 분산환경으로, 리소스 사용이 매우 유연한게 대표적인 특징(필요에 따라 VM 수를 알아서 늘려주고 줄여줌)
장점
단점
보통 데이터 팀에 엔지니어링 팀이 존재하고, 쿠버네티스 환경인 경우에 적극 사용