서울 날씨 예측 MLOps 시스템

프로젝트 개요 (프로젝트 기간: 약 2주)

ASOS 기상관측 API를 활용한 기온 & 습도 동시 예측 MLOps 파이프라인 구축
Apache Airflow 기반 완전 자동화된 ML 워크플로우 구현
MLflow를 통한 실험 관리 및 이중 모델(기온/습도) 버전 관리
FastAPI + 반응형 웹 UI로 실시간 예측 서비스 및 식물 관리 알림 제공
Docker Compose 기반 마이크로서비스 아키텍처로 확장 가능한 MLOps 플랫폼 구현

핵심 가치
"실시간 기상 데이터 수집부터 AI 예측, 실생활 활용까지의 완전한 MLOps 생태계"

🔄 완전 자동화: 매일 새벽 2시 데이터 수집 → 모델 훈련 → 성능 평가 → 자동 배포
🎯 실용성: 단순한 예측을 넘어 식물 관리라는 구체적 활용 사례 제시
🏗️ 확장성: 마이크로서비스 아키텍처로 손쉬운 기능 확장 및 유지보수
📊 투명성: MLflow 기반 모델 성능 추적 및 A/B 테스팅 지원

팀 구성원

개발 환경 및 기술 스택

ML/AI 스택
머신러닝: LightGBM 4.3.0 (Gradient Boosting)
실험 관리: MLflow 2.11.0 (모델 레지스트리 & 실험 추적)
데이터 처리: Pandas 2.2.2, NumPy

MLOps 인프라
워크플로우: Apache Airflow 2.9.0 (DAG 스케줄링)
컨테이너: Docker Compose (마이크로서비스)
객체 스토리지: MinIO (S3 호환)
데이터베이스: SQLite (예측 결과 저장)

웹 서비스
API 프레임워크: FastAPI 0.111.0
웹 서버: Uvicorn
프론트엔드: Vanilla JS + 모던 CSS (반응형 디자인)

개발 도구
주 언어: Python 3.11
버전 관리: Git, GitHub
협업 툴: GitHub Issues, Notion
API 연동: 기상청 ASOS API

프로젝트 구조

데이터 수집 & 처리

  • ASOS 기상관측 API: 서울 지역(108번 관측소) 시간별 기상 데이터 수집
  • 지능형 데이터 파이프라인: 30일 이력 데이터 자동 수집 및 Parquet 저장
  • 피처 엔지니어링:
    시간 기반 파생 변수 (시간, 요일, 사인/코사인 변환)
    Lag 피처 (1시간, 24시간 전 데이터)
    Rolling 통계 (3시간, 24시간 이동평균)

머신러닝 모델

  • 이중 모델 구조: 기온 예측 모델 + 습도 예측 모델 독립 운영
  • LightGBM 회귀: 그래디언트 부스팅 알고리즘으로 24시간 후 예측
  • 성능 평가: RMSE 기반 모델 성능 모니터링 및 자동 배포 결정
  • 모델 레지스트리: MLflow로 seoul_temp, seoul_humid 모델 버전 관리

실시간 웹 서비스

  • FastAPI 기반 REST API:

    • predict: 최신 데이터로 예측 수행 및 SQLite DB 저장
    • api/latest: 최근 예측 결과 조회
    • reload_model: 모델 동적 리로딩
    • health: 시스템 상태 체크
  • 반응형 웹 대시보드

    • 실시간 예측 결과 시각화
    • 스마트 식물 관리 알림 (기온 30°C 이상 또는 습도 30% 이하)
    • 모바일 최적화 UI/UX

자동화 ML 파이프라인

데이터 관리

  • MinIO S3 스토리지: 수집/전처리 데이터의 버전별 관리
  • SQLite 예측 DB: 일일 예측 결과 이력 관리 (predictions.db)
  • 자동 백업: 실험 데이터 및 모델 아티팩트 자동 백업

시스템 아키텍처

컨테이너 구성

  • minio: S3 호환 객체 스토리지 (포트: 9000, 9001)
  • mlflow: 실험 추적 + FastAPI 서비스 통합 (포트: 5000, 8000)
  • airflow: 워크플로우 오케스트레이션 (포트: 8080)

실행 순서

  • Docker & Docker Compose 설치
  • 기상청 ASOS API 키 발급 (공공데이터포털)

1. 프로젝트 클론
git clone https://github.com/AIBootcamp13/mlops-cloud-project-mlops_5.git
cd mlops-cloud-project-mlops_5

2. 환경 변수 설정

.env 파일 생성

cat > .env << EOF
KMA_API_KEY=your_weather_api_key_here
MLFLOW_TRACKING_URI=http://localhost:5000
MINIO_ROOT_USER=minio
MINIO_ROOT_PASSWORD=minio123
AWS_ACCESS_KEY_ID=minio
AWS_SECRET_ACCESS_KEY=minio123
EOF

3. 서비스 시작

전체 MLOps 스택 실행

docker-compose up -d

로그 모니터링

docker-compose logs -f

4. 서비스 접속

5. 첫 예측 실행

수동으로 파이프라인 실행 (테스트용)

docker-compose exec airflow airflow dags trigger weather_daily

또는 API로 즉시 예측

curl http://localhost:8000/predict

프로젝트 수행 절차

데이터 전처리

모델 개발

훈련 과정

모델 성능 평가 RMES

CI/CD 파이프라인, 모델 버전 관리

실시간 트래킹

데이터 수집 후 처리 결과

팀 전체 성과

  • 기술적 도전: 7개 오픈소스 기술 스택의 효율적 통합 및 상호 연동
  • 실용성 검증: 실제 서비스 가능한 수준의 MLOps 플랫폼 구축 완료
  • 확장성 설계: 마이크로서비스 아키텍처로 향후 기능 확장 기반 마련
  • 협업 문화: 코드 리뷰, 이슈 트래킹을 통한 체계적 팀 개발 프로세스 구축

프로젝트 회고

참고자료

공식 문서
🌤️ 기상청 ASOS API 가이드 - 기상관측 데이터 활용법
🐝 Apache Airflow 공식 문서 - 워크플로우 오케스트레이션
🔬 MLflow 공식 문서 - ML 생명주기 관리
⚡ FastAPI 공식 문서 - 모던 웹 API 프레임워크
🌳 LightGBM 공식 문서 - 그래디언트 부스팅
🐳 Docker Compose 가이드 - 컨테이너 오케스트레이션

기술 리소스

  • MLOps 베스트 프랙티스 - MLOps 방법론 및 도구
  • 시계열 예측 모델링 - 시계열 분석 이론과 실습
profile
함께 세상을 만드는 사람들

0개의 댓글