[Spring Cloud Zuul] What is Zuul?

2017. 1. 18. 14:38Spring/Spring Cloud Consul

What is Zuul?




What is Zuul?


Zuul is the front door for all requests from devices and web sites to the backend of the Netflix streaming application

Zuul 은 장치 및 웹 사이트에서Netflix 스트리밍 응용 프로그램의 백엔드에 대한 모든 요청 처리를 하기위한 front door 입니다.


As an edge service application

edge 서비스 응용프로그램


Zuul is built to enable dynamic routing, monitoring, resiliency and security

Zuul은 동적 라우팅, 모니터링, 탄력성 및 보안 기능을 제공합니다.


It also has the ability to route requests to multiple Amazon Auto Scaling Groups as appropriate.

또한 필요에 따라 여러 개의 Amazon Auto Scaling Group으로 요청을 라우팅 할 수 있습니다.



Why did we build Zuul?


The volume and diversity of Netflix API traffic sometimes results in production issues arising quickly and without warning.

Netflix API 트래픽의 규모와 다양성으로 인해 가끔 경고 없이 문제가 발생합니다.


We need a system that allows us to rapidly change behavior in order to react to these situations.

우리는 이러한 상황에 대응하기 위해 행동을 신속하게 바꿀 수 있는 시스템이 필요합니다.


Zuul uses a range of different types of filters that enables us to quickly and nimbly apply functionality to our edge service.

Zuul은 다양한 유형의 필터를 사용하여 신속하게 가장자리 서비스에 기능을 적용 할 수 있습니다.


These filters help us perform the following functions:

이 필터는 다음과 같은 기능을 수행하는 데 도움이 됩니다.


Authentication and Security - identifying authentication requirements for each resource and rejecting requests that do not satisfy them.

인증 및 보안 - 각 자원에 대한 인증 요구 사항을 식별하고 이를 만족시키지 않는 요청을 거부합니다.


Insights and Monitoring - tracking meaningful data and statistics at the edge in order to give us an accurate view of production.

통찰력 및 모니터링 - 의미 잇는 데이터 및 통계를 추적하여 정확한 생산 보기를 제공합니다.


Dynamic Routing - dynamically routing requests to different backend clusters as needed.

동적 라우팅 - 요청을 다른 벡엔드 클러스터로 동적으로 라우팅 합니다.


Stress Testing - gradually increasing the traffic to a cluster in order to gauge performance.

스트레스 테스트 - 성능을 측정하기 위해 트래픽을 클러스터로 점차 증가 시킵니다.


Load Shedding - allocating capacity for each type of request and dropping requests that go over the limit.

로드쉐딩 - 각 요청 유형에 대한 용량 할당 및 한계를 초과하는 요청 삭제


Static Response handling - building some responses directly at the edge instead of forwarding them to an internal cluster

정적 응답 처리 - 일부응답을 내부 클러스터로 전달하는 대신 에지에서 직접작성


Multiregion Resiliency - routing requests across AWS regions in order to diversify our ELB usage and move our edge closer to our members

Multiregion Resiliency - ELB 사용을 다양화하고 회원들에게 더 가까이다가가기 위해 AWS 지역에서 요청을 라우팅 합니다.



Zuul Components(Zuul 구성요소)


Zuul contains multiple components:

Zuul에는 여러 구성요소가 있습니다.


zuul-core - library which contains the core functionality of compiling and executing Filters

zuul-core - 컴파일러와 실행의 핵심 기능을 포함하는 라이브러리


zuul-simple-webapp - webapp which shows a simple example of how to build an application with zuul-core

zuul-simple-webapp - zuul-core로 애플리케이션을 빌드하는 방법의 간단한 예제를 보여주는 webapp


zuul-netflixlibrary which adds other NetflixOSS components to Zuul - using Ribbon for routing requests, for example.

zuul-netflix - 예를들어, 라우팅 요청에 Ribbon을 사용하여 Zuul에 다른 NetflixOSS 구성요소를 추가하는 라이브러리


zuul-netflix-webapp - webapp which packages zuul-core and zuul-netflix together into an easy to use package

zuul-netflix-webapp - zuul-core 및 zuul-netflix를 함께 사용하기 쉬운 패키지로 패키지하는 webapp




How We Use Zuul At Netflix( Netflix에서 Zuul을 사용하는 방법 )



Overview


Zuul gives us a lot of insight, flexibility, and resiliency, in part by making use of other Netflix OSS components:

Zuul은 다른 Netflix OSS 구성요소를 사용하여 부분적으로 많은 통찰력, 유연성 및 탄력성을 제공합니다.


Hystrix is used to wrap calls to our origins, which allows us to shed and prioritize traffic when issues occur

Hystrix는 문제가 발생했을 때 트래픽을 차단하고 우선 순위를 지정할 수 있도록 호출을 원래 위치로 되돌리기 위해 사용됩니다.


Ribbon is our client for all outbound requests from Zuul, which provides detailed information into network performance and errors, as well as handles software load balancing for even load distribution

Ribbon은 네트워크 성능 및 오류에 대한 자세한 정보를 제공하고 부하분산을 위한 소프트웨어로 로드밸런싱을 처리하는 Zuul의 모든 아웃바운드 요청에 대한 Client입니다.


Turbine aggregates fine­grained metrics in real­time so that we can quickly observe and react to problems

Turbine은 실시간으로 세분화 된 메트릭을 집계하여 신속하게 문제를 관찰하고 이에 대응할 수 있습니다.


Archaius handles configuration and gives the ability to dynamically change properties

Archaius는 구성을 처리하고 속성을 동적으로 변경하는 기능을 제공합니다.


Surgical Routing


We can create a filter to route a specific customer or device to a separate API cluster for debugging.

특정 고객이나 장치를 디버깅을 위해 별도의 API 클러스터로 라우팅하는 필터를 만들 수 있습니다.


Prior to using Zuul, we were using Hadoop to query through billions of logged requests to find the several thousand requests we were interested in.

Zuul을 사용하기 전에,  우리는 Hadoop을 사용하여 우리가 관심을 갖고 있던 수천 개의 요청을 찾기 위해 수십억 개의 요청을 기록해 왔습니다.


Stress Testing


Multi-Region Resiliency


Zuul is central to our multi-region ELB resiliency project that we call Isthmus.

Zuul은 우리가 lsthmus라고 부르는 다중지역 ELB 탄력성 프로젝트의 핵심입니다.


As part of Isthmus Zuul is used to route requests from the west coast cloud region to the east coast to help us have multi-region redundancy in our ELBs for our critical domains.

lsthmus Zuul의 일환으로 West Coast Cloud 지역에서 East Coast로 요청을 라우팅하여 중요한 도메인에 대한 ELB에서 다중 지역 중복을 지원합니다.