Data Engineering
- Data Engineering Tools
- 소스
- 비즈니스와 운영 데이터 생성
- Log, DataBase
- 수집 및 변환
- 운영 시스템에서 데이터 추출, 추출된 데이터를 저장하고 스키마 관리, 데이터를 분석할 수 있도록 변환
- Spark, Pandas, Kafka, Flink, Airflow
- 저장
- 데이터를 쿼리와 처리 시스템이 쓸 수 있도록 저장, 비용과 확장성면으로 최적화
- Parquet, HDFS
- 과거, 예측
- 데이터 분석을 위한 인사이트 만들기
- 저장된 데이터를 이용해 쿼리를 실행하고 필요시 분산처리
- 과거에 무슨일이 일어났는지 혹은 미래에 무슨 일이 일어날지
- Tensorflow, Pytorch, SparkML
- 출력
- 데이터 분석을 내부와 외부 유저에게 제공, 데이터 모델을 운영 시스템에 적용
- Tableau, Looker
- Batch & Stream Processing
- Batch Processing
- 많은 양의 데이터를 정해진 시간에 한꺼번에 처리하는 것
- 전통적으로 쓰이는 데이터 처리 방법
- Flow
- 데이터를 모아서 → DB에서 읽어서 처리 → 다시 DB에 담기
- Stream Processing
- 실시간으로 쏟아지는 데이터를 계속 처리하는 것
- 이벤트가 생길때마다, 데이터가 들어올 때마다 처리
- 실시간성 보장, 데이터가 여러 소스로부터 들어올 때, 데이터가 가끔 들어오거나 지속적으로 들어올 때, 가벼운 처리를 할 때 주로 사용
- Flow
- 데이터가 들어올때마다 → 쿼리/처리 후 state 업데이트 → DB에 담기
- Micro Batch
- 데이터를 조금씩 모아서 처리하는 방식
- Batch Processing을 잘게 쪼개서 Stream을 흉내 내는 방식
- Dataflow Orchestration
- Data Task를 지휘하는 느낌
- Task 스케줄링
- 분산 실행
- Task간 의존성 관리
- 대표적인 Tool : Airflow