데이터 파이프라인이란
ETL
: Extract, Transform, Load ⇒ Data Pipeline, ETL, Data Workflow, DAG이라 부르기도 한다.
- 데이터를 웨어하우스 외부에서 내부로 가져오는 프로세스
- DAG : (Directed Acyclic Graph) : 루프가 존재하지 않는 비순환 방향 그래프.
ELT
: 데이터 웨어하우스 내부의 데이터를 조작해서 새로운 데이터를 생성하는 프로세스
- 데이터 레이크 위에서 이루어지기도 한다.
- dbt : Data Build Tool, ELT 전용 기술들이 존재.
- 데이터 레이크 : 스토리지
- 모든 데이터를 원래의 형태로 보존하는 스토리지에 가깝다.
- 데이터 웨어하우스
- 보존 기한이 있는 구조화된 데이터를 저장하고 처리하는 스토리지
- BI 툴들의 백엔드로 많이 사용된다.
데이터 파이프라인
- 데이터를 소스로부터 목적지로 복사하는 작업
- ETL, ELT 모두 가능하다.
- 데이터의 목적지가 웨어하우스가 대부분이나, 다른 시스템인 경우도 있다.
- Summary/Report Jobs
- 리포트나, 요약본 형태로 테이블을 다시 만들기도 한다.
- Production Data Jobs
- 프로덕션 환경에서 필요에 의한 경우에 역으로 쓰기도 한다.
- 예) 실시간 정보 표출을 위한 경우에 사용되기도 한다.
고려할 점
- 파이프라인의 수가 늘어나면 유지보수 비용이 늘어남.
- 데이터 소스간의 의존도가 생기는 경우
- 각 파이프라인간의 이해도 부족
- 좋은 방법들
- Full Refresh : 매번 통으로 복사해서 테이블을 만들기
- 불가능한 경우에는 업데이트 방식으로 레코드들을 읽도록 수행 (Incremental update)
- 멱등성이 보장되어야 한다. : 동일한 입력 데이터로 다수의 파이프라인을 실행해도 최종 테이블의 내용이 변하지 않아야한다.
- 실패한 파이프라인의 재실행이 쉬워야한다.
- 파이프라인의 입출력을 명확하게 하고, 문서화 해야한다.
- 주기적으로 쓸모없는 데이터들을 삭제해야한다.
- 사고가 발생한 경우에 리포트를 쓰기 → 원인을 파악해야한다.
- 중요한 파이프라인의 입출력을 체크해야한다.
- 레코드의 수를 체크
- PK uniqueness 보장
- 중복 체크
Airflow
소개
- 파이썬으로 작성된 데이터 파이프라인 프레임웍
- 데이터 파이프라인 스케쥴링 지원
- 데이터 파이프라인을 DAG라 부른다.
구성
- 컴포넌트
- 웹 서버
- 스케쥴러 : DAG들을 워커들에게 배정하는 역할을 수행
- 워커 : 실제로 DAG를 실행하는 역할을 수행
- 메타 데이터 데이터베이스
- Sqlite가 기본
- 일반적으로는 mysql, Postgres같은 다른 데이터베이스를 사용한다.
- 큐 (다수 서버 구성에서 사용된다.)
- Executor가 달라진다.
- 스케일링 방법
- 스케일 업 : 더 좋은 사양의 서버 사용
- 스케일 아웃 : 서버 추가
- Airflow 개발의 장단점
- 장점
- 데이터 파이프라인의 세밀한 제어가 가능하다.
- 백필이 쉽다.
- 다양한 데이터 소스와 웨어하우스를 지원한다.
- 단점
- 개발 환경을 구성하기 쉽지 않다.
- 직접 운영이 쉽지않아, 클라우드 버전 사용이 선호된다.
- DAG란?
- Directed Acyclic Graph의 줄임말
- Airflow에서 ETL을 부르는 명칭
- DAG는 태스크로 구성된다.