MSA

Zuul - API Gateway

Beekei 2021. 9. 11. 00:16
반응형

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 접속 후 확인


 

배민 API GATEWAY – spring cloud zuul 적용기 | 우아한형제들 기술블로그

{{item.name}} 서비스를 운영하고 개발하는 팀이라면, LEGACY라는 거대한 괴물이 얼마나 다루기가 힘든 일인지 동감 할 것이다. 이 괴물이 오래되면 될수록, 크면 클수록… 제가 운영하고 개발하고 있

techblog.woowahan.com

반응형