1. 개요
1.1 데이터 엔지니어링의 목적
데이터 기반 의사결정을 위한 인프라 구축
- 비즈니스 의사결정
- 가격책정
- 모니터링
- 분석
- 서비스 운영/개선
- A/B 테스트
- UI/UX
- 운영/자동화
1.2 Why 데이터 엔지니어링?
- 데이터 엔지니어링 시장의 폭발적인 성장
- 방대한 데이터 문제
- 데이터 문제 해결의 파급력이 큼
- 기업은 분석보다 데이터 엔지니어링을 더 필요로 함
- 데이터를 이용하여 인사이트를 추출하는 업무의 대부분은 데이터 엔지니어링
- Garbage In Garbage Out: 복잡한 모델을 만드는 것보다 좋은 데이터를 모으고 관리하는 것이 훨씬 효율적인 성과를 냄
- 데이터는 계속 증가할 것이고, 데이터 엔지니어링은 더욱 중요해질 것
2. 모던 데이터 엔지니어링 아키텍쳐
2.1 과거
- 컴퓨팅 파워와 용량이 비쌈
- 용도가 정해져 있음
- 데이터가 나올 곳도 정해져 있음
그 결과, 데이터 관리 방식
- 데이터 형식(스키마)을 미리 생성해야함
- 데이터 변동이 거의 없음
- 효율적인 데이터베이스 모델링이 중요 (ETL pipeline)
2.2 현재
- 데이터로 할 수 있는 일이 다양해지고 형태를 예측하기 불가능해지면서 스키마 정의가 어려워졌음
- 실시간성을 요구
- 빨라지는 기능 추가
- 실시간 로그
- 비정형 데이터
- 서드 파티 데이터
- 저렴해진 컴퓨팅 파워
- 컴퓨팅 파워에 대한 비용 최적화보나 비즈니스와 속도 최적화가 효율적
그 결과, 데이터 관리 방식 변화
ETL 방식 -> ELT 방식
- Extract: 데이터 추출
- Load: 일단 저장
- Transform: 쓰임새에 따라 변환
e.g.
- E, L: 데이터를 Spark, Flink를 통해 어느정도 정리 후 저장
- T: 어플리케이션 혹은 분석 툴에서 이용가능하도록 변환
2.3 데이터 아키텍쳐 분야
일반적인 엔지니어링은 수집 및 변환, 데이터 처리에 집중
- 소스(Sources): 데이터 생성
Log, Database - 수집 및 변환 (Ingestion & Transformation): ELT
Airflow, Kafka, Pandas, Spark, Flink, Hive - 저장 (Storage): 쿼리 가능하도록 저장
Parquet, S3, HDFS - 과거 (Query): 과거 데이터 검색
Presto, Dremio - 예측 (Processing): 미래 데이터 예측
Tensorflow, Pytorch, Spark, SparkML, Flink - 출력 (Output): 데이터 적용
Tableau, Looker
3. 앞으로 배울 내용
- Spark와 데이터 병렬-분산 처리
- Airflow와 데이터 오케스트레이션
- Kafka와 이벤트 스트리밍
- Flink와 분산 스트림 프로세싱
PREVIOUSEtc