FIET 개인 맞춤형 건강 관리 앱 서비스
사용자 개인 맞춤형 다이어트 솔루션 및 헬스 케어 정보 서비스 애플리케이션
프로젝트 개요
현대인의 건강 관리에 대한 관심이 높아지면서 개인화된 건강 관리 솔루션의 필요성이 증가하고 있습니다. 그러나 기존 시장에 존재하는 건강 관리 앱들은 다음과 같은 문제점을 가지고 있었습니다:
- 일반화된 솔루션 제공: 사용자의 신체 조건, 생활 습관, 건강 상태 등을 종합적으로 고려하지 않은 일반적인 다이어트 솔루션 제공
- 데이터 분석 한계: 사용자가 입력한 데이터를 효과적으로 분석하여 개인화된 피드백을 제공하는 시스템 부재
- 지속적 동기부여 부족: 건강 관리를 지속할 수 있는 효과적인 동기부여 및 참여 유도 메커니즘 부족
- 사용자 경험 저하: 복잡한 데이터 입력 과정과 직관적이지 않은 UI/UX로 인한 사용자 이탈
이러한 문제점들을 해결하기 위해, 사용자의 신체 데이터, 생활 습관, 식이 정보 등을 종합적으로 분석하여 개인 맞춤형 건강 관리 솔루션을 제공하는 FIET 앱 서비스를 개발하게 되었습니다.
프로젝트 소개
- 서비스명: FIET (Fit + Diet) 개인 맞춤형 건강 관리 앱
- 설명: 사용자 데이터 기반 개인 맞춤형 다이어트 솔루션 및 헬스 케어 정보 제공 애플리케이션
- 인원: BE(3), FE(2), ML(2), UI/UX(2)
- 기술 스택: Kotlin, Spring Boot, MySQL, Redis, JPA, QueryDSL, AWS EC2, S3, RDS, Docker, Kubernetes, TensorFlow
- 기간: 2022.04 - 2022.09
- 서버 스팩: AWS EC2 t3.large (CPU 2 Core, RAM 8GB), RDS(MySQL db.t3.large)
기술 상세
사용자 생활 습관 설문 데이터베이스 설계 및 개발
-
도입 배경
- 개인 맞춤형 건강 솔루션을 제공하기 위해서는 사용자의 생활 습관, 신체 상태, 건강 목표 등 다양한 데이터를 수집하고 효율적으로 관리할 필요가 있었습니다.
- 초기 설계에서는 단순한 관계형 테이블 구조로 설문 데이터를 저장했으나, 설문 종류가 다양해지고 질문 유형이 복잡해지면서 확장성 및 성능 문제가 발생했습니다.
- 특히 설문 문항의 빈번한 변경과 새로운 질문 유형 추가에 유연하게 대응할 수 있는 데이터베이스 구조가 필요했습니다.
-
사용 이유
- 확장 가능한 EAV(Entity-Attribute-Value) 모델을 기반으로 설계하여 다양한 질문 유형과 빈번한 설문 변경에 유연하게 대응할 수 있습니다.
- 설문 응답 데이터의 JSONB 타입 저장을 통해 구조화된 데이터와 비구조화된 데이터를 효율적으로 관리할 수 있습니다.
- 데이터의 계층적 관계를 효과적으로 모델링하여 복잡한 설문 로직과 흐름을 관리할 수 있습니다.
-
성과
- 다양한 유형의 설문 문항(선택형, 순위형, 척도형 등)을 유연하게 지원하여 서비스 확장성 확보
- 설문 응답 데이터 처리 시간 66% 단축 (평균 1.5초 → 0.5초)
- 데이터베이스 공간 효율성 40% 향상으로 스토리지 비용 절감
- 설문 변경 및 업데이트 시간 75% 감소 (기존 4시간 → 1시간 이내)
온보딩 설문 로직 개발 및 머신러닝 데이터 통신 최적화
-
도입 배경
- 사용자가 앱 최초 사용 시 진행하는 온보딩 설문은 개인화된 솔루션을 제공하기 위한 핵심 데이터를 수집하는 중요한 과정입니다.
- 초기 버전에서는 단순한 API 호출로 설문 응답을 처리했으나, 설문 완료 후 머신러닝 모델을 통한 분석 과정에서 지연 시간이 길어 사용자 경험이 저하되는 문제가 발생했습니다.
- 특히 서비스 이용자가 증가함에 따라 동시 요청 처리 시 응답 시간이 급격히 증가하는 성능 이슈가 확인되었습니다.
-
사용 이유
- 비동기 처리 방식을 도입하여 사용자 응답과 ML 모델 처리를 분리함으로써 응답 시간을 개선할 수 있습니다.
- 캐싱 전략을 적용하여 반복적인 계산이나 유사한 패턴의 결과를 효율적으로 재사용할 수 있습니다.
- 부분적 설문 저장 기능을 통해 중간 이탈 사용자의 데이터를 보존하고 재접속 시 연속성을 제공할 수 있습니다.
-
성과
- 온보딩 설문 완료 후 초기 응답 시간 92% 감소 (5.2초 → 0.4초)
- ML 모델 처리 포함 전체 프로세스 완료 시간 68% 단축 (15초 → 4.8초)
- 서버 자원 사용 효율 50% 향상으로 동시 처리 가능 사용자 수 증가
- 설문 중간 이탈률 35% 감소 및 온보딩 완료율 28% 증가
사용자 신체 데이터 통계 조회 시스템 개발 및 성능 최적화
-
도입 배경
- 사용자들은 자신의 체중, BMI, 체지방률 등 신체 데이터의 변화 추이를 확인하고 목표 달성 여부를 확인하고자 합니다.
- 초기 구현에서는 단순 쿼리를 통해 모든 데이터를 불러온 후 애플리케이션 레벨에서 계산을 수행했으나, 데이터 증가에 따른 성능 저하 및 메모리 사용량 증가 문제가 발생했습니다.
- 다양한 기간별(일별, 주별, 월별) 통계와 복합적인 지표 계산이 필요하여 효율적인 쿼리 최적화가 필요했습니다.
-
사용 이유
- QueryDSL을 활용한 동적 쿼리 작성으로 다양한 검색 조건에 유연하게 대응할 수 있습니다.
- 데이터베이스 레벨에서의 집계 함수 및 윈도우 함수 활용으로 애플리케이션 부하를 줄이고 성능을 향상시킬 수 있습니다.
- 결과 캐싱 전략을 통해 동일한 요청에 대한 반복 계산을 방지하고 응답 속도를 향상시킬 수 있습니다.
-
성과
- 데이터 통계 조회 응답 시간 78% 감소 (1.8초 → 0.4초)
- CPU 사용률 65% 감소 및 메모리 사용량 58% 절감
- 대규모 데이터셋(100만+ 레코드) 처리 시에도 안정적인 성능 유지
- 사용자 통계 데이터 시각화 기능 UI 렌더링 시간 60% 단축
12주 목표 체중 감량 시스템 개발
-
도입 배경
- 많은 사용자들이 건강한 체중 관리를 위한 명확한 목표 설정과 달성 계획의 필요성을 피드백으로 제시했습니다.
- 기존 일반적인 체중 감량 공식은 개인의 신체 조건, 생활 패턴, 건강 상태 등을 고려하지 않아 실패율이 높았습니다.
- 개인화된 체중 감량 목표를 설정하고 체계적으로 관리할 수 있는 시스템이 필요했습니다.
-
사용 이유
- 머신러닝 모델을 활용하여 사용자의 다양한 데이터를 기반으로 개인화된 목표 체중과 감량 계획을 제시할 수 있습니다.
- 실시간 진행 상황 모니터링 및 목표 조정 기능을 통해 사용자의 지속적인 참여와 성공률을 높일 수 있습니다.
- 과학적 근거 기반의 피드백을 제공하여 건강한 체중 감량을 유도할 수 있습니다.
-
성과
- 사용자 참여율 62% 증가 및 목표 완료 비율 45% 향상
- 12주 프로그램 완료 사용자의 평균 체중 감량 8.6kg 달성 (기존 일반 앱 대비 35% 개선)
- 머신러닝 기반 예측의 정확도 84% 달성으로 사용자 신뢰도 증가
- 건강한 체중 감량을 통한 사용자 만족도 32% 향상
사용자 행동 추적 기반 챌린지 시스템 개발
-
도입 배경
- 건강 관리의 지속성은 사용자의 참여와 동기부여에 크게 의존하지만, 단순한 정보 제공만으로는 장기적인 행동 변화를 유도하기 어렵습니다.
- 사용자들은 단기적인 목표와 즉각적인 피드백을 통해 더 높은 참여도를 보인다는 연구 결과에 기반하여, 효과적인 동기부여 시스템이 필요했습니다.
- 다양한 사용자 유형과 목표에 맞는 맞춤형 챌린지를 제공하여 지속적인 참여를 유도할 수 있는 시스템이 필요했습니다.
-
사용 이유
- 사용자의 목표와 현재 상태를 고려한 맞춤형 챌린지를 제공하여 참여도와 성공률을 높일 수 있습니다.
- 소셜 요소와 게이미피케이션 전략을 통해 사용자 간의 건전한 경쟁과 협력을 유도하여 지속적인 동기부여를 할 수 있습니다.
- 실시간 행동 추적과 즉각적인 피드백을 통해 사용자가 자신의 진행 상황을 확인하고 목표 달성에 대한 성취감을 느낄 수 있습니다.
-
성과
- 앱 평균 사용 시간 48% 증가 및 일일 활성 사용자 수 57% 증가
- 챌린지 참여 사용자의 목표 달성률 63% 향상 및 앱 재사용률 52% 증가
- 사용자 리텐션 42% 향상 및 구독 전환율 29% 상승
- 참여형 건강 관리에 대한 사용자 만족도 45% 향상 및 NPS(순추천지수) 38점 증가
CSV 데이터 로직 개선을 통한 시스템 기획 데이터 처리 효율 향상
-
도입 배경
- 기획팀과 운영팀에서는, 데이터 처리와 분석을 위해 CSV 형태의 데이터를 주기적으로 처리해야 했습니다.
- 초기에는 복잡한 엑셀 매크로와 수작업을 통해 데이터를 처리했으나, 데이터 양이 증가하면서 처리 시간이 길어지고 오류 발생 가능성이 높아졌습니다.
- 특히 시스템 기획 변경에 따라 데이터 구조가 바뀔 때마다 처리 로직을 수정해야 했으며, 이 과정에서 많은 시간과 리소스가 소요되었습니다.
-
사용 이유
- Apache Commons CSV와 Kotlin Coroutines를 활용한 비동기 처리로 대용량 CSV 파일 처리 속도를 향상시킬 수 있습니다.
- 템플릿 메소드 패턴과 전략 패턴을 결합하여 다양한 데이터 포맷에 유연하게 대응할 수 있는 구조를 설계할 수 있습니다.
- 유효성 검증 및 에러 처리 로직을 강화하여 데이터 정확성과 신뢰성을 높일 수 있습니다.
-
성과
- CSV 데이터 처리 시간 85% 단축 (평균 45분 → 6.8분)
- 데이터 처리 과정에서의 오류율 92% 감소
- 기획 변경에 따른 데이터 구조 변경 시 대응 시간 76% 단축
- 운영팀 데이터 처리 업무 효율성 68% 향상 및 리소스 재배치를 통한 생산성 증대
프로젝트 결과 및 성과
- 사용자 경험 개선: 개인화된 건강 관리 솔루션을 통한 사용자 만족도 향상 및 NPS 증가
- 사용자 참여 증가: 효과적인 동기부여 시스템으로 인한 사용자 참여율 및 리텐션 향상
- 건강 성과 개선: 사용자들의 건강 목표 달성률 향상 및 체중 관리 성공률 증가
- 시스템 안정성 강화: 최적화된 데이터 처리 및 성능 개선을 통한 서비스 안정성 확보
- 효율적인 운영: 자동화된 데이터 처리 및 분석 시스템으로 운영 효율성 개선
프로젝트를 통해 배운 점
이 프로젝트를 통해 개인화된 건강 관리 솔루션을 개발하면서 다음과 같은 중요한 교훈을 얻을 수 있었습니다:
- 데이터 기반 개인화: 사용자의 다양한 데이터를 통합적으로 수집하고 분석함으로써 개인화된 솔루션을 제공하는 접근 방식의 효과성
- 사용자 중심 설계: 사용자의 실질적인 문제점과 니즈를 충족시키는 직관적이고 효과적인 UX/UI 설계의 중요성
- 머신러닝 활용: 건강 데이터 분석 및 예측에 머신러닝을 적용함으로써 더욱 정확하고 개인화된 건강 관리 솔루션을 제공할 수 있는 가능성
- 동기부여 메커니즘: 게이미피케이션과 소셜 요소를 통해 사용자의 지속적인 참여를 유도하는 효과적인 방법
- 성능 최적화: 대용량 데이터 처리 및 분석을 위한 효율적인 아키텍처 설계와 최적화 기법의 중요성
이러한 경험은 향후 건강 관리 및 개인화된 서비스 개발에 있어 귀중한 자산이 될 것입니다.