Skip to content
matthew hawthorne edited this page Jun 3, 2013 · 20 revisions

What is Zuul?

Zuul is an edge service built to enable dynamic routing, monitoring, resiliency and security.

Zuul sits at the edge of the Netflix cloud and routes requests to multiple Amazon Auto Scaling Groups as appropriate. Zuul has been accepting 100% of Netflix API traffic since May of 2012, and is currently being integrated with multiple other Netflix services.

Why did we build Zuul?

The volume and diversity of Netflix API traffic ensures that production issues arise quickly and without warning. We needed a system that would allow us to rapidly change behavior in order to react to these situations.

The flexibility of Zuul Filters enabled us to build a lot of functionality within our edge service, such as:

  • 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

Zuul Components

Zuul contains multiple components:

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

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

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

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