  Large scale applications are increasingly built by composing sets of
microservices. In this model the functionality for a single application might
be split across 100s or 1000s of microservices. Resource provisioning for these
applications is complex, requiring administrators to understand both the
functioning of each microservice, and dependencies between microservices in an
application. In this paper we present ThrottleBot, a system that automates the
process of determining what resource when allocated to which microservice is
likely to have the greatest impact on application performance. We demonstrate
the efficacy of our approach by applying ThrottleBot to both synthetic and real
world applications. We believe that ThrottleBot when combined with existing
microservice orchestrators, e.g., Kubernetes, enables push-button deployment of
web scale applications.
