Spring Boot 기반 MSA 아키텍처로 구현된 여행 계획 서비스 백엔드
- Framework: Spring Boot 3.4, Spring Cloud
- Language: Java 17
- Architecture: MSA (Microservice Architecture)
- Service Discovery: Eureka Server
- API Gateway: Spring Cloud Gateway
- Database: MySQL, Redis
- Security: JWT, OAuth2 (Kakao, Google)
- Build Tool: Gradle
- 서비스 디스커버리 및 레지스트리
- 모든 마이크로서비스 등록 및 관리
- 단일 진입점 제공
- JWT 인증 및 라우팅
- 로깅 및 모니터링
- 회원가입/로그인 (자체, OAuth2)
- JWT 토큰 발급 및 갱신
- 여행 계획 CRUD
- 장바구니 관리
- 이메일 인증
- Google Places API 연동
- 장소 검색 및 상세정보 조회
- 인기 명소 관리
- 장소 정보 캐싱 (Redis)
- 자체 회원가입 (이메일 인증)
- SNS 로그인 (Kakao, Google OAuth2)
- JWT 기반 인증/인가
- Refresh Token 자동 갱신
- 여행 일정 생성/조회/수정/삭제
- 일자별 세부 일정 관리
- 장소 장바구니 기능
- 내 여행 계획 목록 조회
- Google Places API 기반 장소 검색
- 지역별 인기 명소 Top 20
- 장소 상세 정보 조회
- 근처 장소 검색
Tranner_BE_2/
├── eureka-server/ # 서비스 디스커버리
├── api-gateway/ # API 게이트웨이
├── account-service/ # 계정 및 여행 계획 서비스
├── external-api-proxy/ # 외부 API 연동 서비스
└── infra-compose.yml # 인프라 Docker Compose
docker-compose -f infra-compose.yml up -d# 1. Eureka Server
cd eureka-server
./gradlew bootRun
# 2. API Gateway
cd api-gateway
./gradlew bootRun
# 3. Account Service
cd account-service
./gradlew bootRun
# 4. External API Proxy
cd external-api-proxy
./gradlew bootRun./gradlew clean build각 서비스의 application.yml 또는 application-{profile}.yml에서 설정:
- Database: MySQL 접속 정보
- Redis: Redis 접속 정보
- OAuth2: Kakao, Google Client ID/Secret
- JWT: Secret Key
- Google API: API Key
- Email: SMTP 설정
POST /api/members/signup- 회원가입POST /api/members/login- 로그인POST /api/members/email/verification- 이메일 인증GET /api/plans- 여행 계획 목록POST /api/plans- 여행 계획 생성PUT /api/plans/{id}- 여행 계획 수정DELETE /api/plans/{id}- 여행 계획 삭제
GET /api/discovery/recent- 최근 인기 명소GET /api/discovery/detail- 장소 상세정보GET /api/search- 장소 검색
- MSA 구조: 서비스별 독립 배포 및 확장
- Service Discovery: Eureka를 통한 동적 서비스 등록/발견
- API Gateway 패턴: 단일 진입점 및 라우팅
- JWT 인증: Stateless 인증 방식
- 캐싱 전략: Redis를 통한 API 응답 캐싱
GitHub Actions를 통한 자동화:
- 빌드 및 테스트
- Docker 이미지 생성
- AWS EC2 배포
- 문상준 (20203047)
- 강민석 (20201815)
- 김민우 (20201822)
- 김현진 (20213032)
- 조은빈 (20223055)
캡스톤 디자인 프로젝트