Skip to main content
Engineering

Why We Leverage Multi-tenancy in Uber’s Microservice Architecture

11 March 2020 / Global
Featured image for Why We Leverage Multi-tenancy in Uber’s Microservice Architecture
Figure 1. In System 1, Service A processes a request from System 2 by connecting to Service B, which in turn interacts with Service C and Service D to finish the request.
Figure 2. Parallel testing requires that engineers create a staging environment to handle test traffic and determine if the production stack will meet SLAs.
Figure 3. With a multi-tenant production stack, we can test new or updated microservices alongside production services.
Figure 4. Creating shadow traffic to test services involves routing a copy of production traffic out of the production stack and into a safe testing area.
Figure 5. We can apply tenancy routing at the ingress to a service, in the above example sending test traffic from production service Ap to its test instance, A1.
{
   “request-tenancy” : <product-code>/<tenancy-id>/<tenancy-tags>…
   “services_under_test” : [
       “foo” : {
           “redirect” : <test instance Id>,
           },
           …
      ]
}
Figure 6. Using tenancy to route data and messaging queue test traffic to separate components under test isolates this test traffic so it cannot interfere with production systems.
Amit Gud

Amit Gud

Amit Gud is a senior software engineer on Uber's Infrastructure team.

Posted by Amit Gud

Category: