강의
"데이터 파이프라인"은 데이터를 소스로부터 목적지로 복사하는 작업 입니다.
대부분의 경우 코딩(파이썬 혹은 스칼라) 혹은 SQL을 통해 데이터 웨어하우스로 복사합니다.
데이터 소스
- Click stream
- call data
- ads performance data
- transactions
- sensor dat
- metadata
- API
- log files
데이터 목적지
- 데이터 웨어하우스
- 캐시 시스템 (Redis, Memcache)
- 프로덕션 데이터베이스
- NoSQL
- S3
데이터 파이프라인 종류
Raw Data ETL Jobs
데이터 엔지니어가 수행하는 작업 입니다.
- 외부 및 내부 데이터 소스에서 데이터 추출 (API)
- 적당한 데이터 포맷 변환 (데이터 크기가 크면 Spark 사용)
- 데이터 웨어하우스 로드
Summary/Report Jobs
데이터 분석가가 SQL의 CTAS를 통해 요약 테이블을 작성합니다.
데이너 엔지니어는 분석하기 편한 환경을 만들어 주어야 합니다.
Analytics Engineer는 DBT를 통해 위 두가지 작업을 수행합니다.
- DW 혹은 DL로부터 데이터 추출하여 다시 DW에 작성하는 ETL
- Raw Data의 Report 혹은 Summary 형태의 테이블 생성
- AB 테스트 결과 분석
Production Data Jobs
- DW로부터 데이터 추출하여 다른 Storage(프로덕션 환경)으로 사용
- 타켓 스토리지
- NoSQL : Cassandra/HBase/DynamoDB
- 관계형 데이터베이스 (OLTP) : MySQL
- 캐시 : Redis/Memcache
- 검색엔진 : ElsasticSearch
데이터 파이프라인 작성시 고려 사항
현실 혹은 실상
- 다양한 실패 사유
- 버그
- 데이터 소스상의 이슈
- 데이터 파이프라인간의 의존도에 대한 이해도 부족
- 유지보수 비용
- 데이터 소스간의 의존도로 인한 복잡도 상승
해결 방법
- Full Refresh : 매번 통채로 복사해서 테이블 만들기
- 데이터 크기가 작을 경우
- Incremental Update : 데이터 소스가 특정 조건을 충족한 경우 가능
- 프로덕션 데이터베이스 테이블 : created, modified, deleted 필드 필요
- API : 특정 날짜 기준으 생성 혹은 업데이트된 레코드 추출 가능 필요
- Backfill : 실패한 데이터 파이프라인 재실행
- 문서화 : 데이터 파이프라인의 입력 및 출력 문서화
- 비지니스 오너 명시 : 데이터 요청자 기록
- 데이터 카탈로그에 포함 → 데이터 디스커버리에 사용 가능
- 쓸모없는 데이터 주기적으로 삭제
- 데이터 파이프라인 사고시 사고 리포트(post-mortem) 작성
- 동일한 혹은 비슷한 사고 방지
- 사고 원인(root-cause) 이해 및 방지
- 데이터 대상 유닛 테스트 : 중요 데이터 파이프라인의 입력 및 출력 체크
"멱등성"(Idempotency)을 보장하는 것이 중요합니다.
- 다수 실행해도 최종 테이블의 내용이 달라지지 않아야 함
- critical point가 모두 one atomic action으로 실행되어야 함
'데브코스 TIL > 데이터 파이프라인, Airflow' 카테고리의 다른 글
Airflow DAG 작성 예제 1, 2 (0) | 2023.12.13 |
---|---|
Airflow 기본 프로그램 실행 (0) | 2023.12.12 |
Airflow 설치 (0) | 2023.12.12 |
Airflow 소개 (0) | 2023.12.11 |
ETL 작성 실습 (0) | 2023.12.11 |