[TIL] Spring Cloud Gateway

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 프리티어 환경으로 리소스 제약 존재

🦄 해결 방안 모색

  1. API Gateway 패턴 도입

    • 목적: 프론트엔드에 단일 진입점 제공, CORS 문제 해결
    • 구현 방식: Spring Cloud Gateway 활용
    • 장점:
      • 단일 도메인으로 프론트엔드 요청 처리
      • 중앙화된 인증/인가 처리
      • 요청 라우팅 관리 용이
  2. 회원 정보 공유 방식

    현재 버티 서비스는 JWT에 프로필 정보를 포함하기 어려운 상황이므로: (로그인 후 사용자 프로필을 업데이트 하기 때문)

    • 서비스 간 직접 통신 방식
      • 기본 개념: 회원 정보가 필요할 때 회원 서비스의 API를 직접 호출하여 최신 정보를 가져오는 방식
      • 구현 내용:
        • 회원 서비스에 내부용 API 엔드포인트 추가 (예: /api/internal/users/{userId})
        • 이 API는 외부 접근이 아닌 서비스 간 통신용으로만 사용
        • 기능 서비스에서 특정 사용자 정보가 필요할 때 이 API를 호출하여 최신 정보 획득
        • 내부 API 키를 사용해 인증 (서비스 간 통신이 안전하게 이루어지도록)

🐬 깃블로그 정리