[견고한] Chapter 1: 데이터 엔지니어링 상세 (및 용어정리)
※ 조 라이스와 맷 하우슬리가 공동으로 집필한 '견고한 데이터 엔지니어링'을 공부하면서, 중요한 내용들을 기록해둔 공간입니다. 데이터 엔지니어로써 중요하다고 생각되는 개념들에 대해 자체적으로 공부하며 정리한 글입니다.
데이터 엔지니어링이란?
데이터 엔지니어링은 간단히 정리하면, 시중에 나와있는 정보를 뽑아와서 (추출 - extract), 우리가 필요한 형태로 조작해서 (가공 - transform), 데이터 분석가 혹은 데이터 과학자가 활용할 수 있게 전달 (저장 - load) 하는 직군이다. 데이터 과학의 업스트림에 위치하며, 이 일련의 과정을 ETL이라고 부르기도 한다. 그래서 원천 시스템에서 데이터를 가져오는 것부터 시작해 분석 또는 머신러닝과 같은 사용 사례에 데이터를 제공하는 것까지를 해당 데이터의 '데이터 엔지니어링 수명' 이라고 일컫는다.
(1) 데이터 수집
- 의미: 다양한 소스에서 원천 데이터를 가져오는 단계.
- 예: API 호출, 웹 크롤링, 로그 데이터 수집.
- 도구: Kafka, Pub/Sub, Python Requests.
(2) 데이터 저장
- 의미: 수집된 데이터를 저장하여 안정적으로 관리.
- 예: NoSQL(MongoDB, Cassandra), RDBMS(MySQL, PostgreSQL), 클라우드 스토리지.
- 도구: AWS S3, GCP Cloud Storage, HDFS.
(3) 데이터 처리(ETL/ELT)
- 의미: 데이터를 정제하고 변환하여 분석 가능한 형태로 준비.
- 데이터 변환: 대규모 데이터를 메모리에서 빠르게 변환하는 Spark
- ETL vs ELT:
- ETL: 데이터를 웨어하우스로 적재하기 전에 변환.
- ELT: 데이터를 웨어하우스로 적재한 후 변환(BigQuery에서 SQL로 처리).
(4) 데이터 제공
- 의미: 가공된 데이터를 데이터 분석가, 데이터 사이언티스트에게 제공.
- 형태: 데이터 웨어하우스(SQL 접근), 대시보드, API.
- 도구: Tableau, Power BI, API Gateway.
(5) 데이터 모니터링
- 의미: 파이프라인의 정상 작동을 확인하고 데이터 품질을 검증.
- 도구: Airflow(워크플로우 상태), Prometheus(모니터링).
데이터 엔지니어링의 유형
기본적으로 데이터 엔지니어링은 곧 ETL이다, 라고 생각해도 무방함.
다만, 2000년대까지는 데이터의 양이 하나의 서버에서도 처리 가능한 수준이었기 때문에 모놀리식 서비스로 충분했다면, 시간이 지나 양이 방대해지고, 또 데이터의 속성도 정형 데이터 뿐만 아니라 텍스트, 이미지, 로그 등의 비정형 데이터로 확장되면서 분산 시스템을 활용해야만 했음. 그래서 나온 게 빅데이터 엔지니어링.
SQL 중심 엔지니어링과 빅데이터 엔지니어링은 도구의 차이일 뿐, 큰틀에서 구조와 흐름은 같음.
1 SQL 중심
SQL 중심 데이터 엔지니어링은 주로 DB와 데이터 웨어하우스를 기반으로 함.
(1) Extract: 다양한 소스 (API, 파일, DB 등) 에서 데이터를 가져옴.
(2) Transform: 데이터를 분석에 적합한 형태로 변환 - 필터링, 집계, 매핑 등
(3) Load: 변환된 데이터를 데이터 웨어하우스 (BigQuery) 에 저장
ETL 도구는 Airflow가 유망하고, SQL로 데이터를 쿼리하고 가공함.
2 빅데이터 중심 - Kafka, Hadoop, Spark, Cassandra 등
빅데이터 중심 데이터 엔지니어링은 대규모 데이터 처리 및 분산 시스템에 초점.
* 주요 기술:
(1) Kafka: 분산 메시징 플랫폼. 실시간 데이터 스트리밍과 처리에 강점이 있음.
(2) Hadoop: 분산 데이터 저장 및 처리 시스템.
(3) Spark: 메모리 기반 데이터 처리로 빠른 성능.
(4) Cassandra: 분산 데이터베이스로 대규모 데이터 저장.
* 빅데이터를 다룰 때에는, 양이 많은 정보를 일단 저장하고 보는 게 더 나은 경우도 많이 있으므로, ETL이 아니라 ELT의 방식으로 흔히 진행한다.
=> 현대의 기업들은 보통, 데이터 웨어하우스로 정형 데이터 분석 및 BI를 맡고, 빅데이터 플랫폼을 통해 실시간 데이터를 처리하고 예측 분석함. 물론 빅데이터 플랫폼에서 정형 데이터를 분석할 경우에는 데이터 웨어하우스를 활용함.
더 상세한 데이터 주기: 데이터 웨어하우스 vs 빅데이터 플랫폼
1. 데이터 웨어하우스에서의 데이터 주기
- 데이터 수집 (Extract)
- 다양한 데이터 소스(ERP, CRM, IoT 등)에서 데이터를 가져옴.
- 주요 도구:
- ETL 도구: Talend, Informatica, Pentaho.
- 클라우드 솔루션: AWS Glue, Google Dataflow.
- 데이터 변환 (Transform)
- 데이터를 정리, 필터링, 표준화하여 분석 가능하게 만듦.
- 주요 도구:
- SQL 기반 플랫폼: DBT, Apache Spark(SQL 모드).
- 클라우드 데이터 처리: AWS Glue, Azure Data Factory.
- 데이터 적재 (Load)
- 데이터를 데이터 웨어하우스에 적재.
- 주요 도구:
- 클라우드 데이터 웨어하우스: Snowflake, Google BigQuery, AWS Redshift.
- 온프레미스: Teradata, Oracle Exadata.
- 데이터 분석 및 시각화
- 데이터 웨어하우스에 저장된 데이터를 쿼리하거나 BI 도구로 시각화.
- 주요 도구:
- BI 도구: Tableau, Power BI, Looker.
- SQL 엔진: Presto, Apache Hive.
2. 빅데이터 플랫폼에서의 데이터 주기
- 데이터 수집
- 정형, 반정형, 비정형 데이터를 모두 처리 가능.
- 주요 도구:
- 스트리밍 데이터 수집: Apache Kafka, Apache Flume.
- 파일 기반 데이터 수집: Sqoop (RDBMS → Hadoop), Nifi.
- 데이터 저장
- 원시 데이터를 데이터 레이크에 저장.
- 주요 도구:
- 데이터 레이크: Hadoop HDFS, Amazon S3, Google Cloud Storage.
- NoSQL DB: Cassandra, MongoDB.
- 데이터 처리
- 대규모 데이터를 정리하고 분석 가능한 형태로 변환.
- 주요 도구:
- 배치 처리: Apache Spark, Hadoop MapReduce.
- 스트리밍 처리: Apache Flink, Apache Kafka Streams.
- 데이터 분석 및 머신러닝
- 분석 작업 및 모델 학습.
- 주요 도구:
- 분석 도구: Spark SQL, Presto, Druid.
- ML 프레임워크: TensorFlow, PyTorch, MLlib.
- 데이터 시각화
- 분석 결과를 비즈니스 인텔리전스(BI) 도구로 시각화.
- 주요 도구:
- Tableau, Superset, Grafana.