Data Ingestion & Transformation Engineering
원천 시스템에서 데이터를 수집하는 수송 과정과 분석 목적에 맞게 재가공하는 ETL/ELT 파이프라인의 물리적 구축을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
데이터 수집 및 변환 엔지니어링(Data Ingestion & Transformation Engineering, ITE)은 파편화된 원천 데이터(Source)를 분석 가능한 정제 데이터(Target)로 이동시키고 가공하는 전과정을 다룹니다.
데이터는 생성되는 순간과 분석되는 순간의 물리적 형태가 다릅니다. 학습자는 대량의 로그를 실시간으로 흘려보내는 수집 역학, 배치(Batch)와 스트리밍(Streaming) 처리 모델의 차이, 그리고 데이터의 중복을 제거하고 타입을 맞추는 변환 로직의 효율성을 학습합니다. 이를 통해 지연 시간은 낮고 처리량은 높은 안정적인 '데이터 혈맥'을 설계합니다.
2. Scope & Boundaries
In-Scope
- Ingestion Patterns: Pull vs Push 모델, CDC(Change Data Capture) 물리 구현
- Pipeline Models: ETL (Extract-Transform-Load) vs ELT (Extract-Load-Transform)
- Transformation Logic: 데이터 정규화, 집계(Aggregation), 데이터 클렌징 알고리즘
- Orchestration: 파이프라인 의존성 관리 및 워크플로우 물리 스케줄링 기초
Out-of-Scope
- 데이터 거버넌스 및 보안 정책 수립 (06-04 Data Governance 영역으로 위임)
- 순수 데이터 과학 분석 및 통계 모델링 (11. Machine Learning 영역으로 위임)
Boundaries
- ITE vs. Distributed Logic: 06-03(DL)이 '데이터베이스 내부의 복제'를 다룬다면, ITE는 '이종 시스템 간의 데이터 이동과 형태 변환'에 집중합니다.
3. Counterexample
- 단순히 API를 호출해서 데이터를 DB에 넣는 코드를 짜는 것은 ITE 학습이 아닙니다. 원천 시스템에 부하를 주지 않기 위해 **CDC(Change Data Capture)**를 어떻게 물리적으로 적용할지 설계하고, 파이프라인 중단 시 데이터 유실 없이 재시작할 수 있는 멱등성(Idempotency) 보장 방식을 논할 수 있어야 합니다.
4. Prerequisites
- 기초 및 복잡도 (Basic): 대규모 데이터 처리 시의 시간/공간 복잡도 분석이 필요합니다. (04. Foundations)
- 관계형 시스템 기초 (Recommended): 데이터 스키마와 타입 변환 이해를 위해 RDBMS 지식이 필요합니다. (06. RS)
5. Learning Map
- Gatekeeping Sources: 다양한 원천 시스템(DB, API, Log)에서 데이터를 낭비 없이 가져오는 법을 익힙니다.
- Buffering & Streaming: 데이터의 폭증을 견디기 위한 메시지 큐와 스트림 처리 엔진의 역할을 이해합니다.
- The Alchemy of Data: 비정형 데이터를 분석 요건에 맞는 정형 구조로 물리적으로 재구성(Transform)합니다.
- Reliable Pipelines: 장애 감지, 자동 재시도, 데이터 정합성 체크가 포함된 견고한 파이프라인을 구축합니다.
6. Learning Topics
Basic
Core: 데이터 수집 패턴과 CDC (Ingestion & CDC)
- Why to Learn: 원천 서비스 성능에 영향을 주지 않으면서 실시간성을 확보하기 위함입니다.
- What to Learn:
- Full Load vs Incremental Load의 물리적 차이
- DB 로그(Binlog, WAL) 분석을 통한 Change Data Capture 역학
- API 기반 수집 시 Rate Limiting과 백오프(Backoff) 전략
- How to Learn:
- MySQL의 WAL 로그를 직접 읽어 변경 사항을 추출하는 로직 시뮬레이션
- 대용량 데이터 전송 시 대역폭(Bandwidth) 사용량 계산기 활용 연습
- Implement: 특정 DB의 변경 사항을 감지하여 메시지 큐로 전달하는 CDC 파이프라인 설계
Recommended
Core: 데이터 변환과 파이프라인 모델 (ETL vs ELT)
- Why to Learn: 데이터 웨어하우스/레이크의 연산 비용과 유연성을 최적화하기 위해서입니다.
- What to Learn:
- ETL: 수집 단계에서의 가공 오버헤드와 저장 공간 절감 효과
- ELT: 원본 보존의 장점과 현대 클라우드 DW(BigQuery 등)의 연산 활용
- 스키마 관리: Schema-on-write vs Schema-on-read 물리 거동
- How to Learn:
- 동일한 변환 로직을 Python(애플리케이션단)과 SQL(DB단)에서 각각 수행하며 성능 비교
- JSON 형식의 중첩 데이터를 평탄화(Flattening)하는 물리적 비용 분석
- Implement: 데이터 유입량에 따라 ETL과 ELT 방식을 선택하는 아키텍처 비교 보고서
Practical
Core: 배치 및 스트림 처리 엔진 (Batch & Stream Processing)
- Why to Learn: 데이터의 최신성 요구도에 따라 물리 자원을 효율적으로 배분하기 위함입니다.
- What to Learn:
- Batch: 대규모 윈도우 집계와 처리 지연(Latency)의 물리적 한계
- Stream: 이벤트 시간(Event Time) vs 처리 시간(Processing Time)의 물리적 차이
- 워터마크(Watermark)를 이용한 지각 데이터(Late data) 처리 논리
- How to Learn:
- 스트리밍 엔진(Flink, Spark Streaming)에서 윈도우 크기 조정에 따른 메모리 점유 변화 관측
- 재처리(Reprocessing) 시 이전 상태(State) 복구 메커니즘 분석
- Implement: 실시간 지표 집계를 위한 윈도우 알고리즘이 적용된 스트림 파이프라인
Advanced
Core: 워크플로우 오케스트레이션과 재신뢰 (Orchestration & Reliability)
- Why to Learn: 수백 개의 파이프라인이 얽힌 복잡한 환경에서 데이터 사고를 막기 위해서입니다.
- What to Learn:
- DAG(Directed Acyclic Graph) 기반의 작업 의존성 모델링
- 멱등성(Idempotency): 동일 작업 재실행 시 데이터 중복 방지 물리
- 데이터 품질 체크(Great Expectations 등) 파이프라인 자동 삽입
- How to Learn:
- Airflow 등을 이용해 복잡한 순서의 데이터 가공 워크플로우 수립 실습
- 파이프라인 중간 단계 강제 종료 후 데이터 누락 유무 전수 조사
- Implement: 장애 발생 시 자동으로 이전 상태로 복구되는 자가 치유(Self-healing) 파이프라인 구성
7. Terminology
8. References
Primary References
- [P4] DS-BoK - Data Ingestion & Transformation — Pipeline principles.
- [P2] SWEBOK - Software Construction — Data processing and transformation.
Secondary References
- [Fundamentals of Data Engineering] Joe Reis & Matt Housley — Modern holistic view.
- [Data Pipelines Pocket Reference] James Densmore — Practical design patterns.
Industry References
- [Confluent Documentation - CDC & Connector Guides] — Messaging ingestion standard.
- [dbt (data build tool) Best Practices] — Modern ELT transformation industry standard.
9. Final Checklist
Primary Checklist
- 데이터 파이프라인 설계 시 하류(Downstream) 시스템의 타입 제약 조건을 고려하여 소스 데이터를 물리적으로 캐스팅 가능한가? (P4)
- 대용량 배치 작업 중 특정 태스크가 실패했을 때, 전체를 다시 시작하지 않고 실패 지점부터 재개하도록 DAG를 설계할 수 있는가? (P4)
Secondary Checklist
- 데이터 소스가 텍스트 파일(CSV/JSON)인 경우와 DB 로그(CDC)인 경우의 네트워크 대역폭 부하를 정량적으로 추정할 수 있는가?
- 변환 로직 중 'Join' 연산이 메모리에서 일어날 때와 디스크 임시 공간을 사용하며 일어날 때의 속도 차이를 인지하는가?
Industry Checklist
- 실무 환경에서 Kafka와 같은 중간 버퍼링 시스템이 생산자(Producer)와 소비자(Consumer) 사이의 물리적 속도 차이를 어떻게 완충하는지 설명 가능한가? (SFIA)
- 규제 준수를 위해 데이터 유입 단계에서 개인정보 항목을 자동 식별하여 마스킹하는 전처리 로직을 파이프라인에 통합 가능한가?