Spring Boot 3.3
Java 17
MySQL
QueryDSL
Redis
AWS S3
JWT
Kakao OAuth
OpenFeign
Google Cloud Vision
Swagger

밥이득

대학생과 주변 매장 사장을 연결하는 위치 기반 할인 탐색 서비스. 학교 기준 또는 현재 좌표 기반으로 주변 할인 매장과 메뉴를 검색한다.

2024년 6월 - 2024년 8월상태: completed카테고리: web

문제

학교 주변 할인 매장 탐색 서비스에서 매 요청마다 DB에서 거리 계산을 수행하면 검색 응답이 느리고, 가게 수가 늘수록 쿼리 비용이 선형으로 증가하는 구조였다. 또한 학생·사장 역할이 다른데 동일 검색 API에서 사용자 컨텍스트를 분리해서 처리해야 했다.

내 역할

Redis Geo 기반 위치 검색 시스템 설계 및 구현, 메뉴·매장 API 구조화, S3 파일 업로드 파이프라인 구현, JWT role 기반 인증 연동

접근

· 애플리케이션 부팅 시 전체 가게·대학 위치를 Redis Geo에 적재해 거리 계산을 DB 외부로 분리 · 학교 기준 검색은 Redis Geo distance로 처리하고, 사용자가 임의 좌표를 전달하는 경우는 Haversine 직접 계산으로 분기 · 검색 결과에 TTL 10분 캐시를 적용해 동일 검색어 반복 요청을 DB 및 Geo 계산 없이 처리 · JWT에서 role을 추출해 학생·사장 컨텍스트를 검색 API 내부에서 분기 처리 · 메뉴 생성은 storeId 컨텍스트가 필수이므로 /stores/{storeId}/menus로 구성하고, 수정·삭제는 menuId 단독 식별로 분리해 REST 리소스 계층 정리

성과

· S3 기반 메뉴 이미지 및 가게 배너 업로드 기능 운영 · TTL 10분, 반경 5km를 정책 상수로 적용하고 운영 지표 기반 조정 과제를 남김 · 카카오 로그인/JWT 초기 구현을 검색 및 스토어 도메인의 role 분기 로직에 통합하는 리팩토링 담당

성과 지표

검색 결과 캐시 TTL 10분 적용
현재 좌표 기반 반경 5km 검색 정책 적용
담당 PR: #22(메뉴 API), #114/#136/#142(검색 기능), #135(Redis 설정 안정화)

연결된 경험

이 프로젝트가 속한 경력 또는 활동 경험입니다.

동아리
2024.03 - 2024.08

UMC

백엔드 개발

홈 타임라인에서 보기

한눈에 보기

공개 경로:

/projects/밥이득

대표 프로젝트:

예, 순서 2

사용 기술:

Spring Boot 3.3, Java 17, MySQL, QueryDSL, Redis, AWS S3, JWT, Kakao OAuth, OpenFeign, Google Cloud Vision, Swagger

비슷한 프로젝트