커피넛

제주 꼬망이들

공공 데이터를 활용한 아동급식카드 가맹점 문제 해결 서비스

ReactJavaScriptSpring BootKakao Map APIOpenAIAWS EC2

제주 꼬망이들

공공 데이터를 활용한 아동급식카드 가맹점 문제 해결 서비스

프로젝트 개요

제주 지역의 아동급식카드 가맹점 정보 부족 문제를 해결하기 위해, 공공데이터와 크롤링 데이터를 활용하여 가맹점 위치, 메뉴, 가격 정보를 제공하고 불건전 가맹점을 필터링하는 서비스를 개발했습니다.

팀 구성

  • Frontend: 2명
  • Backend: 3명
  • 본인 역할: 프로젝트 팀장, 프론트엔드 개발, 발표

주요 기능

  1. 현재 위치 기준으로 가맹점 표시 및 필터링
  2. 가맹점 메뉴와 가격 정보 제공
  3. 아동급식카드 사용 리뷰 작성 및 제공
  4. 필터링된 가맹점 리스트로 공무원 지원

기술 스택

구분기술
언어JavaScript, Java, Python
프레임워크React, Spring Boot
APIKakao Map, Geolocation, OpenAI, Kakao Login
서버AWS EC2, AWS RDS (MySQL)

역할 및 업무

프로젝트 일정 관리 및 발표

  • 2박 3일 해커톤 일정에 맞추어 주제 선정, 기획, 개발까지 일정 관리
  • 카카오테크 부트캠프 해커톤 대회에서 결과물에 대한 발표를 진행함
  • 이후 프로젝트를 보완하여 제주 ICT 이노베이션스퀘어 해커톤 경진대회에서도 발표함

지도 및 위치 기반 서비스 구현

  • 카카오 로그인을 활용하여 OAuth 기능을 구현
  • 카카오 MAP API를 사용해 아동급식카드 가맹점의 위치를 지도에 표시
  • Geolocation API를 활용해 사용자의 위치 정보를 확인하고 지도에 반영

프론트엔드와 백엔드 연동 코드 구현

  • 로그인 및 가맹점 정보 불러오기 요청을 백엔드와 연동하여 페이지 내 코드로 구현
  • 사용자 요청에 맞게 데이터를 불러오고 화면에 표시하는 로직을 설계 및 작성

CI/CD 및 데이터베이스 설정

  • GitHub Actions를 활용하여 React 배포 리소스 파일을 빌드하고, SCP 명령어를 통해 EC2 서버 내 지정 폴더로 자동 배치되도록 설정
  • AWS RDS MySQL을 생성하고 VPC를 활용하여 가맹점 정보를 저장하고 관리할 수 있는 환경을 구축

주요 문제 해결

(1) 2박 3일의 짧은 기간 내 프로젝트 진행 과정

1일차: 주제 및 기술 스택 선정

  • 브레인스토밍을 통해 빠르게 프로젝트 주제를 확정
  • 팀원 개개인의 역량을 고려한 기술 스택 선택 및 역할 분배
  • 필수 데이터가 크롤링을 통해 확보해야 할 정보였기에, 비정형 데이터 처리를 위해 NoSQL 사용을 고려했지만 팀원 전원이 익숙한 MySQL을 선택
  • 빠른 개발 사이클을 위해 프론트엔드는 React, 백엔드는 Spring Boot를 활용하기로 결정

2일차: 개발 및 자료 준비

  • 개발 과정 중 발생하는 문제에 대해 팀원 간 즉각적인 질의응답 진행
  • 필요하다면 다른 부트캠프 동료나 강사님께 조언을 구하며 MVP를 신속하게 구현
  • 개발 완료 후 서비스 소개를 위한 발표 자료 준비

3일차: 발표

  • 준비한 서비스 데모 및 발표 자료를 바탕으로 완성도 높은 발표 진행
  • 발표 후 질의응답에도 충분히 대비하여 완벽한 대응 수행

(2) 메뉴 및 음식점 카테고리를 통한 불건전 가맹점 필터링 방법

제주 지역 공공데이터로 제공되는 아동급식카드 가맹점 데이터를 활용하여 불건전 가맹점을 필터링하는 방안 고안:

  • 해당 데이터에는 가맹점명과 주소만 포함되어 있어, 가맹점명 기반으로 네이버 지도에서 음식점의 '메뉴', '가격', '카테고리' 정보를 크롤링하여 데이터베이스에 추가 저장
  • 대량의 가맹점을 효율적으로 필터링하기 위해 OpenAI API를 이용한 LLM 필터링 기법 활용
  • 적절한 프롬프트 설계를 통해 자동화된 필터링 프로세스를 구축하여 불건전 가맹점을 걸러내는 시스템 구현

성과

우선순위 설정 및 팀 소통 능력 향상

  • 제한된 시간(2박 3일) 내 프로젝트 완수를 위해 우선순위를 명확히 설정
  • 팀원들의 역량을 적절히 활용하고 원활한 커뮤니케이션을 통해 신속한 의사결정 및 문제 해결

다양한 API 통합 및 데이터 처리 경험 축적

  • 카카오 지도 API, 카카오 로그인 API, geolocation API, 공공데이터, 크롤링 데이터 등 다양한 API와 데이터 시각화 경험
  • 외부 자원을 효과적으로 연동 및 필터링하는 과정을 통해 API 통합 및 데이터 처리 역량 강화

Git 관리 방식 개선과 협업 프로세스 정립 과정

  • Git을 활용한 협업 문화(커밋 메시지 규칙, PR, 코드 리뷰)를 적용하여 체계적이고 효율적인 협업 경험 축적

프로젝트 발표 및 서비스 전달 능력 향상

  • 해커톤 참여를 통해 발표 경험을 쌓아 발표 능력 향상
  • 서비스, 주제, 개발 방법, 기술 스택 등의 사용 이유를 명확히 전달하는 능력 강화
  • 카카오테크 부트캠프 해커톤, ICT 제주 이노베이션 해커톤 두 대회에서 동일 주제로 최우수상 수상