With the continuous progress of cloud computing, many microservices and complex multi-component
applications arise for which resource planning is a great challenge. For example,
when it comes to data-intensive cloud-native applications, the tenant might be eager
to provision cloud resources in an economical manner while ensuring that the application
performance meets the requirements in terms of data throughput. However, due to the
complexity of the interplay between the building blocks, adequately setting resource
limits of the components separately for various data rates is nearly impossible. In
this paper, we propose a comprehensive approach that consists of measuring the resource
footprint and data throughput performance of such a microservices-based application,
analyzing the measurement results by data mining techniques, and finally formulating
an optimization problem that aims to minimize the allocated resources given the performance
constraints. We illustrate the benefits of the proposed approach on Cortex, an extension
to Prometheus for storing monitored metrics data. The data-intensive nature of this
illustrative example stems from real-time monitoring of metrics exposed by a multitude
of applications running in a data center and the continuous analysis performed on
the collected data that can be fetched from Cortex. We present Cortex’s performance
vs resource footprint trade-off, and then we build regression models to predict the
microservices’ resource consumption and draw a mathematical programming formulation
to optimize the most important configuration parameters. Our most important finding
is the linear relationship between resource consumption and application performance,
which allows for applying linear regression and linear programming models. After the
optimization, we compare our results to Cortex’s recommendation, leading to a CPU
reservation reduced by 50–80%.