Solution Strategy

The proxy will be based on Netflix Zuul 2.

Quality Requirements

  • Routing Performance: Netflix uses Zuul 2 to route each L7 request of their streaming service. Given the large user base and very high amount of concurrently handled requests at Netflix, we are confident that their solution fulfills our needs. On the network layer and within the application logic layer (routing, LB) its implementation follows a non-blocking, event/callback-based programming pattern, which is ideal for low-latency and high-throughput requirements.

  • Robustness and Reliability: Netflix uses Zuul 2 in production for more than two years as of December 2018, it was open-sourced in 2016. The project is actively maintained and has no severe open community bug reports. It is planned to utilize Zuul’s built-in capabilities as much as possible and only extend it with own application logic where necessary.

  • Operability: A lightweight Linux service based on Systemd will be built, that manages the underlying Java application. A Gradle-based build script will take care that Linux packages as well as Docker container images can be produced. For logging, Logback will be included and pre-configured. App Suite operators are already familiar with that system, as it is used in App Suite MW, too. For monitoring, a set Java MBeans providing application metrics will be made available. Eventually an HTTP layer for those will be added on-top. In addition, there will be a HTTP /health endpoint, to verify the proxy application’s health status.

Architecture Constraints

Basing the proxy on Zuul 2 fulfils all constraints. A solid foundation for L7 request/response processing, routing and load balancing is already given. The 3rd party dependency is under a permissive open source license (Apache 2). The system is already designed to run on commodity hardware.