Zuul이란?

YoungHo-Cha·2021년 11월 17일
0

Cloud

목록 보기
3/4
post-custom-banner

오늘은 Zuul에 대해서 알아보자.

🚗목차

  • API Gateway란?
  • Zuul 이란?
  • Zuul 서버 만들기

🧐API Gateway란?

Zuul을 이해하기 위해서는 API Gateway에 대해서 알아야 한다.

API Gateway는 API 서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화 해주는 또 다른 서버이다.

🔎좀 더 자세히

아래의 그림을 보자!

  • MSA로 서비스를 운영하면서 각 모듈마다 URI가 다르다. 이 때, API Gateway를 통해서 "example.io"로 단일화된 인터페이스를 제공해줄 수 있다.

  • "example.org"와 "example.com"의 모듈이 결합이 되어도 API Gateway에 테이블만 수정하면 된다. 아래의 그림을 보자!

  • API Gateway로 부적절한 모듈 접근을 제한할 수 있다.

  • API Gateway를 통해서 트래픽에 트레이스 작업을 수행할 수 있다.

  • 그 외 다양한 작업을 API Gateway를 통해 수행할 수 있다.

한마디로 MSA를 수행하면서 분산된 모듈들에 대한 요청을 1개의 인터페이스로 통합하는 것이다.


🧐Zuul이란?

Netflix에서 제공하는 API Gateway 또는 API Service 기술이다. 마이크로서비스 아키텍쳐에서 여러 클라이언트 요청을 적절한 서비스로 프록시 및 라우팅하기 위한 서비스이다.

🔎좀 더 자세히

  • Zuul은 JVM-based router 및 Server-side load Balancer이다.

  • Zuul은 내부적으로 Eureka 서버를 사용하고, 부하 분산을 위해 Ribbon을 사용한다.

  • Zuul 또한 Eureka Client이다.

  • Eureka 및 Ribbon과 함께 사용할 수 있도록 만들어진 기술이다.


🧐Zuul 서버 만들기.

  1. Spring Boot 프로젝트를 1개 생성한다.

  2. Dependency를 추가한다.

<dependencies>
	<dependency>
        <groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
    </dependency>
    <dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>
  1. application.yml에 Zuul 설정을 해준다.
#----------spring configuration 설정----------
spring:   
	application:     
    	name: zuul-api-gateway

server:
	port: 9999

#----------Eureka client 설정----------
eureka:   
  client:   
  	enabled: true
    serviceUrl:       
      defaultZone: http://localhost:8888/eureka/

#----------Zuul 설정----------

zuul:

  ## 라우팅 설정 항목
  routes:

    user-service:

  ## API Gateway path 설정
      path: /user/**

      service-id: USER-SERVICE
  1. "Application.java"파일에 필요한 어노테이션을 추가한다.

@EnableZuulProxy
@EnableDiscoveryClient
@SpringBootApplication
public class ApiGatewayServiceApplication {
  public static void main(String[] args) {
    SpringApplication.run(ApiGatewayServiceApplication.class, args);
  }
}
  • @EnableZuulProxy : 해당 어노테이션은 EnableZuulServer, PreDecorationFilter, RibbonRoutingFilter를 포함한다.

본격적으로 프록시 역할을 할 수 있게 되었다.

  1. "localhost:8080/user"와 "localhost:9999/user"의 결과가 동일한 것을 알 수 있다.

📋마치며

오늘은 Zuul에 대한 공부를 했다. 다음은 Ribbon에 대해서 알아보자!


🧷Reference

profile
관심많은 영호입니다. 궁금한 거 있으시면 다음 익명 카톡으로 말씀해주시면 가능한 도와드리겠습니다! https://open.kakao.com/o/sE6T84kf
post-custom-banner

0개의 댓글