graph TD A[원시 데이터] --> B[데이터 수집] B --> C[데이터 처리] C --> D[데이터 저장] D --> E[데이터 분석] E --> F[인사이트 도출] F --> G[의사결정]
데이터 엔지니어링의 기초와 실무
1/15/24
데이터 엔지니어링 (Data Engineering)은
원시 데이터를 분석 가능한 형태로 변환하고 관리하는 분야
graph TD A[원시 데이터] --> B[데이터 수집] B --> C[데이터 처리] C --> D[데이터 저장] D --> E[데이터 분석] E --> F[인사이트 도출] F --> G[의사결정]
주요 역할:
필요 기술:
주요 역할:
필요 기술:
상호 의존성:
핵심 메시지
데이터 엔지니어링은 데이터 분석의 기초를 제공하며,
현대 기업의 디지털 전환에 필수적인 역할을 합니다.
데이터 파이프라인은 데이터의 흐름을 자동화하고
체계적으로 관리하는 일련의 프로세스
주요 구성요소:
핵심 특징:
graph TD A[데이터 소스] --> B[Extract] B --> C[Transform] C --> D[Load] D --> E[Data Warehouse] E --> F[Analytics] style A fill:#e1f5fe style E fill:#e8f5e8 style F fill:#fff3e0
ETL (Extract, Transform, Load)
graph LR A[소스 데이터] --> B[Extract] B --> C[Transform] C --> D[Load] D --> E[Data Warehouse] style C fill:#ffcdd2
특징: - 데이터 변환 후 저장 - 구조화된 데이터에 적합 - 전통적인 데이터 웨어하우스 환경 - 스케마 정의 후 데이터 적재
ELT (Extract, Load, Transform)
graph LR A[소스 데이터] --> B[Extract] B --> C[Load] C --> D[Transform] C --> E[Data Lake] style D fill:#c8e6c9
특징: - 원시 데이터 저장 후 변환 - 빅데이터 환경에 적합 - 클라우드 데이터 웨어하우스 - 스케마 온 리드 (Schema on Read)
Batch Processing Pipeline
사용 사례: - 일별 매출 보고서 - 월별 고객 세그먼테이션 - 연간 재무 분석
도구: Apache Airflow, Cron, Jenkins
Real-time Processing Pipeline
사용 사례: - 실시간 추천 시스템 - 사기 탐지 시스템 - 실시간 모니터링 대시보드
도구: Apache Kafka, Storm, Flink
Lambda & Kappa Architecture
사용 사례: - 전자상거래 플랫폼 - 금융 거래 시스템 - IoT 데이터 플랫폼
1. 확장성 (Scalability)
2. 신뢰성 (Reliability)
3. 모니터링 (Monitoring)
4. 재사용성 (Reusability)
5. 보안 (Security)
설계 팁
파이프라인 설계 시 “단순함”을 추구하고,
“모니터링 우선” 원칙을 따르세요.
데이터 처리 엔진
워크플로우 관리
데이터 저장소
클라우드 플랫폼
Apache Spark의 특징:
핵심 컴포넌트: - Spark Core: 기본 실행 엔진 - Spark SQL: 구조화된 데이터 처리 - Spark Streaming: 실시간 데이터 처리 - MLlib: 머신러닝 라이브러리 - GraphX: 그래프 처리
Airflow의 핵심 개념:
주요 장점: - 시각적 워크플로우 관리 - 풍부한 모니터링 기능 - 확장 가능한 아키텍처 - 재시도 및 오류 처리
# Airflow DAG 예제
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime
def extract_data():
# 데이터 추출 로직
pass
def transform_data():
# 데이터 변환 로직
pass
dag = DAG(
'data_pipeline',
start_date=datetime(2024, 1, 1),
schedule_interval='@daily'
)
extract_task = PythonOperator(
task_id='extract',
python_callable=extract_data,
dag=dag
)
transform_task = PythonOperator(
task_id='transform',
python_callable=transform_data,
dag=dag
)
extract_task >> transform_task
서비스 | AWS | Google Cloud | Azure | 특징 |
---|---|---|---|---|
데이터 웨어하우스 | Redshift | BigQuery | Synapse | 대용량 분석 |
데이터 파이프라인 | Glue | Dataflow | Data Factory | ETL 처리 |
스트리밍 | Kinesis | Pub/Sub | Event Hubs | 실시간 처리 |
스토리지 | S3 | Cloud Storage | Blob Storage | 객체 저장 |
컨테이너 | ECS/EKS | GKE | AKS | 오케스트레이션 |
선택 기준
클라우드 서비스 선택 시 기존 인프라, 비용, 팀 역량을
종합적으로 고려해야 합니다.
1. 데이터 웨어하우스 (DW)
2. 데이터 레이크 (DL)
3. 데이터 레이크하우스
4. 데이터 메시 (Data Mesh)
graph TD subgraph "데이터 웨어하우스" A[구조화된 데이터] --> B[ETL] B --> C[스키마 정의] C --> D[데이터 웨어하우스] D --> E[BI 도구] end subgraph "데이터 레이크" F[모든 형태 데이터] --> G[ELT] G --> H[원시 데이터 저장] H --> I[데이터 레이크] I --> J[분석 도구] end style D fill:#e3f2fd style I fill:#e8f5e8
Data Ingestion Layer
Data Storage Layer
Data Processing Layer
Analytics Layer
데이터 거버넌스의 핵심 영역:
거버넌스 도구: - Apache Atlas: 메타데이터 관리 - DataHub: 데이터 발견 플랫폼 - Great Expectations: 데이터 품질 테스트 - Apache Ranger: 보안 관리
graph TD A[데이터 거버넌스] --> B[품질 관리] A --> C[보안 관리] A --> D[메타데이터 관리] A --> E[규정 준수] B --> F[데이터 프로파일링] B --> G[품질 모니터링] C --> H[접근 제어] C --> I[데이터 암호화] style A fill:#fff3e0 style B fill:#e8f5e8 style C fill:#ffebee
비즈니스 요구사항:
데이터 소스:
기술 스택:
성과:
도전 과제:
기존 시스템 문제: - 사일로화된 데이터 - 배치 처리 위주 - 데이터 품질 이슈 - 확장성 부족
아키텍처 설계:
graph LR A[거래 시스템] --> B[Kafka] C[고객 시스템] --> B D[외부 데이터] --> B B --> E[Spark Streaming] E --> F[Data Lake] F --> G[ML 모델] G --> H[실시간 알림] F --> I[Data Warehouse] I --> J[리포트]
핵심 기술: - 실시간 스트리밍: Kafka + Spark - 데이터 레이크: S3 + Delta Lake - ML 플랫폼: MLflow + SageMaker - 보안: Vault + Ranger
성과 지표:
교훈: - 점진적 마이그레이션 전략 - 데이터 품질 우선 투자 - 크로스 팀 협업의 중요성 - 모니터링 및 알림 체계
시나리오:
데이터 파이프라인:
핵심 기술: - 시계열 DB: InfluxDB, TimeScale - 실시간 처리: Kafka Streams, Flink - 모니터링: Prometheus, Grafana - ML: TensorFlow, scikit-learn
graph TD A[IoT 센서] --> B[Gateway] B --> C[Kafka] C --> D[Stream Processing] D --> E[InfluxDB] D --> F[S3] E --> G[Grafana] F --> H[Spark ML] H --> I[예측 모델] I --> J[알림 시스템] style A fill:#e3f2fd style E fill:#e8f5e8 style I fill:#fff3e0
결과: - 장비 다운타임 35% 감소 - 에너지 비용 20% 절약 - 예측 정확도 88% - 실시간 모니터링 구현
데이터 품질 문제의 영향:
데이터 품질 측정 지표: - 정확성 (Accuracy): 실제 값과의 일치도 - 완전성 (Completeness): 누락된 데이터 비율 - 일관성 (Consistency): 데이터 간 모순 정도 - 적시성 (Timeliness): 데이터 최신성 - 유효성 (Validity): 비즈니스 룰 준수
graph TD A[데이터 품질] --> B[정확성] A --> C[완전성] A --> D[일관성] A --> E[적시성] A --> F[유효성] B --> G[실제 값과 일치] C --> H[누락 데이터 최소화] D --> I[시스템 간 일관성] E --> J[데이터 최신성] F --> K[비즈니스 룰 준수] style A fill:#fff3e0 style B fill:#e8f5e8 style C fill:#e3f2fd
Data Profiling
Quality Rules Definition
# Great Expectations 예제
import great_expectations as ge
# 데이터 검증 규칙
expectation_suite = {
"expectation_suite_name": "customer_suite",
"expectations": [
{
"expectation_type": "expect_column_values_to_not_be_null",
"kwargs": {"column": "customer_id"}
},
{
"expectation_type": "expect_column_values_to_match_regex",
"kwargs": {"column": "email", "regex": r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"}
}
]
}
Quality Monitoring
# Airflow 품질 모니터링 예제
from airflow import DAG
from airflow.operators.python import PythonOperator
from great_expectations_provider.operators.great_expectations import GreatExpectationsOperator
def data_quality_check():
# 데이터 품질 체크 로직
pass
quality_check_task = GreatExpectationsOperator(
task_id="quality_check",
expectation_suite_name="customer_suite",
batch_request_file="batch_request.json",
dag=dag
)
Quality Improvement
개선 전략: - 소스 시스템에서 품질 개선 - 파이프라인 내 자동 정제 - 사용자 피드백 반영 - 지속적인 품질 모니터링
오픈소스 도구:
상용 도구:
# 데이터 품질 메트릭 계산
def calculate_quality_metrics(df):
metrics = {}
# 완전성 (Completeness)
metrics['completeness'] = (
df.count() / len(df) * 100
).mean()
# 유일성 (Uniqueness)
metrics['uniqueness'] = (
df.nunique() / len(df) * 100
).mean()
# 유효성 (Validity)
valid_emails = df['email'].str.contains(
r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$',
na=False
).sum()
metrics['email_validity'] = (
valid_emails / len(df) * 100
)
return metrics
1. 실시간 데이터 처리 확산
2. 클라우드 네이티브 전환
3. 데이터 메시 아키텍처
4. AI/ML 통합 강화
5. 데이터 관측성 (Observability)
6. 프라이버시 보호 기술
Real-time Analytics
사용 사례: - 실시간 대시보드 - 이상 탐지 시스템 - 개인화 추천 - 실시간 A/B 테스트
Data Lakehouse Architecture
장점: - 구조화/비구조화 데이터 통합 - 실시간 배치 처리 지원 - 확장 가능한 아키텍처 - 비용 효율성
Serverless Computing
특징: - 자동 확장 - 사용량 기반 과금 - 운영 부담 최소화 - 빠른 개발 속도
Data Observability
플랫폼: - Monte Carlo - DataDog - Bigeye - Anomalo
기술적 역량:
비즈니스 역량:
graph TD A[미래 데이터 엔지니어] --> B[기술 역량] A --> C[비즈니스 역량] A --> D[소프트 스킬] B --> E[클라우드 네이티브] B --> F[실시간 처리] B --> G[MLOps] C --> H[도메인 지식] C --> I[데이터 거버넌스] C --> J[비즈니스 이해] D --> K[문제 해결] D --> L[협업] D --> M[지속 학습] style A fill:#fff3e0 style B fill:#e8f5e8 style C fill:#e3f2fd
1단계: 기초 (3-6개월)
2단계: 중급 (6-12개월)
3단계: 고급 (12-24개월)
4단계: 전문가 (24개월+)
데이터 엔지니어링의 핵심 가치:
성공적인 데이터 엔지니어링을 위한 핵심:
데이터 엔지니어링 성공 전략
질문과 토론
seonghak.hong@email.com
https://aidenhong.com
https://github.com/euriion
“데이터 엔지니어링은 기술이 아닌 비즈니스 문제를 해결하는 것입니다.
올바른 데이터를 올바른 시간에 올바른 사람에게 전달하는 것이 우리의 사명입니다.”
Data Engineering 기초 | 홍성학