beomgg.
Back to Projects

CheckProduct - 식품 리콜 정보 조회 서비스

식품안전 공공데이터를 활용한 식품 리콜 조회 모바일 앱의 백엔드 시스템. Spring Boot 기반의 상품 관리 및 검색 REST API 구현과 Swagger를 활용한 API 명세 작성, PR 기반의 팀 협업 환경 구축

Spring BootJavaREST API

프로젝트 배경 및 목표

시중에 유통되는 식품 중 위해 물질 검출 등으로 리콜 조치된 상품들을 소비자가 손쉽게 확인하여 피해를 예방할 수 있도록 돕는 모바일 식품 리콜 정보 조회 서비스입니다.

  • 공공데이터 연동: 식품의약품안전처의 공공데이터(XML)를 파싱하여 최신 리콜 정보를 실시간으로 제공
  • REST API 서버 구축: Spring Boot 기반으로 상품 조회 및 관리 기능을 제공하는 백엔드 API 설계
  • 협업 환경 구축: Github PR(Pull Request) 중심의 코드 리뷰 및 협업 프로세스 도입

시스템 아키텍처 및 기술 스택

┌─────────────────────────────────────────────────────────┐
│                 Client Layer (Mobile App)               │
│  - Presentation: React Native (Expo)                    │
│  - Data Parsing: fast-xml-parser (Public Data XML)      │
└────────────────────────────┬────────────────────────────┘
                             │ HTTP / REST API
                             ▼
┌─────────────────────────────────────────────────────────┐
│                 Core Backend (Spring Boot 3.5)          │
│  - Product Domain: Search, Pagination, Filtering        │
│  - Admin Domain: Recall Data Management                 │
│  - API Docs: Springdoc OpenAPI (Swagger)                │
└────────────────────────────┬────────────────────────────┘
                             │ (JPA / SQL)
                             ▼
┌─────────────────────────────────────────────────────────┐
│                 Database (H2 Database)                  │
│  - Tables: Products, Recall Info, Categories            │
└─────────────────────────────────────────────────────────┘

Backend (Spring Boot)

  • Framework: Java 17, Spring Boot 3.5
  • Database & ORM: H2 Database, Spring Data JPA
  • API Docs: Swagger (Springdoc OpenAPI)

Frontend (Mobile App)

  • Framework: React Native, Expo
  • Data Parsing: fast-xml-parser (공공데이터 XML 처리)

핵심 기술적 도전 및 해결 과정

공공데이터 XML 파싱과 구조화

  • Challenge: 식품안전정보원 공공데이터가 복잡한 XML 형태로 제공되어 클라이언트 앱에서 데이터를 직접 렌더링하기 까다로웠습니다.
  • Solution: fast-xml-parser를 도입하여 모바일 클라이언트 단에서 XML 데이터를 효율적으로 JSON 객체로 변환하고, 필요한 핵심 데이터만 추출해 UI에 바인딩했습니다.

Spring Boot REST API 설계와 명세화

  • Challenge: 프론트엔드와 백엔드 개발 병렬 진행 시, API 엔드포인트와 데이터 규격에 대한 의사소통 비용이 컸습니다.
  • Solution: Swagger(OpenAPI) 개념을 적용하여 백엔드에서 명확하게 API 스펙을 설계하고, 원활한 협업 흐름을 가져갈 수 있도록 기반을 마련했습니다.

프로젝트 성과 및 배운 점

  • 팀 협업 프로세스 확립: Github PR 리뷰 문화를 경험하고, 프론트엔드와 백엔드의 브랜치를 분리하여 협업하는 구조를 이해했습니다.
  • 풀스택 아키텍처 경험: Spring Boot 백엔드와 React Native 모바일 앱이 연동되는 전체 시스템 아키텍처 흐름을 파악하는 계기가 되었습니다.