⭐ Airflow 소개
1. Airflow란?
- 파이썬으로 작성된
데이터 파이프라인(ETL) 프레임웍
- Airbnb에서 시작한 아파치 오픈소스 프로젝트
- 가장 많이 사용되는 데이터 파이프라인 관리/작성 프레임웍
- 데이터 파이프라인 스케줄링 지원
- 정해진 시간에 ETL 실행 or 한 ETL 실행이 끝나면 다음 ETL 실행 등
- 웹 UI를 제공하기도 함
- ETL을 쉽게 만들 수 있게 해줌
- Airflow에서는 데이터 파이프라인을 DAG(Directed Acyclic Graph)라고 부름
⭐ Airflow 구성
1. 컴포넌트
1) 웹 서버 (Web Server)
2) 스케줄러 (Scheduler)
3) 워커 (Worker)
4) 메타 데이터 데이터베이스
5) 큐 (다수 서버 구성인 경우에만)
2. Airflow 구조
서버 1대

다수 서버

3. Airflow 스케일링 방법
- 스케일 업 (더 좋은 사양의 서버 사용)
✅추천!
- 스케일 아웃 (서버 추가)
4. Airflow 개발의 장단점
장점
- 데이터 파이프라인을 세밀하게 제어 가능
- 다양한 데이터 소스와 데이터 웨어하우스를 지원
- 백필(Backfill)이 쉬움
단점
- 배우기가 쉽지 않음
- 상대적으로 개발환경을 구성하기가 쉽지 않음
- 직접 운영이 쉽지 않음. 클라우드 버전 사용이 선호됨
5. DAG란?
- Directed Acyclic Graph의 줄임말
- Airflow에서 ETL을 부르는 명칭
- DAG는 태스크로 구성됨
- 태스크란? Airflow의 오퍼레이터(Operator)로 만들어짐
⭐ 트랜잭션 이해하기
1. 트랜잭션이란?
- 중간에 실패하면 불완전 상황에 놓이는 작업들이 있다면?
- ex. 은행 이체 과정에서 내 계좌 인출(O) -> 다른 사람 계좌 송금(X) 경우 문제가 생기니 이 과정을 하나로 보고 실패하면 그 이전 상태로 되돌리는 것
Atomic하게 실행되어야 하는 SQL 들을 묶어서 하나의 작업처럼 처리하는 방법
BEGIN과 END/COMMIT 사이에 SQL 사용
ROLLBACK은 BEGIN 이전 상태로 돌아가라는 SQL 명령어
2. 트랜잭션 구현방법
autocommit=True
- 모든 SQL statement가 바로 물리 테이블에 커밋됨
- 이를 바꾸고 싶다면 BEGIN;END; or BEGIN;COMMIT; 사용 (or ROLLBACK)
autocommit=False
- 모든 SQL statement가 커밋되지 않음
try/except 사용시 유의할 점
- except에서
raise를 호출하면 발생한 원래 exception이 위로 전파됨
- ETL을 관리하는 입장에서 어떤 에러인지 명확하게 드러나는 것이 더 좋음
try:
cur.execute(create_sql)
cur.execute("COMMIT;")
except Exception as e:
cur.execute("ROLLBACK;")
raise