[TIL] Spring Cloud Gateway
in TIL on Til, Spring, Project, Cloud Last modified at:
2025-04-28 TIL
📝 TIL (Today I Learned)
🔗 원본 이슈: #47
📅 작성일: 2025-04-28
🔄 최종 수정: 2025년 05월 02일
🍀 새롭게 배운 것
- Spring Cloud Gateway
- 아래의 문제 상황 해결을 위한 해결방법
- 앞으로 좀 더 공부하며 차근차근 구현 할 예정이다.
🍎 오늘의 문제 상황
- 현재 버티 서비스는 백엔드 서버의 도메인이 2개로 되어있다.
프론트와 연동을 하기 직전 과정에서 CORS 문제 해결과 이 과정에서 Render배포의 리소스 제약 문제를 어떤 식으로 해결하는 것이 좋은지 아래 내용과 같이 조사해보았다.
- 현재 버티 구조
- 서버 구조: 서버 도메인 URL이 2개 (회원 정보는 한쪽에만 존재)
- 프론트엔드: 도메인 URL이 1개
- 인증 방식: JWT 기반 인증 구현 중
- 문제점:
- 사용자 프로필 업데이트 기능이 있어 JWT에 프로필 정보 포함 어려움
- 프론트엔드와 백엔드 간 CORS 이슈 발생 가능
- Render 프리티어 환경으로 리소스 제약 존재
🦄 해결 방안 모색
API Gateway 패턴 도입
- 목적: 프론트엔드에 단일 진입점 제공, CORS 문제 해결
- 구현 방식: Spring Cloud Gateway 활용
- 장점:
- 단일 도메인으로 프론트엔드 요청 처리
- 중앙화된 인증/인가 처리
- 요청 라우팅 관리 용이
회원 정보 공유 방식
현재 버티 서비스는 JWT에 프로필 정보를 포함하기 어려운 상황이므로: (로그인 후 사용자 프로필을 업데이트 하기 때문)
- 서비스 간 직접 통신 방식
- 기본 개념: 회원 정보가 필요할 때 회원 서비스의 API를 직접 호출하여 최신 정보를 가져오는 방식
- 구현 내용:
- 회원 서비스에 내부용 API 엔드포인트 추가 (예: /api/internal/users/{userId})
- 이 API는 외부 접근이 아닌 서비스 간 통신용으로만 사용
- 기능 서비스에서 특정 사용자 정보가 필요할 때 이 API를 호출하여 최신 정보 획득
- 내부 API 키를 사용해 인증 (서비스 간 통신이 안전하게 이루어지도록)
- 서비스 간 직접 통신 방식