MSA (MicroServiceArchitecture)/Eureka & Spring Cloud Gateway (15) 썸네일형 리스트형 MSA 구성정리 with Eureka, Spring Cloud GW # Eureka와 SpringCloudGateway까지 정리된 구성은 아래와 같다. - 들어가기에 앞서, 일단 zuul과 SpringCloudGateway간의 비교를 먼저 해보면 좋을거 같다. 현재 스프링에서는 SCG를 권고하고 있는데 이유는 관리문제, 동기 비동기문제 등 여러가지가 있는데 일단 스프링에서 추천을 SCG로 했으니 SCG를 표준으로 쓰는게 맞는거 같다. 간단하게 zuul과 SCG를 비교한 표는 아래와 같다. - Worflow를 그려보면 아래와 같다. 물론 아래의 구성은 카프카 및 docker 컨테이너 환경이 적용이 안된 상태이다. 간단하게 그려보면 아래와 같다. - 위의 workflow를 번호 순서대로 설명을 해보면 아래와 같다. ① 유저이다. 실제 접속 환경은 간단하게 표현을 해서 위와 .. MSA (LoadBalancer 실행) # MSA 아키텍처 구성을 위한 LoadBalancer 실행하기 - firstproject에서 application.yaml 파일을 아래와 같이 입력하여 랜덤 포트를 받을수 있도록 설정한다. server: port: 0 spring: application : name: first-service eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka instance : instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}} 1. vm 옵션.. MSA (LoadBalencer를 위한 설정) 1. first-service 와 second-service의 application.yml 파일에 아래의 내용을 각각 추가해 줍니다. eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka - 위와같이 설정해 주는 이유는 eureka 매니저 서버에서 first-service와 second-service와의 통신을 통해 서비스를 관리하기위한 설정 입니다. server: port: 8081 spring: application : name: my-first-service eureka: client: register-with-eureka: true fetc.. MSA (LoggingFilter) 1. GlobalFilter 파일을 복사하고, LoggingFilter로 이름을 바꿔줍니다. 2. 아래의 소스코드를 입력 합니다. package com.example.apigatewayservice.filter; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.OrderedGatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import.. MSA (GlobalFilter) 1. filter 패키지에서 CustomFilter파일을 복사하여 GlobalFilter 파일을 생성한다. 2. GlobalFilter에서 아래 코드를 작성한다. package com.example.apigatewayservice.filter; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.http.server.reactive.ServerHttp.. MSA Spring (CustomFilter) 1. application.yml 파일을 아래와 같이 수정합니다. 기존에 설정된 필터 정보에서 Add 부분을 주석처리하고 CustomFilter를 추가해 줍니다. server: port: 8000 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apigateway-service cloud: gateway: routes: - id: first-service uri: http://localhost:8081/ #http://127.0.0.1:8081/first-service/welcome #이동될.. MSA (Spring Gateway 필터적용_02) # Spring Gateway에서 yml 파일을 사용하여 필터를 적용하는 방법에 대해서 알아보자. 1. 기존에 작성했던 JAVA 파일에서 @어노테이션 부분을 주석으로 막아준다. - FirstServiceConroller와 SecondServieController에 아래의 코드를 추가한다. @GetMapping("/message") //메세지라는 메소드가 실행됨에 있어서 "first-request" 헤더값을 받아오고, 그 값이 header안에 저장이 된다. public String message(@RequestHeader("first-request") String header) { log.info(header); return "Hello World in First Service."; - 그리고 아래와 같이.. MSA (Spring Gateway 필터적용_01) 1. Spring Gateway에 필터를 적용하는 방법에 대해서 알아봅시다. - application.yml 파일에서 해당 내용을 주석처리 해줍니다. - 주석처리한 내용은 JAVA에서 코드로 구현을 할 예정입니다. 2. 아래의 이미지에 있는 정보처렁 config -> FilterConfig.class 파일을 생성해 줍니다. 3. 생성된 FilterConfig.class 파일에 아래의 코드를 작성해 줍니다. @Configuration public class FilterConfig { @Bean public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) { return builder.routes() .route(r -> r.path("/first-serv.. 이전 1 2 다음