BigData/Data Engineering
[Data Pipeline] 1. batch job data pipeline의 구성과 장,단점과 정리 (비용, 고려 사항, 성능)
스파이디웹
2025. 4. 13. 10:03
728x90
이번 포스트에는 batch job에 사용될 수 있는 다양한 데이터파이프라인 조합과 그에 따른 장단점과 고려 사항을 정리해보겠습니다.
아래의 항목들이 포함한 특징을 같이 적어보겠습니다.
- 상황별 배치 파이프라인 구성
- 장단점
- 조직의 규모 및 구성
- 비용
- 확장성
- 백업, 모니터
1. 각 데이터 파이프라인의 구성
흔히 말하는 E(Extract), T(Transform), L(Load) 하는 소스며, 프레임워크며, 저장 장소가 정말 다양하고 비용과 성능 그리고 필요한 비지니스 요건에 따라 달라집니다. 우선 그 종류에 대해서 파악해보고 장단점을 하나씩 확인해보겠습니다.
1) 다양한 소스의 구성
| 소스 | 특징 / 설명 | 예시 |
| RDBMS | 구조화된 정형 데이터 | MySQL, PostgreSQL, Oracle, MSSQL |
| 로그 데이터 | 반정형/비정형 이벤트 데이터 | Web server logs, App logs |
| 파일 기반 | 주기적으로 수집되는 데이터 | CSV, JSON, Parquet, Excel |
| 메시지 큐 | 실시간 스트리밍도 가능하나 batch 적재도 존재 | Kafka, Kinesis, RabbitMQ |
| API | 외부/내부 시스템 데이터 | REST API, GraphQL |
| 클라우드 저장소 | 다양한 서비스에서 내보낸 export 데이터 | S3, GCS, Azure Blob Storage |
2) 다양한 데이터 처리 방법
| 프레임워크 | 특징 / 설명 | 예시 |
| pandas | 직관적이며, 적은 데이터(수GB이내) 처리, 병렬 처리 불가 | - |
| polars | 병렬 처리가능, rust 기반, 빠르다, lazy execution | - |
| SQL | 적재 후 마트를 만드는 개념의 SQL로써 사용 가능하며, ANSI SQL이며 각 제품들의 엔진에 따른 SQL 문법이며 function도 사용 가능함 | AWS Athena, AWS Redshift, GCP Bigquery, Azure Synapse |
| Spark | 병렬 처리 가능하며, sparkSQL로 SQL지원도 가능, 대용량 데이터에 적합 | AWS EMR, AWS EMR Serverless, AWS Glue ETL, Azure Data Factory, Azure Databricks, Databricks |
| Hive | 속도가 느린 편이며, 대용량 데이터 안전하게 처리하기에 적합, SQL과 비슷한 HiveQL을 통해 데이터를 처리 | AWS EMR, AWS EMR Serverless, Azure Data Factory |
| dbt | SQL중심의 조직인 경우 적합 | - |
| Python Script | ETL을 구현한 python script로써 비교적 자유로운 구성이 가능 | - |
3) 다양한 데이터 저장소
| 데이터 저장소 | 특징 / 설명 | 예시 |
| Data Lake | ELT 개념에서 우선 적재에 사용되는 개념, S3,Blob 같은 object storage기반으로 파일형태의 데이터를 중간 저장소로 사용 | AWS S3, Azure Data Lake, GCS |
| Data Warehouse | MPP DB로 분석을 위한 용도로 높은 쿼리 성능과 일정수준의 트랜잭션 제어 가능 | GCP BigQuery, AWS Redshift, Azure synapse,SnowFlake |
| Hadoop(HDFS) | hadoop base의 온프렘 환경의 시스템인 경우 기존의 자원을 활용하는 HDFS를 저장소로써 사용 가능 | AWS EMR |
| NoSQL | 비정형 또는 반정형 데이터, 빠른 쓰기 성능, 수평 확장성 등을 요구하는 경우에 특히 적합 | MongoDB, AWS DynamoDB, Cassandra, redis, neo4j |
4) 오케스트레이션 및 스케줄링 도구
| 도구 | 특징 / 설명 | 사용 예시 |
| Airflow | Python(코드) 기반 DAG 워크플로우 정의, 풍부한 커넥터, 시각화, 강력한 커뮤니티, 3.0버전으로 올라가면서 DAG versioning, 대규모 backfill, 다중 스케줄링, 다중 언어 지원 등 가능해짐 | on-premise, cloud 환경 어디에서나 사용 가능, 복잡한 파이프라인 관 |
| Dagster | 모듈화된 파이프라인, 타입 시스템, 테스트 지원, UI 제공 | 데이터 품질 관리 중시 팀 |
| Oozie | Hadoop 에코시스템에 특화된 워크플로우, XML 기반 선언형 정의,UI로 의존성 설정 가능 | Hadoop, Hive, Spark 등 Hadoop 기반 배치처리에 집중된 환경 |
| AWS Glue | 서버리스, AWS 통합 | AWS 중심, 자동화된 ETL |
| Crontab | 단순 스케줄링 도구, 시간 기반 트리거 | 조직의 규모가 작을 때, 간단한 스크립트 정기 실행, 복잡한 의존성 없을 때 |
| Argoflow | 쿠버네티스 네이티브 | k8s 환경 컨테이너 파이프라인 관리 |
| Prefect | 코드 중심, 오류 처리 강화 | Airflow 대안, 간단 설치 원할 때 |
| Luigi | Python 간단 파이프라인 | 의존성 단순한 파이프라인 |
| KubeFlow | ML 특화, k8s 기반 | 머신러닝 워크플로우 자동화 |
5) 모니터링 도구
| 도구 | 특징 / 설명 |
| prometheus & grafana | 사용자 정의 메트릭(성공/실패 카운터 등) 수집, 알림 설정 가능 |
| Cloud managed monitoring Dashboards(CloudWatch, Stackdriver 등) | 각 클라우드 서비스의 작업 상태 메트릭과 알람 제공 |
| ELK Stack (Elasticsearch+Kibana) | 로그에서 실패, 에러 탐지 및 대시보드 작성 가능 |
6) 분석을 위한 도구
| 도구 | 특징 / 설명 | 예시 |
| AWS Athena | 서버리스 제품, Presto 엔진 기반, ANSI SQL 지원, scan당 비용 | |
| Data Warehouse | 비싼 편이나, 쿼리 성능이 좋음, Redshift Specturm의 경우 scan 당 비용 | AWS Redshift, GCP BigQuery, Azure synapse, SnowFlake |
| Presto(Trino) | 정기적으로 많은 분석이 필요로 하는 경우 스캔당 비용 청구보다 예측가능한 비용이 값싸게 먹힐 수 있음 | EMR 내의 Presto(Trino)지원 |
| AWS EMR(+ notebook, zeppelin) | EMR 기반의 notebook환경에서 spark 엔진을 사용하여 분석 가능 | 상시 EMR + zeppelin or EMR serverless + jupyter notebook |
| Databricks SQL | 모든 쿼리는 내부적으로 모두 Spark 엔진 기반 | Databricks SQL Editor (웹 기반 쿼리 에디터), Databricks Notebook |
7) 시각화 및 대시보드
자주 쓰이는 툴
| 툴 | 특징 | 추천 사용처 |
| Redash | 다양한 DB 연동, 쿼리 + 시각화 + 공유 대시보드 | SQL 친숙한 분석팀, 스타트업 |
| Apache Superset | SQL 없이도 시각화, 대규모 사용자 대응 가능 | 오픈소스 BI, 조직 내 시각화 문화 확산 |
| Metabase | No-code 시각화 + SQL 분석 모두 지원 | 기술 비숙련자도 접근 가능한 BI 도구 |
| Tableau | 정교한 시각화, 슬라이싱/필터링 강력 | 분석 전문 조직, 경영층 보고서 |
| Power BI | Microsoft Office 연동에 강함 | Excel 기반 조직, MS 환경 |
| AWS | Amazon QuickSight | 서버리스 BI, Redshift/S3/Athena 연동 |
| Databricks | Databricks Dashboard | Databricks SQL 기반 쿼리 시각화 |
상황별 맞춤 툴
| 상황 | 툴 |
| SQL 기반 실무자 중심 | Redash, Superset, Mode |
| 비기술자도 사용하는 조직 | Metabase, Power BI |
| 조직 전체 Self-service BI 구축 | Looker, Superset |
| 복잡한 시각화/정형 보고서 | Tableau, Power BI |
| 클라우드 중심 파이프라인 | Looker Studio (GCP), QuickSight (AWS) |
| Databricks 환경 통합 | Databricks Dashboards |
8) CDC 및 데이터 정합성
CDC 지원 툴
| 툴 | 특징 | 사용 시점 |
| Debezium | Kafka 기반 오픈소스 CDC 프레임워크, MySQL/PostgreSQL 등 지원 | 실시간 데이터 레이크 적재 |
| AWS DMS | AWS 전용 CDC 솔루션, Snapshot + CDC 동시 지원 | RDS, Aurora, Redshift 등 백업/마이그레이션 |
| AWS ZeroETL | DB간 데이터 동기화 | DB간 동기화가 필요할 때 사용 |
| Oracle GoldenGate | Oracle 전용 고성능 CDC 솔루션 | Oracle 환경 실시간 데이터 복제 |
데이터 정합성 체크 툴
| 툴 | 특징 | 용도 |
| Great Expectations | Python 기반 데이터 검증 테스트 작성 (expectations) | 컬럼 범위, NULL 검사, 스키마 검증 |
| Deequ (by AWS) | Scala/Spark 기반 데이터 품질 검사 | 대규모 데이터 품질 Rule 검증 |
9) 데이터 백업 수단
- 데이터 레이크의 파일 데이터 경우라면, S3 Tiering을 통해 Glacier, Glacier Deep Archive로 백업을 하는 것을 추천
- 이외의 데이터베이스는 스냅샷과 같은 방법을 활용
10) 메타데이터, 데이터 거버넌스 및 데이터 리니지
| 분류 | 툴 | 비고 |
| 메타데이터 | DataHub, Amundsen, OpenMetadata, Collibra | 데이터 검색, 문서화, 테이블 정의 관리 |
| 거버넌스 | Collibra, Alation, BigID, Lake Formation | 접근 제어, 정책, 인증 통제 |
| 리니지 | Marquez, OpenLineage, dbt, Monte Carlo | 컬럼/테이블/쿼리 수준 연계 추적 |
2. 배치 데이터파이프라인 조합
자주 보이는 패턴의 파이프라인 5가지 정도로 조합해서 정리 해보면 아래와 같습니다.
| 파이프라인 유형 | 장점 | 단점 | 적합 조직 | 비용 | 확장성 |
| EMR (Spark) + Airflow + S3/Redshift | 대규모 처리에 강함, 유연한 구성 | 운영 복잡 (인프라 관리 필요) | 엔지니어링 중심의 중대형 조직 | 중간~높음 (자동화 설정 여부에 따라) | 높음 (Auto-scaling 구성 시 유연) |
| Databricks All-in-One (Spark) | 관리 간편, 협업 및 성능 우수, Photon 엔진 | 비용 높음, 클라우드 종속성 | ML/데이터 협업 조직 | 높음 (편의성+성능 대가) | 매우 높음 (클러스터/워크스페이스 기반 수평 확장) |
| DBT + Airflow + BigQuery | SQL 기반 협업, 빠른 분석, 운영 간단 | Spark 대비 대규모 처리 성능↓ | 분석 중심 조직, 빠른 실행 필요 | 중간 (서버리스 쿼리 기반) | 중간~높음 (쿼리 단위 확장 가능) |
| Glue + Athena (Spark) | 완전 서버리스, 비용 자동화, 설정 쉬움 | 성능 한계, 제어 어려움 | 소규모 또는 초기 조직 | 낮음 (사용한 만큼 과금) | 낮음~중간 (파일 단위 처리 한계) |
| K8s + Argo + custom Spark | 완전한 커스터마이징, 멀티워크로드 처리 가능 | 인프라 운영 복잡, 관리 부담 | 자체 인프라 보유한 대기업 | 중간 (BYO 인프라 기반) | 매우 높음 (K8s 기반 무제한 확장 가능) |
1) AWS (대규모 처리)
[Data Orchestrator]
Airflow
------------------------------------------------------------------------------------------
[Data Source]
RDBMS, 외부데이터
↓ (CDC - Debezium + Kafka) + (Monitoring - ELK, Prometheus, Cloudwatch)
[ELT, 정합성]
Spark + Great Expectation
↓
[Data Storage]
S3(Data Lake)
↓ (Backup - S3 lifecycle, tiering, Glacier) + (Data Catalog - Glue Data Catalog - glue table, Iceberg)
[DW]
Redshift
↓
[시각화, 대시보드]
tableau, AWS Quicksight
2) Databricks
[Data Orchestrator]
Databricks Jobs, Airflow
------------------------------------------------------------------------------------------
[Data Source]
RDBMS, 외부데이터
↓ (CDC - Debezium + Kafka) + (Monitoring - Databricks Monitor, Prometheus, ELK, Datadog, CloudWatch)
[ELT, 정합성]
Spark(Photon engine) + Great Expectation
↓
[Data Storage]
S3,GCS(Data Lake)
↓ (Backup - Delta Time Travel, S3 versioning) + (Data Catalog - Unity Catalog - delta lake) + (Governance - Unity Catalog: RBAC, Lineage, Tagging, Audit Log)
[Analytics]
Databricks SQL, Notebook
↓
[시각화, 대시보드]
Databricks Dashboard
Spark engine 변천사
Spark 2.x → Tungsten (DataFrame, SQL 최적화 중심)
↓
Spark 3.x → Adaptive Query Execution (AQE), Catalyst 개선
↓
Databricks Runtime → Photon (C++ 기반 Spark SQL 대체 엔진)
3) DBT + Bigquery
[Data Orchestrator]
Airflow
------------------------------------------------------------------------------------------
[Data Source]
RDBMS, 외부데이터
↓ (CDC - raw_change_events, incremental model + merge) + (Monitoring - Cloud Monitoring, ELK)
[Extract & Load, 정합성]
Airbyte, Fivetran
↓
[Data Storage]
Bigquery(raw,Staging,DW,Lake)
↓ (Backup - BigQuery Snapshots, GCS)
[Transform]
DBT
↓
[Data Storage]
Bigquery(DM, Marts)
↓
[시각화, 대시보드]
Looker, Looker Studio, Tableau
Airbyte, Fivetran이 Bigquery랑 잘 맞는 이유
| 항목 | 설명 |
| 커넥터 다양성 | MySQL, PostgreSQL, Stripe, Salesforce, Shopify 등 다양한 소스에서 BigQuery로 바로 연동 가능 |
| 자동 테이블 생성 | 스키마를 분석해서 BigQuery에 테이블 자동 생성 (raw.users, raw.orders 등) |
| 증분 수집 (CDC) | updated_at, id, binlog 기반으로 증분 방식으로 적재 가능 |
| 자동 적재 일정 관리 | 매 시간, 매일 등 간편하게 설정 가능 |
| 에러 핸들링 및 Retry | 실패 시 자동 재시도, 로깅까지 지원 |
| 스키마 변경 대응 | 컬럼 추가/삭제 자동 반영 (옵션 설정 가능) |
| GCP IAM 연동 | BigQuery 서비스 계정 연결이 쉬움 (보안) |
4) AWS (레이크 위주의 간단한 구성)
[Data Orchestrator]
Glue Workflows(Glue ETL)
------------------------------------------------------------------------------------------
[Data Source]
RDBMS, 외부데이터
↓ (Monitoring - Cloudwatch)
[ELT]
Spark + DMS
↓
[Data Storage]
S3(Data Lake)
↓ (Backup - S3 Lifecycle, S3 tiering, Glacier) + (Data Catalog - Glue Data Catalog - glue table, AWS Lake Formation)
[Anayltics]
Athena
↓
[시각화, 대시보드]
AWS Quicksight
5) k8s
[Data Orchestrator]
Airflow, Argo WorkFlow
------------------------------------------------------------------------------------------
[Data Source]
RDBMS, 외부데이터
↓ (CDC - Debezium + Kafka) + (Monitoring - ELK, Prometheus, Cloudwatch)
[ETL, 정합성]
Spark(Spark Operator, custom spark) + Great Expectation
↓
[Data Storage]
S3, GCS, MinIO(Data Lake)
↓ (Backup - S3 Lifecycle, S3 tiering, Glacier) + (Data Catalog - Glue Data Catalog - glue table, Iceberg)
[DW]
Redshift, bigquery, snowflake
↓
[시각화, 대시보드]
Superset, Redash, Tableau
728x90