Pet HealthCare Service
반려동물 종합 건강 관리 서비스 (2023.04 ~ 2023.11)
Overview
[반려동물 건강관리 서비스]에서 Full Stack 개발을 맡아 기획부터 데이터 파이프라인 구축 및 대시보드 구현과 운영까지 End-to-End 과정에 직접 참여했습니다. Kafka와 Spark Streaming을 기반으로 생체 데이터를 실시간으로 수집하고, 원본 데이터는 AWS S3에, 가공 데이터는 MySQL에 저장하여 데이터 정합성과 추적성을 확보했습니다. Airflow를 통해 배치 작업 스케줄링과 및의존성을 자동화하고, 최근 1일치 데이터는 Redis에 캐싱하여 조회 속도를 개선했습니다. WebSocket과 Redis Pub/Sub을 통해 혈당의 비정상적 패턴을 감지하고 사용자에게 알림을 전송했습니다. Spring Boot로 Backend API를 개발하고, Flutter로 모바일 대시보드를 구축했습니다. 추가로 Django 기반 크롤러를 개발하여 사료 및 반려동물 정보를 주기적으로 수집하고 MongoDB에 저장했습니다. Prometheus/Grafana로 서버 지표를 모니터링하고 ELK Stack을 통해 로그를 실시간으로 수집하여 장애 대응 환경을 구축했습니다.
Timeline
1. 기획 단계
반려동물 헬스케어 시장 조사와 수의사/보호자 인터뷰를 통해 실제 니즈를 검증하고, 페르소나 기반 핵심 기능을 도출했습니다. 사용자 행동 패턴을 고려한 데이터 시각화 UX를 설계하며 서비스 방향성을 확립했습니다.
2. 개발 단계
Spring Boot 기반 REST API 서버와 Flutter 모바일 앱 MVP를 구축했습니다. 반려동물의 일상 건강 관리를 위한 산책 기록 기능과 혈당 데이터 모니터링을 중심으로 개발했으며, 혈당 데이터 크롤링과 시각화 대시보드를 함께 구현했습니다.
FastAPI 크롤러가 LibreView에서 혈당 데이터를 수집하여 MySQL에 저장하면, Spring Boot Scheduler가 주기적으로 조회하여 처리하는 파이프라인을 구축했습니다. MongoDB(사료 정보)와 MySQL(센서 데이터)로 데이터 특성에 맞는 저장 구조를 설계했으며, AWS EC2 환경에서 Docker 기반 배포를 수행하고, Jira/Confluence로 애자일 협업 체계를 운영했습니다.
3. 고도화 단계
배치 기반 데이터 수집의 지연 문제를 해결하고 대량 시계열 데이터를 효율적으로 처리하기 위해 실시간 스트리밍 파이프라인 중심으로 아키텍처를 재설계했습니다.
파이프라인 고도화
Flutter를 React로 교체해 웹 기반 대시보드를 구축하고, FastAPI + Spring Scheduler 구조를 Airflow로 전환해 복잡한 배치 작업의 의존성을 체계적으로 관리했습니다. Kafka와 Spark Streaming을 도입해 실시간 데이터 처리 구조를 구현했으며, Redis와 WebSocket을 결합한 실시간 알림 시스템을 개발했습니다. 사료 크롤링은 Django + Celery 기반으로 전환하여 안정적인 스케줄링 환경을 구축했습니다.
운영 안정성 확보
Prometheus/Grafana로 서버 메트릭을 모니터링하고, ELK Stack으로 로그 분석 체계를 구축하여 장애 대응 환경을 마련했습니다.
Service Highlights
메인 대시보드
실시간으로 수집되는 혈당 데이터를 시각화하여 반려동물의 혈당 변화 추이와 상태를 한눈에 확인할 수 있습니다.
그래프는 5초 단위로 최신 데이터를 반영하며, 정상 구간과 위험 구간이 색상으로 구분되어 직관적인 모니터링이 가능합니다.

주간 건강 리포트
두 번째 섹션에서는 한 주간의 평균 혈당, 변동 폭, 고·저혈당 지속 시간 등 주요 지표를 리포트 형태로 제공합니다. 주간 트렌드와 수의사 권고 기준을 함께 보여주어 건강 상태를 쉽게 비교·평가할 수 있습니다.

사료 추천 페이지
반려동물의 특성을 기반으로 맞춤형 사료를 추천하는 페이지입니다.

모바일 메인 화면
모바일 환경에서도 동일한 실시간 대시보드를 제공합니다.

마이페이지
사용자는 마이페이지에서 반려동물의 기본 정보, 측정 이력, 알림 내역을 관리할 수 있습니다. 프로필별 데이터 요약과 최근 트렌드가 함께 표시되어 개체별 건강 상태를 손쉽게 파악할 수 있습니다.

Key Features
1. 실시간 생체 데이터 모니터링
IoT 센서를 통해 수집된 혈당 데이터를 실시간으로 처리하고 시각화하는 모니터링 시스템을 구축했습니다. 데이터 수집부터 시각화까지 End-to-End 파이프라인을 구축하여, 지연 없이 최신 건강 상태를 모니터링할 수 있는 환경을 제공합니다.
핵심 기능
대시보드에서 혈당 변화 추이를 실시간으로 확인
시간대별 혈당 그래프 및 트렌드 분석 제공
원본 데이터는 안전하게 보관하여 필요 시 재분석 가능
일일/주간 통계 리포트 자동 생성
2. 이상 패턴 감지 및 실시간 알림
혈당 수치가 위험 범위에 진입하거나 급격히 변화하는 순간을 즉시 감지하여 알림을 전송합니다. 절대값 기준과 변화율 분석을 조합하여 실질적인 건강 이상 징후를 감지하고 사용자에게 알림을 보냅니다.
핵심 기능
설정된 임계값을 벗어나는 혈당 수치 감지
저혈당, 고혈당, 급상승, 급하강 등 상황별 알림 메시지 차별화
불필요한 알림을 최소화하여 실제 위험 상황에만 집중
향후 개선 방향
개체별 평소 혈당 패턴을 분석하여 맞춤형 임계값을 동적으로 설정하는 Z-Score 기반 알고리즘 도입 예정
3. 사료 정보 제공 시스템
크롤링을 통해 수집한 사료 데이터를 MongoDB에 저장하고, 카테고리별 필터링 기능을 제공합니다. 현재는 카테고리 기반 필터링만 제공하며, 향후 혈당 데이터와 연계한 개인화 추천 알고리즘으로 발전시킬 예정입니다.
핵심 기능
Django + Celery + Selenium으로 개·고양이 사료 정보 자동 수집
영양 성분 데이터베이스 구축 (단백질, 탄수화물, GI 지수 등)
카테고리별 필터링 (저탄수화물, 저GI, 고단백 등)
사료 상세 정보 및 영양 성분 조회
4. 주간 건강 리포트 자동 생성
매주 수집된 데이터를 기반으로 반려동물의 건강 상태를 종합 평가하는 리포트를 자동 생성합니다. 차트와 그래프로 시각화된 리포트를 통해 건강 상태를 직관적으로 파악하고, 수의사 진료 시 객관적 자료로 활용할 수 있습니다.
핵심 지표
평균 혈당 및 혈당 변동 폭
스파이크 발생 횟수
저혈당 및 고혈당 지속 시간
수의사 권고 기준 대비 현재 상태 비교
Architecture

Tech Stack
Contributions
1. 실시간 데이터 파이프라인 구축
데이터 수집
Airflow를 이용해 LibreView에서 혈당 데이터를 자동 크롤링
데이터 처리
Kafka를 메시지 큐로 사용하여 데이터 유실 방지 및 비동기 스트림 처리
Spark Streaming으로 실시간 데이터 스트림 처리 파이프라인 구축
Spark Batch로 일일 통계(최대/최소, 평균 혈당, 스파이크 횟수 등) 자동 집계
데이터 저장 전략
MySQL: 가공된 분석 데이터 저장 및 Native Query 최적화
AWS S3: 원본 CSV 백업 및 재처리 대비
Redis: 최근 1일치 데이터 캐싱 및 세션 관리
워크플로우 관리
Airflow DAG로 파이프라인 스케줄링 및 작업 간 의존성 관리
2. 이상 탐지 시스템 개발
Threshold + Trend 기반 분석
절대값 기반 탐지: 설정된 임계값을 벗어나는 혈당 수치 감지
변화율 기반 분석: 단시간 내 급격한 혈당 변화 탐지
데이터 품질 검증
1️⃣ 범위 검증: 생리학적으로 불가능한 값 필터링
2️⃣ 변화율 검증: 비정상적인 급변 패턴 제거
3️⃣ 연속성 검증: 시계열 데이터의 일관성 보장
3. 사료 정보 크롤링 시스템 구축
데이터 수집
Django + Celery 기반 스케줄링으로 다나와에서 개·고양이 사료 정보 자동 수집
Selenium을 활용한 동적 페이지 크롤링 및 데이터 추출
데이터 처리 및 저장
영양 성분 데이터 정규화 (단백질, 탄수화물, GI 지수 등)
MongoDB 스키마 설계 및 인덱싱으로 빠른 조회 성능 확보
4. Spring Boot API 서버 설계 및 구현
실시간 데이터 제공
WebSocket(STOMP)을 통해 5분 주기로 최신 혈당 데이터를 실시간 푸시
Redis 캐싱을 적용하여 API 응답 속도 단축 및 서버 부하 최소화
Spring Boot Scheduler로 주기적인 데이터 갱신 작업 자동화
사료 필터링 기능
MongoDB 기반 사료 데이터베이스 구축
품종, 나이, 식이습성 등의 특성 기반 카테고리별 필터링 API 구현
향후 개선 방향
수의사 가이드라인 기반 규칙 엔진 설계
혈당 패턴 연계 개인화 추천 알고리즘 개발 예정
5. 인프라 구축 및 모니터링 자동화
부하 테스트
k6를 이용해 서버의 처리 한계와 병목 구간 식별 및 Spark/API 동시성 성능 개선
모니터링 시스템
Prometheus + Grafana: CPU, 메모리, 네트워크 등 주요 서버 메트릭 실시간 모니터링
ELK Stack: Filebeat → Elasticsearch → Kibana로 Spring Boot 로그 수집·분석 및 장애 원인 시각적 추적
배포 및 운영 환경
모든 서비스를 Docker로 컨테이너화하여 환경 의존성 제거 및 AWS EC2 배포
CI/CD 파이프라인을 통한 자동 빌드 및 무중단 배포 환경 구현
Challenges
실시간 데이터 처리 파이프라인 구축 (🔗)
안정적인 파이프라인 재구성 (🔗)
데이터 품질 관리 체계 구축 (🔗)
처리 계층 분리 설계 (🔗)
사료 데이터베이스 구축 (🔗)
도메인 기준 정립 (🔗)
Retrospective
Last updated