본문 바로가기
Project/토이 프로젝트

[MSA-Test-Project] : gateway 구현해보기

by 오주현 2022. 6. 21.
반응형

gateway에 각 서비스의 포트를 꼽아 묶어주는 작업을 했다. 

 

여러 예제를 찾아보면서 하고 있었는데 zuul을 사용하려고 하다 이게 지원이 꽤 오래 전에 중단 된 것 같아서 Spring cloud에서 지원하는 gateway로 바꿔주었다.

 

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

build.gradle에 dependencies를 추가해주고 사용할 수 있다.

 

@RestController
@RequestMapping("/api/user")
public class news {

    @RequestMapping("/")
    public String getUser() {
        return "User Information";
    }
}

여러 서비스가 있지만 일단 Userservice를 기준으로 적어보면 UserService에 RestController를 만들어준다. 

RequestMapping 경로를 /api/user로 잡아주었다.

 

다시, gateway service로 와서 application.yml을 수정해준다.

 

spring:
  application:
    name: msa-api-gateway
  cloud:
    gateway:
      routes:
        - id: msa-user-service
          uri: lb://MSA-USER-SERVICE
          predicates:
            - Path=/api/user/**
  main:
    web-application-type: reactive

server:
  port: 8090
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

gateway에서 이런식으로 잡아주었다. spring.cloud.gateway.routes에 id와 uri와 path를 설정해주면 된다.

uri에는 user Service name을 적어주면 로드벨런서가 알아서 찾아서 매핑해준다. path는 위에서 userController에 작성한 requestMapping과 일치시켜준다.

 

user Service의 port는 8000이고 gateway의 port는 8090으로 수정해 주었는데 포스트맨으로 요청 보낸 경로를 보면 8090으로 user Service에 접근한 것을 확인할 수 있다. 

 

이렇게 다른 여러 서비스도 연결해서 묶어줄 수 있다.

반응형

댓글