Java/Spring Cloud Gateway

[SCG]Spring Cloud Gateway 기반 API 게이트웨이 구축 1편| Spring Cloud Gateway 예제

a-몬드 2023. 12. 8. 14:41
반응형

MSA의 대해서는 다들 알거라 생각한다. 

나는 MSA를 위해 Gateway 쪽을 담당하여 Auth 서버를 통해 인증을 처리하고 

서비스 서버에 연결해주는 작업을 해야한다. 

일단 Auth서버 인증이든 다른 서비스 연결이들 기초적인 게이트웨이 구축부터 한번 해보자!

실습 환경은 Window, Intellij를 사용하여 한다. 

 

Spring Cloud Gateway 프로젝트 생성

type은 Gradle로 설정해줍니다. 

 

build.gradle파일에 dependencies 추가

implementation 'org.springframework.cloud:spring-cloud-starter-gateway'

 

application.yml 설정 

application.properties 파일을 .yml으로 변경

application.yml 파일 작성 

server:
  port: 9090 # port number

spring:
  application:
    name: apigateway-service
  cloud:
    gateway:
      routes:
        - id: login
          uri: https://www.facebook.com
          predicates:
            - Path=/groups # Path가 /groups로 들어오면 uri facebook으로 요청을 넘긴다.

 

predicates == 조건문 

Path가 localhost:9090/groups로 들어온다면

uri를 https://www.facebook.com 여기로 연결해라는 의미 입니다. 

서버 실행 테스트 

localhost:9090 접속

Error Page가 뜨지만

그래도 서버가 실행되었다는 사실을 알 수 있습니다. 

localhost:9090/groups 접속

facebook.com으로 가도록 route처리를 해주었기 때문에 아래 화면이 뜨게됩니다. 

 

 

서비스 서버 만들기 

다른 서버를 하나 더 만들어봅니다. 

9090과는 다른 포트 번호를 지정해 주어야합니다. 

localhost:8888/test 로 get 요청이 들어올 경우 아래 json을 response 합니다.

 

{ "id" : "test", "password" : "password"}

 

application.yml 파일 수정 

서비스 서버의 요청도 받아줄 수 있도록 수정합니다. 

 

서비스 서버 호출 되는지 테스트 

http://localhost:9090/test 접속 

 

gateway의 포트 번호인 9090으로 서비스 서버의 응답을 브라우저에 확인할 수 있습니다.

 

여기까지는 너무 쉽죠? 

저도 이때까지만 해도 gateway 껌이네 쉽네 했습니다. 

2편부터는 저의 일주일간 삽질해서 얻어낸 결과물을 정리한 글 입니다. 

Spring cloud Gateway의 Filter기능중 Custom 필터를 만들어 WebFlux로 다른 서버와 통신 하는 과정을 담아보겠습니다. 

2편 많이 기대해 주세요^__^ (저의 일주일간의 피땀 눈물이 담겨 있습니다,,,)

 

아! 참고로 할 말이 있습니다. 

저는 최근 2년간,, node.js와 python하다가 

신규 프로젝트 투입돼서 java다시 시작한지 이주일밖에 안됐어요,,,

(Spring cloud gate랑 webflux 해본지는 일주일도 안됨요,,) 

전문가는 아니라는점 알아주시길 바랍니다. 

 

그래도 일단 돌아가기는한다 이거야,,, 

다들 그렇게 하잖아요 나만그래? 나만 그러냐고,,, 

자세한 내용들은 공식문서를 살펴보시는게 가장 정확할 거 같습니다. 

반응형