Bargain Hunter
전국의 관광지, 문화명소를 지도로 탐색하고, 리뷰를 남기며, LLM 기반 가격 비교까지 가능한 서비스
1. 프로젝트 요약
- 한 줄 정의: 지도를 활용한 국내 관광지 정보 제공 및 LLM 기반 가격 비교 서비스
- GitHub 주소
- 팀 구성: 4인(BE 3, FE 1)
- 기간: 2025.07 ~ 2025.10 (4개월)
- 나의 역할: 인증/인가 MSA 설계 및 유저 도메인 개발
- Spring Cloud Gateway를 통한 중앙 집중형 JWT 검증 및 서비스 오버헤드 최소화
- Auth Service 담당자로서 전체 인증/인가 아키텍처 설계 주도
- OAuth2 PKCE 플로우 적용으로 Authorization Code Interception 방지 - 추후 모바일 앱으로 확장 고려
- Redis HINCRBY을 활용한 동시성 제어
- 핵심 성과: 이메일 인증 응답 속도 92% 개선, 인증 보안 무결성 강화
2. 기술 스택 및 시스템 아키텍처
- 기술 스택: Java 17, Spring Boot 3, PostgreSQL, Redis, Docker, Kubernetes
- redisTTL 기능을 활용하여 일회성 인증 코드의 자동 소멸 및 메모리 관리 최적화.
- 구조: API Gateway + Microservices + DB + Redis Cache 구조

디렉토리 구조
├─ gateway/ # API Gateway
├─ auth/ # 인증 및 사용자 관리 서비스
├─ review/ # 리뷰 서비스
├─ tour/ # 관광지 정보 서비스
└─ util/ # LLM 서비스3. 핵심 문제 해결 및 성과
Trouble 1. 비동기 처리를 통한 성능 최적화
1) Problem
- 이메일 인증 API 응답 시간이 평균 2.5초
- SMTP 서버 통신이 동기 블로킹 방식으로 처리되어 병목 발생
2) Action
- Spring Event +
@Async기반 비동기 구조 도입 - 회원가입 로직과 메일 발송 로직 분리
- 별도 ThreadPool에서 이벤트 처리
3) Result
- 평균 응답시간 2.5s → 0.2s (92% 개선)
- 처리량 약 10배 향상(10 req/s → 100+ req/s)
- 회원가입의 이메일 인증 UX 개선
4) Deep Dive
- 관련 포스팅: 이메일 발송 API 응답 속도 개선: Spring Event와 비동기 처리
- 비동기로 분리된 서버 간 장애 격리 구조 이해
TransactionPhase.AFTER_COMMIT기반 데이터 정합성 처리 학습
4. 관련 블로그 포스팅
- 이메일 발송 API 응답 속도 개선: Spring Event와 비동기 처리– 회원가입 인증 비동기 구조 설계 & 성능 최적화
- Redis HINCRBY로 Race Condition 해결하기– 분산 환경에서 인증 시도 횟수 동시성 제어
- 이메일 인증에서 Redis가 강점을 갖는 이유- 이메일 인증에 Redis를 사용하는 이유와 설계 포인트