본문으로 건너뛰기

Bargain Hunter

전국의 관광지, 문화명소를 지도로 탐색하고, 리뷰를 남기며, LLM 기반 가격 비교까지 가능한 서비스

1. 프로젝트 요약

  • 한 줄 정의: 지도를 활용한 국내 관광지 정보 제공 및 LLM 기반 가격 비교 서비스
  • GitHub 주소
  • 팀 구성: 4인(BE 3, FE 1)
  • 기간: 2025.07 ~ 2025.10 (4개월)
  • 나의 역할: 인증/인가 MSA 설계 및 유저 도메인 개발
    1. Spring Cloud Gateway를 통한 중앙 집중형 JWT 검증 및 서비스 오버헤드 최소화
    2. Auth Service 담당자로서 전체 인증/인가 아키텍처 설계 주도
    3. OAuth2 PKCE 플로우 적용으로 Authorization Code Interception 방지 - 추후 모바일 앱으로 확장 고려
    4. 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

4. 관련 블로그 포스팅