Project
기상데이터 수집·가공 파이프라인 운영
Overview
2022년부터 운영 중인 Kafka + Spark + Hadoop 기반 수치예보 데이터 실시간 수집 파이프라인을 2024.02에 인수해 운영. NWP 가공 Airflow DAG 8개 유지보수와 외부 상용 기상 API 수집 DAG 2개 개발·운영을 포함한 기상데이터 수집·가공 체계 전반을 담당하고 있습니다.
Key Results
파이프라인 운영
2022년~
(인수 '24.02)
일 수집 파일
784파일/일
(4회 × 196파일)
Airflow DAG
총 10개
일 DAG 실행
약 156회
Architecture
데이터 흐름수집 파이프라인 (NWP)
기상청 FTP
GRIB2 파일
Kafka Connect
FTP Source Connector
Kafka Cluster
3-node, 각 125GB RAM
PySpark Consumer
×10 병렬 운영
HDFS
470,162 격자점 × 139 컬럼
가공 파이프라인 (NWP → MySQL)
HDFS
Parquet
Airflow DAG ×8
Spark / Docker 혼합
MySQL
발전량 예측 데이터
IBM 수집 파이프라인
외부 상용 기상 API
15분·15일 예보
Airflow DAG ×2
DockerOperator
MySQL
기상 수집 데이터
NWP 가공 DAG 8개는 SparkSubmitOperator(최대 40 executors)로 대용량 HDFS 데이터를 처리하고 DockerOperator로 ML 예측 모델을 격리 실행. 외부 상용 기상 API 수집은 별도 DAG 2개가 담당하며 사이트별 5개 좌표 다지점 데이터를 직접 MySQL에 적재합니다.
Technical Decisions
문제를 어떻게 정의하고, 왜 이 방법을 선택했는지
Consumer 2-노드 분산 + Docker scale 운영
Consumer를 단일 노드에 집중하면 해당 노드 장애 시 파이프라인 전체가 중단됩니다. 기상 데이터는 시간 연속성이 중요해 적재 공백이 다운스트림 ML 모델 품질에 직접 영향을 줍니다.
2개 노드에 각 Docker scale 5, 총 10개 Consumer를 분산 배치. 한 노드에 장애가 발생하면 다른 노드로 즉시 이관해 서비스 연속성을 유지합니다.
Consumer 장애 시 무중단 이관 가능. 약 2년간 파이프라인 안정 운영.
IBM 수집 DAG 개발 — 사이트별 5개 좌표 다지점 수집 설계
풍력·태양광 발전 사이트는 면적이 넓어 단일 중심 좌표의 기상 데이터만으로는 전체 부지의 기상 특성을 충분히 대표하지 못합니다.
사이트 중심점 + 사방 꼭짓점 총 5개 좌표로 다지점 수집을 구현. DockerOperator로 각 수집 작업을 컨테이너 단위로 격리 실행하고 Airflow 재시도 체계로 수집 공백을 최소화했습니다.
사이트별 공간 기상 데이터 품질 향상. 약 2년간 무중단 운영.
Tech Stack