Performance Model Derivation for Cloud-based Microservices Applications
Anshul Jindal · 2018
Microservices application being a distributed system allows deployment of individual services to physically separated different or same cloud virtual machine (VM) instances. Each microservice is responsible for completing their part and communicate with others through language and platform-agnostic application programming interfaces (APIs). These microservices when deployed on a VM uses many system resources (e.g., CPU, memory, disk I/O, and network I/O) to process user requests. The resource usage varies according to the type of task (CPU intensive, memory intensive or Create Read Update Delete (CRUD)) microservice's is doing. The resources usage change with the variation in the number of user requests or the user workload. Depending on the type of work, particular resource usage will have a more significant effect than others. As a result, at a certain stage, the response time of requests would go beyond the desired time. The maximum number of requests that could be served within this time is called as the Maximum Service Capacity (MSC) of the microservice. Performance of a microservice is directly related to the MSC. Automatically detecting MSC for each microservice can be challenging in practice as microservices applications are deployed using multiple abstraction layers. These numerous abstraction layers result in additional overhead for the indirect usage of hardware resources and also obscuring the run-time details. This challenge grows more with the availability of the different deployment configurations (e.g., Virtual machine type, Cloud service provider, deployment strategy, etc.). MSC varies with varying configurations of deployment. This thesis aims to address this problem of identifying the MSC for each microservice of the application by building the performance model of it in all the possible deployment configurations. A novel approach to microservice's performance modeling and sandboxing microservices from an application is introduced in this research. This approach is implemented in a tool called as Terminus. The proposed tool predicts the MSC of the microservice on different deployment configurations by training a model from the conducted tests. The derived results from the tool could also be used to find out the bottleneck microservice along with the number of microservice replicas needed for achieving adequate performance.