이전에 마이크로서비스들의 배포를 완료했고 이제 배포된 서비스들의 요청을 종합적으로 관리해주는 API Gateway를 적용하려고한다.
본인은 여러 API Gateway중에서 경량화된 MSA 구조에 최적화된 Spring Cloud Gateway를 적용시켜보려한다.
먼저 API Gateway는 API 라우팅, 필터링, 로드밸런싱과 같은 효과적인 역할을 수행
장점 :
start.spring.io
로 접속해서 프로젝트를 생성한다.
# 서버 설정
server:
port: 80 # 애플리케이션이 실행될 포트 번호
# Spring 애플리케이션 설정
spring:
application:
name: gateway # 애플리케이션의 이름 설정
# Spring Cloud Gateway 설정
cloud:
gateway:
mvc:
routes: # 라우트 설정 시작
- id: accountRoute # 라우트 ID
uri: http://j11a604.p.ssafy.io:8081 # 요청이 전달될 URI (여기에 실제 URI를 입력해야 함)
predicates: # 요청을 필터링하는 조건
- Path=/account/** # /account/** 경로에 대한 요청을 처리
- id: chatbotRoute
uri: http://j11a604.p.ssafy.io:8082
predicates:
- Path=/chatbot/**
- id: notificationRoute
uri: http://j11a604.p.ssafy.io:8083
predicates:
- Path=/notification/**
- id: paymentRoute
uri: http://j11a604.p.ssafy.io:8084
predicates:
- Path=/payment/**
- id: travelRoute
uri: http://j11a604.p.ssafy.io:8085
predicates:
- Path=/travel/**
- id: userRoute
uri: http://j11a604.p.ssafy.io:8086
predicates:
- Path=/user/**
# Eureka 설정
eureka:
instance:
prefer-ip-address: true # 인스턴스 등록 시 IP 주소를 선호
client:
register-with-eureka: true # Eureka 서버에 등록 여부
fetch-registry: true # Eureka 서버에서 등록된 서비스 정보를 가져올지 여부
service-url:
defaultZone: http://j11a604.p.ssafy.io:8761/eureka # Eureka 서버의 기본 URL (여기에 실제 URL을 입력해야 함)
# 관리 엔드포인트 설정
management:
endpoint:
web:
exposure:
include: "*" # 모든 관리 엔드포인트 노출
uri: http://j11a604.p.ssafy.io:8086
이 부분에서 로드 밸런서를 사용해서 부하를 분산시켜줄 수 있다.
uri: lb://${ServerName}
우선은 uri 주소로 직접 연결하여 진행하고 추후에 로드 밸런서를 사용해서 분산시켜보자
다음단계(Eureka Server 적용)