Back to All Awards
Expo People's Choice Exhibit Co-Winner
Towards Multiple Metrics-Based Autoscaling for Node.js Applications

Containerization-based deployment is widely practiced by organizations, because of its lightweight and portable nature. The containers are managed by orchestrators, such as Kubernetes to ensure reliability and scalability among other properties. Autoscaling is an essential part for cloud applications and thus Kubernetes's Horizontal Pod Autoscaler (HPA) makes scaling decisions utilizing metrics such as CPU and memory utilization to achieve efficiency. However, application-oriented metrics, such as HTTP requests per second, can be used, as well, to further enhance the autoscaling efficiency. Node.js applications can take advantage of custom-based autoscaling with a combination of specialized and generic metrics to enable more informative autoscaling decisions. Node.js is a JavaScript framework with an asynchronous and event-driven architecture that runs on top of Google's V8 JavaScript engine, and it is widely used for writing server-side code. To this end, we are conducting an analysis on the suitability of a wide range of Node.js-specific metrics, including event loop lag and garbage collection patterns, as certain garbage collection operations interrupt the processing, and other generic metrics such as the amount of memory used (virtual and external) and CPU utilization. Our goal is to analyze and extract meaningful trends and patterns from not only commonly used metrics but application-specific ones, as well. Overall, we want to explore different ways and models to utilize different combinations of these metrics in order to make informative scaling decisions and improve response time performance and recourse (pod/container) utilization.

Nancy Chahal, University of New Brunswick
Maria Patrou, University of New Brunswick
Kenneth B. Kent, University of New Brunswick
Joran Siu, IBM
Michael Dawson, IBM