Skip to content

dinahland/task-spring-cloud

Repository files navigation

MSA 전자상거래 플랫폼: 인증, 상품, 주문 서비스

마이크로서비스 아키텍처(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

  • 서비스 디스커버리: 마이크로서비스 등록 및 발견
  • 동적 서비스 등록: 서비스 인스턴스 자동 등록/해제
  • 헬스 체크: 서비스 상태 모니터링

🔍 Circuit Breaker를 통한 장애 격리 시스템

핵심 기능 개요

Resilience4j Circuit Breaker를 활용한 마이크로서비스 간 장애 전파 방지 시스템입니다. @CircuitBreaker 어노테이션이 적용된 서비스 호출 메서드에서 외부 서비스 장애 시 자동으로 Fallback 메서드를 실행합니다.

✨ 시스템 필요성

  • 장애 격리: 상품 서비스 장애 시 주문 서비스에 미치는 영향 최소화
  • 서비스 안정성: 외부 의존성 장애로부터 전체 시스템 보호
  • 사용자 경험 개선: 장애 상황에서도 의미 있는 응답 제공

📜 Fallback 응답 내용

  • 요청 유형: 주문 생성, 상품 추가 요청
  • 응답 메시지:
    • 비즈니스 로직 오류: 구체적 오류 메시지 (ex. "123번 상품을 찾을 수 없습니다")
    • 외부 API 호출 오류: "상품 서비스를 이용할 수 없습니다. 나중에 다시 시도해주세요"

💾 Redis 캐싱을 통한 성능 최적화 시스템

핵심 기능 개요

Spring Cache + Redis를 활용한 주문 조회 성능 최적화 시스템입니다. @Cacheable 어노테이션이 적용된 주문 조회 메서드에서 동일한 주문에 대한 반복 조회 시 Redis 캐시에서 데이터를 반환합니다.

✨ 시스템 필요성

  • DB 부하 감소: 반복적인 주문 조회로 인한 데이터베이스 부하 최소화
  • 응답 속도 향상: 메모리 기반 캐시를 통한 빠른 데이터 조회
  • 확장성 개선: 캐시 계층을 통한 시스템 처리 용량 증대

성과 및 회고

주요 성과

  1. 서비스 독립성 확보: 각 서비스별 독립적인 DB와 배포 가능
  2. 가용성 향상: Circuit Breaker 패턴으로 장애 전파 방지
  3. 성능 최적화: Redis 캐싱으로 주문 조회 성능 향상
  4. 확장성: 상품 서비스 다중 인스턴스 운영
  5. 보안성: JWT 기반 API Gateway 레벨 인증

기술적 학습

  • MSA 설계 패턴 이해 및 적용
  • Spring Cloud 활용
  • 분산 시스템에서의 장애 처리 전략
  • Redis를 활용한 캐싱 전략
  • API Gateway를 통한 중앙집중식 인증

개선 포인트

  • 모니터링 강화: Zipkin을 통한 분산 추적 시스템 도입
  • 보안 강화: OAuth2.0 적용
  • 컨테이너화: Docker, Kubernetes를 통한 배포 자동화

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages