Polyglot application auto scaling service for platform as a service cloud
Platform as a service (PaaS) is a cloud delivery model that provides software services and solution stacks to enable rapid development, deployment, and operations in many languages and run-times (polyglot). These applications require capabilities to rapidly grow and shrink the underlying resources to satisfy their workload needs. Autoscaling is a service that enables dynamic resource allocation and deallocation to match application performance needs and service level agreements. In this paper we present the architecture and implementation of a polyglot autoscaling solution for IBM Bluemix PaaS. Our autoscaling service enables users to describe policies and set thresholds for scaling the applications based on CPU, memory and heap usage for applications developed in different languages (Java, Java Script, Ruby, etc). The autoscaling service consists of a set of monitoring agents, monitoring service, scaling service, and a persistence service. The service is developed with shared multi-tenancy model and offered as a managed cloud service. An application attached to the autoscaling service is monitored and its resources will be adjusted based on the autoscaling policies of the user and on the system conditions.