https://spring.io/projects/spring-cloud-gateway
API Gateway는 프록시와 비슷한 역할을 합니다. API Gateway는 클라이언트의 요청을 받아서 내부의 서비스로 보내고, 다시 내부의 서비스에서 온 응답을 클라이언트에게 전달해줍니다.
초창기에는 클라이언트 쪽에 Load Balancer를 놓는 서비스인 Ribbon을 제공했습니다. Ribbon을 통해서 서비스를 이름으로 호출할 수 있었고, Health Check를 할 수 있었습니다. 그러나 요즘 사용하는 Reactor와 맞지 않는 동기방식을 사용하고 있어서 많이 사용되지 않고 있습니다.
다음으로 Zuul이라는 서비스가 나왔습니다. Zuul은 API Gateway 형식을 갖추고 있습니다. 그러나 비동기 방식을 여전히 사용하고 있어서 최근에는 많이 사용하지 않고 있습니다. 비동기 방식을 보완하기 위한 방식이 나왔지만, Zuul의 태생이 Spring Cloud가 아닌 이유 때문에 잘 안 맞는 면이 있습니다. 그래서 Spring Cloud 팀에서 Spring Cloud Gateway를 제공합니다.
Spring Cloud Gateway는 비동기 방식으로 동작합니다. API Gateway에서 많이 사용되고 있습니다.
Spring Cloud Gateway (이하 SCG)의 내부 구조를 보면 아래와 같습니다. 요청이 오면 Predicate에서 조건을 확인합니다. 그리고 Pre Filter에서 여러 필터를 거쳐서 나갑니다. 처리가 된 요청은 Post Filter를 거쳐서 클라이언트에게 돌아갑니다.
아래 이미지는 github의 프로젝트의 구성도입니다.
'IT > Spring Cloud' 카테고리의 다른 글
Catalogs Microservice (0) | 2021.12.15 |
---|---|
User Microservice - 회원 등록 (0) | 2021.12.13 |
애플리케이션 개요 (0) | 2021.12.08 |
Service Discovery (0) | 2021.12.05 |
Spring Cloud란? (0) | 2021.12.05 |