마이크로서비스 아키텍처(MSA) 기반으로 전자상거래 플랫폼의 핵심 서비스를 구현한 프로젝트입니다. Spring Cloud를 활용하여 서비스 디스커버리, API 게이트웨이, 서킷 브레이커 등의 패턴을 적용했습니다.
- 마이크로서비스 아키텍처 설계 및 구현
- 서비스 간 통신 안정성 확보 (Circuit Breaker, Fallback)
- JWT 기반 인증 시스템 구축
- 캐싱 전략을 통한 성능 최적화
- 부하 분산 및 서비스 디스커버리 구현
- Framework: Spring Boot 3.5.4, Spring Cloud
- Service Discovery: Netflix Eureka
- API Gateway: Spring Cloud Gateway
- Circuit Breaker: Resilience4j
- Authentication: JWT (JSON Web Token)
- Cache: Redis
- Database: MySQL
- Service Communication: OpenFeign
- Monitoring: Spring Boot Actuator, Prometheus
🔐 회원 인증 서비스 (Auth Service)
- 회원가입: 사용자 정보 등록 및 JWT 토큰 발급
POST /auth/sign-up - 로그인: 이름 & 비밀번호 검증 후 JWT 토큰 발급
POST /auth/sign-in - 인증/인가: 로그인 시 JWT 토큰 자동 발급 (1시간 유효)
📦 상품 관리 서비스 (Product Service)
- 상품 등록: 상품 이름, 공급 가격 등록
POST /products - 상품 목록 조회: 전체 상품 목록 조회
GET /products - 부하 분산: 다중 인스턴스 가중치 기반 로드 밸런싱 (70 : 30)
🛒 주문 관리 서비스 (Order Service)
- 주문 생성: 상품 유효성 검증 후 주문 생성
POST /orders - 기존 주문에 상품 추가: 주문 및 상품 유효성 검증 후 주문에 추가 상품 등록
PUT /orders/{orderId} - 주문 단건 조회: Redis 캐싱을 적용한 주문 조회
GET /orders/{orderId}
API Gateway
- 중앙집중식 라우팅: 클라이언트의 요청을 모두 받음
- JWT 인증 필터: 글로벌 JWT 토큰 검증 (
/auth/**경로 제외) - 로드 밸런싱: 서비스별 가중치 기반 트래픽 분산
Eureka Server
- 서비스 디스커버리: 마이크로서비스 등록 및 발견
- 동적 서비스 등록: 서비스 인스턴스 자동 등록/해제
- 헬스 체크: 서비스 상태 모니터링
핵심 기능 개요
Resilience4j Circuit Breaker를 활용한 마이크로서비스 간 장애 전파 방지 시스템입니다. @CircuitBreaker 어노테이션이 적용된 서비스 호출 메서드에서 외부 서비스 장애 시 자동으로 Fallback 메서드를 실행합니다.
✨ 시스템 필요성
- 장애 격리: 상품 서비스 장애 시 주문 서비스에 미치는 영향 최소화
- 서비스 안정성: 외부 의존성 장애로부터 전체 시스템 보호
- 사용자 경험 개선: 장애 상황에서도 의미 있는 응답 제공
📜 Fallback 응답 내용
- 요청 유형: 주문 생성, 상품 추가 요청
- 응답 메시지:
- 비즈니스 로직 오류: 구체적 오류 메시지 (ex. "123번 상품을 찾을 수 없습니다")
- 외부 API 호출 오류: "상품 서비스를 이용할 수 없습니다. 나중에 다시 시도해주세요"
핵심 기능 개요
Spring Cache + Redis를 활용한 주문 조회 성능 최적화 시스템입니다. @Cacheable 어노테이션이 적용된 주문 조회 메서드에서 동일한 주문에 대한 반복 조회 시 Redis 캐시에서 데이터를 반환합니다.
✨ 시스템 필요성
- DB 부하 감소: 반복적인 주문 조회로 인한 데이터베이스 부하 최소화
- 응답 속도 향상: 메모리 기반 캐시를 통한 빠른 데이터 조회
- 확장성 개선: 캐시 계층을 통한 시스템 처리 용량 증대
- 서비스 독립성 확보: 각 서비스별 독립적인 DB와 배포 가능
- 가용성 향상: Circuit Breaker 패턴으로 장애 전파 방지
- 성능 최적화: Redis 캐싱으로 주문 조회 성능 향상
- 확장성: 상품 서비스 다중 인스턴스 운영
- 보안성: JWT 기반 API Gateway 레벨 인증
- MSA 설계 패턴 이해 및 적용
- Spring Cloud 활용
- 분산 시스템에서의 장애 처리 전략
- Redis를 활용한 캐싱 전략
- API Gateway를 통한 중앙집중식 인증
- 모니터링 강화: Zipkin을 통한 분산 추적 시스템 도입
- 보안 강화: OAuth2.0 적용
- 컨테이너화: Docker, Kubernetes를 통한 배포 자동화