DA

데이터레이크|데이터웨어하우스|Airflow|ETL,ELT

ha_data 2024. 1. 22. 21:28

데이터 웨어하우스의 클라우드 옵션

데이터 웨어하우스가 작을 때는 MySQL 을 사용해도 좋지만, 대용량일 경우 클라우드를 사용하는 것이 좋음

- 고정비용 옵션

 매달 정해진 비용 지불. 비용 관리 측면에선 장점. 

ex. Redshift (Redshift 서버리스는 가변 비용 옵션)

- 가변비용 옵션

사용한 만큼 비용 지불. 효율적이라는 것이 장점. 비용 예측이 어려움 

ex. BigQuery , Snowflake 

가변비용 옵션이 처리할 수 있는 데이터 크기가 고정비용 옵션보다 큼.

스토리지와 컴퓨팅 부분이 분리되어 있음. 따라서 더 효율적인 처리가 가능함

고정비용 옵션은 스토리지를 늘리려면 컴퓨팅 부분(CPU 등)을 같이 늘려야 함

 

Data Lake

- 스토리지에 가까운 개념으로 데이터 웨어하우스 보다 비용이 저렴. 비구조화 데이터를 저장 가능.

- 클라우드 업체의 스토리지를 데이터 레이크로 사용. (AWS 라면 S3가 대표적인 데이터 레이크) 

- 로그파일처럼 크기가 크고 비구조화인 데이터 -> ETL을 통해 데이터 레이크에 적재 -> 필요할 때마다 데이터 웨어하우스에 가져오기 

 

ETL(Extract, Transform, Load)  

Extract: 데이터를 데이터 소스에서 읽어내는 과정. 보통 API 호출
Transform : 필요하다면 원본 데이터의 포맷을 원하는 형태로 변경
Load: 최종적으로 DW에 테이블로 적재

밖에 있는 데이터를 데이터 시스템 안에 넣는 것.

목적지는 데이터 레이크나 데이터 하우스.

잘 정재된 데이터는 바로 데이터 웨어하우스로 보낼 수 있음.

중요한 데이터를 다루는 ETL이 실패했을 경우 빨리 수정하여 다시 실행하는 것이 중요.

이를 적절하게 스케줄하고 관리하는 것이 중요해지며 ETL 스케줄러 혹은 프레임웍이 필요해짐 ->  Airflow가 대표적임

데이터 엔지니어가 ETL을 수행함 

 

ELT 

데이터 시스템 안에 들어온 데이터 대상으로 정제 및 가공.

데이터 레이크에서 데이터 웨어하우스로 로딩, 데이터 웨어하우스의 데이터를 재가공해서 데이터 웨어하우스로 가져오기 등이 가능 -> DBT 툴을 사용

주기적으로 요약 데이터를 만들어 사용하는 것이 더 효율적. 

ex. 다양한 소스를 통해 매출을 올리는 회사 - 매출 정보 여러 테이블에 나눠져있음. ELT로 매출을 일별, 날짜별로 정리. 

 

다양한 데이터 소스의 예

프로덕션 데이터베이스 (웹/앱에서 사용하는 데이터베이스)의 데이터
MySQL, Postgress 등이 프로덕션 데이터베이스로 사용됨
이메일 마케팅 데이터
mailchimp, HubSpot, SendGrid..
크레딧카드 매출 데이터
Stripe
서포트 티켓 데이터 
Zendesk, Kustomer ..
서포트 콜 데이터 
ChannelTalk, RingCentral, Talkdesk ...
세일즈 데이터
Salesforce
사용자 이벤트 로그
Amplitude, MixPanel, 웹서버로그..

 

Airflow (ETL 스케줄러)

ETL 관리 및 운영 프레임웍의 필요성

- 다수의 ETL이 존재할 경우 이를 스케줄해주고 이들간의 의존관계를 정의해주는 기능 필요

- 특정 ETL이 실패할 경우 이에 관한 에러 메세지를 받고 재실행해주는 기능도 중요해짐

- Airflow는 오픈소스 프로젝트로 파이썬3 기반

- Airlfow에서는 ETL을 DAG라 부르며 웹 인터페이스를 통한 관리 기능 제공

- 크게 3가지 컴포넌트로 구성됨: 케줄러, 웹서버, 워커 

 

데이터 소스 -> 다수의 ETL -> 데이터 웨어하우스 -> ELT 요약테이블 만들기 (dbt사용) -> 대시보드

Airflow가 ETL, 데이터웨어하우스 스케줄 관리

데이터 레이크에서 ELT 통해 데이터 웨어하우스에 데이터 전달할 때 빅데이터 처리 기술 필요해짐(Spark)

 

빅데이터 처리 프레임워크

분산환경 기반 (1대 혹은 그 이상의 서버로 구성)

-분산 파일 시스템과 분산 컴퓨팅 시스템이 필요

Falut Tolerance

- 소수의 서버가 고장나도 동작해야됨

- 비상시를 대비해 데이터를 여러 서버에 저장 ( 하나의 데이터를 세 개의 서버에 저장)

확장이 용이해야함

- Scale Out 용량을 늘리기 위해 서버를 사서 시스템에 추가하는 것

- Scale Up 용량을 늘리기 위해 이미 있는 서버의 사양을 높이는 것. CPU 추가, 메모리 확장