5. 데이터 엔지니어링 개요

 

1. 개요

1.1 데이터 엔지니어링의 목적

데이터 기반 의사결정을 위한 인프라 구축

  1. 비즈니스 의사결정
    • 가격책정
    • 모니터링
    • 분석
  2. 서비스 운영/개선
    • A/B 테스트
    • UI/UX
    • 운영/자동화

1.2 Why 데이터 엔지니어링?

  1. 데이터 엔지니어링 시장의 폭발적인 성장
    • 방대한 데이터 문제
    • 데이터 문제 해결의 파급력이 큼
  2. 기업은 분석보다 데이터 엔지니어링을 더 필요로 함
    • 데이터를 이용하여 인사이트를 추출하는 업무의 대부분은 데이터 엔지니어링
    • Garbage In Garbage Out: 복잡한 모델을 만드는 것보다 좋은 데이터를 모으고 관리하는 것이 훨씬 효율적인 성과를 냄
  3. 데이터는 계속 증가할 것이고, 데이터 엔지니어링은 더욱 중요해질 것

2. 모던 데이터 엔지니어링 아키텍쳐

2.1 과거

  1. 컴퓨팅 파워와 용량이 비쌈
  2. 용도가 정해져 있음
  3. 데이터가 나올 곳도 정해져 있음

그 결과, 데이터 관리 방식

  1. 데이터 형식(스키마)을 미리 생성해야함
  2. 데이터 변동이 거의 없음
  3. 효율적인 데이터베이스 모델링이 중요 (ETL pipeline)

2.2 현재

  1. 데이터로 할 수 있는 일이 다양해지고 형태를 예측하기 불가능해지면서 스키마 정의가 어려워졌음
    • 실시간성을 요구
    • 빨라지는 기능 추가
    • 실시간 로그
    • 비정형 데이터
    • 서드 파티 데이터
  2. 저렴해진 컴퓨팅 파워
  3. 컴퓨팅 파워에 대한 비용 최적화보나 비즈니스와 속도 최적화가 효율적

그 결과, 데이터 관리 방식 변화
ETL 방식 -> ELT 방식

  • Extract: 데이터 추출
  • Load: 일단 저장
  • Transform: 쓰임새에 따라 변환

e.g.

  • E, L: 데이터를 Spark, Flink를 통해 어느정도 정리 후 저장
  • T: 어플리케이션 혹은 분석 툴에서 이용가능하도록 변환

2.3 데이터 아키텍쳐 분야

일반적인 엔지니어링은 수집 및 변환, 데이터 처리에 집중

  1. 소스(Sources): 데이터 생성
    Log, Database
  2. 수집 및 변환 (Ingestion & Transformation): ELT
    Airflow, Kafka, Pandas, Spark, Flink, Hive
  3. 저장 (Storage): 쿼리 가능하도록 저장
    Parquet, S3, HDFS
  4. 과거 (Query): 과거 데이터 검색
    Presto, Dremio
  5. 예측 (Processing): 미래 데이터 예측
    Tensorflow, Pytorch, Spark, SparkML, Flink
  6. 출력 (Output): 데이터 적용
    Tableau, Looker

3. 앞으로 배울 내용

  1. Spark와 데이터 병렬-분산 처리
  2. Airflow와 데이터 오케스트레이션
  3. Kafka와 이벤트 스트리밍
  4. Flink와 분산 스트림 프로세싱