반응형
Zuul 이란?
Zuul은 넷플릭스에서 만든 API Gateway로 그루비로 작성되었으며 filter 개념을 통해서 API Gateway에 추가 기능을 넣고 관리할 수 있다.
Microservice Architecture 에서 여러 클라이언트 요청을 적절한 서비스로 프록시하거나 라우팅하기 위한 서비스
Zuul을 왜 사용하는가?
- MSA를 구성하는 여러 서비스들의 엔드 포인트가 API 게이트웨이에 의해 단일화가 된다.
- 클라이언트로부터 시스템의 복잡도를 숨기는 효과 또한 기대할 수 있다.
- 다양한 형태의 요청과 많은 트래픽으로 생기는 문제를 신속하고, 동적으로 해결하기 위해서 groovy 언어로 작성된 다양한 형태의 Filter를 실행
Zuul Filter
Zuul Filter는 크게 4가지 Filter로 나누어 진다.
1. PRE Filter
라우팅전에 실행되며 필터이다. 주로 logging, 인증등이 pre Filter에서 이루어 진다.
2. ROUTING Filter
요청에 대한 라우팅을 다루는 필터이다. Apache httpclient를 사용하여 정해진 Url로 보낼수 있고, Neflix Ribbon을 사용하여 동적으로 라우팅 할 수도 있다.
3. POST Filter
라우팅 후에 실행되는 필터이다. response에 HTTP header를 추가하거나, response에 대한 응답속도, Status Code, 등 응답에 대한 statistics and metrics을 수집한다.
4. ERROR Filter
에러 발생시 실행되는 필터이다.
사용법
1. Zuul, Eureka-Client, Retry Dependency 추가
Zuul build.grade
dependencies {
...
compile('org.springframework.cloud:spring-cloud-starter-netflix-zuul')
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
compile('org.springframework.retry:spring-retry:1.2.2.RELEASE')
}
2. Main Class에 @EnableZuulProxy, @EnableDiscoveryClient 추가
Zuul main class
@EnableZuulProxy
@EnableDiscoveryClient
@SpringBootApplication
public class ZuulApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication.class, args);
}
}
3. application.yml 설정
spring:
application:
name: zuul
server:
port: 8765
zuul:
routes:
serviceA:
path: /serviceA/**
serviceId: serviceA
stripPrefix: false
serviceB:
path: /serviceB/**
serviceId: serviceB
stripPrefix: false
eureka:
instance:
non-secure-port: ${server.port}
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8761/eureka
4. http://loaclhost:8765/serviceA/list 접속 후 확인
반응형
'MSA' 카테고리의 다른 글
Spring Cloud Feign - Declarative Http Client (0) | 2021.09.11 |
---|---|
Eureka - Service Discovery (0) | 2021.09.10 |
Ribbon - Client LoadBalancer (0) | 2021.09.10 |
Hystrix - Circuit Breaker (0) | 2021.09.10 |
Twelve-Factors (0) | 2021.09.10 |