Rookies-2025.02.03

이주원·2025년 2월 3일

sk쉴더스 루키즈

목록 보기
3/36

MSA + JWT() + Redis() + Mysql + Kafka(*) : e-commerce api 구현

MSA(마이크로서비스 아키텍처) 기반으로, JWT 인증, Redis 캐싱, MySQL 데이터 저장, Kafka 이벤트 처리 등을 활용하여 쇼핑몰과 같은 e-commerce API 서비스를 구축하는 것이 최종 목표






Redis: nosql 데이터베이스입니다. ,캐싱 및 세션 관리역할을 맡기위해 사용할 예정입니다.





Kafka: 이벤트 기반 아키텍처 입니다. ,메시지 브로커 역할을 하면서 비동기 이벤트 처리를 담당할 것 입니다.





지난주에 사용했던 서버와 게이트웨이를 준비합니다




api-gateway 의존성

  dependencies {
      // msa, 비동기 처리 등
      implementation 'org.springframework.boot:spring-boot-starter-webflux'
      implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
      implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
      // 비동기 관련 필요 도구
      implementation 'org.springframework.boot:spring-boot-starter-actuator'

      // 개발상 편의성 제공, 개발도구
      compileOnly 'org.projectlombok:lombok'
      developmentOnly 'org.springframework.boot:spring-boot-devtools'
      annotationProcessor 'org.projectlombok:lombok'

      // 테스트
      testImplementation 'org.springframework.boot:spring-boot-starter-test'
      testImplementation 'io.projectreactor:reactor-test'
      testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

      // 스프링 시큐리티
      implementation 'org.springframework.boot:spring-boot-starter-security'
      // oAuth2에서 자원관리용도, JWT 인증 처리시 보안 강화 용도 활용할수 있음
      implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'

      // jWT 처리, 버전은 참고
      implementation 'io.jsonwebtoken:jjwt-api:0.11.2'
      implementation 'io.jsonwebtoken:jjwt-impl:0.11.2'
      implementation 'io.jsonwebtoken:jjwt-jackson:0.11.2'

      // redis
      implementation 'org.springframework.boot:spring-boot-starter-data-redis'
  }

✅ MSA를 위해 비동기 API Gateway (Spring Cloud Gateway + WebFlux) 사용
✅ Eureka를 이용한 서비스 디스커버리
✅ JWT + OAuth2 기반 보안 처리
✅ Redis를 활용한 캐싱 및 세션 관리
✅ 테스트 및 개발 편의성 도구 포함

💡 이 API Gateway는 Spring WebFlux를 기반으로 비동기 방식으로 동작하며, JWT + OAuth2를 통한 보안, Redis 캐싱을 활용하여 성능 최적화가 적용된 구조!




api-gateway

1. config 패키지

spring security 및 API gateway 보안 관련 설정이 포함되어있습니다.

2. handler 패키지

spring security 에서 예외 처리를 담당 합니다.
ex) 401 인증 오류, 토큰 없이(허가 없이) 특정 페이지 요청 하면 발생 , 권한이 없는 유저가 사용자 요청을 할 경우 (관리자 메뉴를 일반 유저가 접근) 엑세스 거부 403 AccessDenied

3. jwt 패키지

JWT 인증 및 토큰 처리,
JWT 토큰 생성 및 검증 로직을 담당

4. redis

Redis를 활용하여 세션 및 캐싱 처리 관련 패키지

5. application.yml

API Gateway, Eureka, JWT, Redis 설정



rdis가 제대로 돌아가는지 테스트해보았다.

도커에 이미지생성

테스트를위한 프로젝트 생성

post 요청으로 rdis에 email,키 전달하는 api

비쥬얼 스튜디오에서 thunder 를 이용하여 post 요청을 보냈음

도커에 값이 제대로 들어온것을 확인함

아마내일은
MSA + JWT() + Redis() + Mysql + Kafka(*) : e-commerce api 구현 끝까지 구현할 예정

끝.

profile
뭐가될지 모름

0개의 댓글