© 2020 Strange Loop
Zuul 2.0 is the latest iteration of the gateway application fronting Netflix's API and underlying microservices. It was borne of a need to handle an ever-growing amount of traffic and a similarly ever-growing number of microservices to front. We largely rebuilt Zuul from the ground up, leveraging the Netty framework for its high-performance, non-blocking, event-loop architecture and combined it with RxJava interfaces for a simpler programming model in our filters. Despite our lofty performance expectations for this project we ended up with some mixed results and can definitively say that going asynchronous, non-blocking is not a panacea.
This talk will be a deep dive into how we progressively refactored and rebuilt Zuul from a blocking Tomcat application to a non-blocking Netty application and the results we have seen from running it in production over the last year. Specifically, I will review the journey of combining the RxJava and Netty frameworks in rebuilding Zuul, discuss how to make the decision on whether your systems need to be non-blocking, and provide the good and bad with some real-world scenarios.
Arthur works on the Cloud Gateway team at Netflix, whose main duty is developing and operating the Zuul gateway, fronting all of Netflix's cloud traffic. He has acquired a breadth of experience by working at companies of all sizes, and experiencing the challenges faced by early products and legacy ones alike. His passions include building large-scale distributed systems and drinking copious amounts of coffee. Please come find him if you'd like to argue about programming languages, web servers or hockey teams.