Spring Cloud Gateway
-
Spring cloud gateway - 5. Eureka를 통해 서버 연결하기Spring Cloud/Spring Cloud GateWay 2023. 12. 14. 14:23
이 글을 쓰기 위해 중간에 Spring cloud eureka 글을 썼다. 이전 글까지는 gateway에서 client의 주소를 직접가지고 있어서, EKS라던지 서버가 새로 구성 될 때마다 주소가 변경되면 gateway application.yml에 적힌 각 서비스의 주소도 변경을 했어야 하는데, 이젠 주소를 Eureka Server가 registry에 등록하고 있고, Client가 그것을 참조하니 gateway도 각 서버의 application name만 알고 있으면 된다 (EKS 같은 K8S환경에서는 Eureka를 사용해도 되지만, service.yml에 등록된 이름으로도 서로 통신이 가능하여 eureka를 안써도 된다) gateway를 제외한 나머지 서비스들은 Spring cloud eureka에서..
-
Spring cloud gateway - 4. filter를 통해 Path 수정하기Spring Cloud/Spring Cloud GateWay 2023. 12. 13. 15:44
저번 글에서 클라이언트가 MSA환경의 모든 서버의 주소를 알고 있어야하는 이슈를 해결하기 위해 gateway의 주소에 서버이름의 path를 붙여 보내면 gateway가 알아서 route를 하도록 했었다. 그런데, gateway의 조건문 때문에 서버도 똑같이 자기 서버이름의 path를 계속해서 써야하고, 그것을 생각 안하기 위해서 yml에 context-path를 붙여 사용했다. 그렇게 되면 API 경로가 /users/api/v1/users 로 users가 중복되어, 내눈엔 이상해보였다. 그래서 이번에는 서버는 자기 자신의 이름을 붙일 필요가 없고, 클라이언트는 붙이되 gateway에서 해당 경로조건을 인식하고 조건 path를 떼어 보내도록 작성하려고 한다. 코드 Spring cloud gateway 공식..
-
Spring cloud gateway - 3. 경로를 이용하여 Route하기Spring Cloud/Spring Cloud GateWay 2023. 12. 13. 14:57
각 서비스 별로 서버가 분리되어있는 MSA환경에서 클라이언트가 각 서버로 요청을 하려면 모든 서비스의 주소를 알고 있어야 한다. 이 것을 해결하기 위해 gateway로 해당 서비스의 이름을 넣는 Path를 보내고, gateway에서 해당 Path를 조건식으로 갖는 설정에 맞춰 그곳으로 API를 보내는 방식을 사용한다. 코드 공식문서를 보면 Path Route Predicate Factory가 있다. yml에 위 같이 내용을 적으면 Route를 시켜주는 것 같다. id : 해당 라우트 식별자 url : 조건이 맞으면 요청 할 주소 predicates: 조건식이고 위 내용은 'Path가 /red/{segment} 또는 /blue/{segment} 가 포함되어 있으면' 이 조건 식 인 것 같다. segment..
-
Spring cloud gateway - 2. Spring cloud gateway 프로젝트 만들기Spring Cloud/Spring Cloud GateWay 2023. 12. 11. 17:32
Dependencies에 기존엔 Spring Web을 했다면 이번엔 웹 WebFlux를 사용하기위해 Spring Reactive Web을 사용했다. 공식 문서를 보니 이제 Spring cloud gateway MVC란 것이 생겨서 Spring MVC 로도 gateway를 만들수 있는 것 같다. 그래서 Reactive Gateway와 그냥 Gateway 2가지로 나눠져 있는데, WebFlux를 사용해보기 위해 Reactive Gateway를 선택했다. 이건 설정하지 않아도 되는데, 보통 gateway는 80포트 (http 기본 포트)를 많이 사용한다고 한다. https인 443도 있는데, 백엔드 서버까지 넘어오기 전에 앞단에서 https를 까서 http 요청으로 바꾼다고 한다 프로젝트를 실행해보니 기존 t..
-
Spring Cloud Gateway - 1. Spring Cloud Gateway란Spring Cloud/Spring Cloud GateWay 2023. 12. 11. 17:07
4.1.0으로 공부하였습니다. 영상을 찾아봤는데, 공식 다큐먼트가 잘되어있다고 해서 찾아봤다. 번역기를 돌려보면 스프링6, 스프링 부트 3 및 반응형 프로젝트에 구축된 API 게이트웨이다. 라고 하는 것 같다. 인터넷을 찾아봤는데, Spring MVC는 하나의 동기형? 방식으로 하나의 스레드가 하나의 일을 처리하는 구조인데, javascript의 promise처럼 비동기 방식으로 동작하는 기능을 하기위해 Spring WebFlux라는 것이 개발되었다고 한다. Spring cloud gateway는 저런 Spring WebFlux방식으로 개발된 기능이고, 클라이언트의 요청을 특정 조건(predicate)을 만족하는 주소로 보내는 역할을 한다고 한다. 프로젝트에 어떻게 적용시켜주는지 알려주는 것 같다. 그 ..