From the very beginning of its development, Jelastic Cloud has been leveraging the containers virtualization technology for application deployment, lifecycle management, scalability and ZERO code changes, being a pioneer in using this currently trending and essential solution for services delivering. Moreover, it is a unique platform, which combines both PaaS and IaaS layers’ orchestration, and hence is endowed with numerous outstanding characteristics and possibilities.
One of the most significant and innovative Jelastic system’s features is an ability to automatically scale any container up and down, both vertically and horizontally, making hosting of your apps truly flexible. Such advanced scaling opportunities are especially beneficial for applications with load spikes and changeable load in general.
In our recent publications we’ve told about the particularities of the multi middleware stacks and tunable triggers usage, aimed to ensure the automatic horizontal containers’ scaling, and in this article we’d like to enlighten you on the specifics of the automatic vertical scaling implementation within Jelastic platform.
Automatic vertical scaling is made possible by Jelastic’s ability to change the amount of resources (RAM and CPU), provided to a container. This feature guarantees you never overpay for unused resources, ensuring a very granular and thus a fair pricing, and saves your time because there is no need for manual adjustments or architectural changes. You simply decide the maximum limit you are ready to consume and Jelastic automatically defines the optimal amount of resources required for your app, tracking the incoming load in real time.
Here is a simple example on how it works for the Magnolia application, hosted within Jelastic Cloud:
The vertical scaling feature is applicable for any type of container in an environment (i.e. application server, database, load balancer, Elastic VPS, cache instance and build node), providing an ability to scale all kinds of apps, including the stateful and legacy ones, and even those that were not designed for being horizontally scaled (what is not a trivial mission).
As soon as an application’s load grows, the platform simply makes additional resources available to it. When the load goes down again, the resources get reduced by the platform automatically. Changing the amount of allocated resources typically takes only 1 or 2 seconds and does not have any negative impact on your app.
Jelastic measures resources in special units called cloudlets, providing you with superior granularity while scaling. A cloudlet is roughly equivalent to 128 MB RAM and 200Mhz CPU core.
There are two types of cloudlets available: reserved and dynamic.
- The Reserved ones are used to define the amount of resources you expect your application will certainly consume and you pay for them irrespective of actual usage. However, they are charged at a lower price compared with dynamic ones.
- Dynamic cloudlets defines the amount of resources your application can access, based on necessity. You pay for them only in the case of real consumption.
Automatic vertical scaling is performed within the confines of the stated dynamic cloudlets number. You can configure your scalability limits with the appropriate settings – and thus effectively put caps on the budget you are ready to spend, preventing unexpected or high bills. Combine the usage of both cloudlet types in different ways choosing the most suitable pricing model.
More useful tips and proofs of benefits that you get with such an approach can be found in our recent articles:
A newly created environment receives a certain amount of cloudlets. Resource consumption depends on the type and quantity of your software stacks. Each stack has the default number of allocated cloudlets after it is added to the environment, according to the optimal resource amount required for it to correctly work. If you would like to change these values and scale your environment, the maximum number of available resources (cloudlets) can be increased/decreased manually through the Environment topology wizard. For that, use the cloudlet sliders in the Vertical Scaling section of its central pane.
All the changes are applied immediately after they are saved, without the necessity to reload the virtual machine.
In order to be able to predict the approximate amount of resources your application will require and state the suitable scaling limits according to it, you can use the automatically gathered statistics. It includes information about the consumption level during the last week for each node in your environment and displays it in a convenient graphic way.
In the case your application becomes highly popular and a single server’s capacity is not enough, feel free to scale it horizontally by means of increasing the number of nodes manually or configure a set of triggers for automatic horizontal scaling of your application server.It’s that simple! Though it is predictable such an approach will be subsequently implemented by other cloud vendors (just in the same way as it has happened with containers), Jelastic has been initially designed for providing developers with the most convenient and automated applications management, and thus is always a few steps ahead.