Jelastic is a universal cloud platform that combines PaaS (platform as a service) and IaaS (infrastructure as a service) architectures. In Jelastic, you can deploy a Java, PHP, Ruby, Python, or Node.JS environment in a few minutes and run the application that is configured and ready for high load. At the same time, the ability to deploy via GIT, SVN, as well as plugins for IDEA, NetBeans, Eclipse, allows you to spend even less time on the deployment and more on development.
In this article we will talk about one of the latest updates of this platform - 2.5, which added a number of interesting features.

Scalability is one of the main requirements for a cloud platform. In addition to automated vertical scaling (increasing the number of cloudlet depending on the current requirements of the application), Jelastic also allows you to increase / decrease the number of servers in the environment, if necessary for the application.
Jelastic 2.5 release makes it possible to scale out not only the application servers, but also all other nodes in your environment, including:
')
- Database;
- nginx balancers;
- cache instances;
- VPS.
The only exception is the Maven node (a tool for building a Java project: compiling, creating a jar, creating a distribution package for a program, generating documentation), it does not need to be scaled.

At the same time, automatic horizontal scaling was added - the user can configure triggers, when triggered, new nodes will be automatically added to the environment. There are two types of triggers:
You just need to specify a timeout period and a limit on the use of resources (upper and lower) in percent. If the load level exceeds the specified upper limit, then the trigger is triggered and the time begins to count. If during the specified time the load level did not fall below the specified limit, then the trigger is triggered and a new node is added. In the same way the node is removed when the load is reduced.
The process of scaling is still simple: you just need to set the required number of nodes with the appropriate buttons in the wizard of the environment topology.

The maximum number of single-type nodes available may vary. Typically, this limit is 8 knots. All newly added nodes are created on different server nodes, providing even greater reliability and high availability.
Application servers
In previous updates, Jelastic has already added support for scaling out application servers. In version 2.5, each newly added host application server will copy the existing ones, that is, it will contain the same set of configurations and files inside. In case you already have several copies with different content and you add another one, the very first node will be “cloned”.
Load balancer
The first thing you should notice when increasing the number of application server instances is the automatically enabled nginx balancer that appears in the topology:
This server is practically placed "on the front line" of your application and becomes the entry point of your environment. Its main role is to process all incoming user requests and evenly distribute them between the specified number of application servers. This load distribution is based on HTTP balancing, although you can optionally configure TCP (for example, based on application requirements).
Increasing the number of nginx balancers makes sense if you want to improve the availability of your application and get several entry points. In this case, you need to have a public IP address for each balancer.
Each newly added nginx balancer node will copy the initial one (just as described for the application server nodes above).
Database
Now with Jelastic you can scale SQL and NoSQL databases:
Each newly added database node has its own host name (which consists of DB_name, node ID, and host environment) and administrator access credentials, which you will receive in separate letters after adding the node. In contrast to the approach with application servers and balancers, the new database node will be added to the cluster in its default state, that is, without copying data and settings.
However, you already have the opportunity to get a full cluster of two nodes with automatically configured master-slave replication, just a few clicks away.
Memcached
Adding multiple instances of Memcached to the application environment will improve its resiliency. For example, you can assign each node responsibility for a specific area of ​​application data, or even configure the application to store the cache on all nodes simultaneously. Thus, each server will contain a full cache duplicate, which eliminates the risk of possible application downtime or loss of cached data.
It is necessary to take into account that each new memcached-node created as a result of horizontal scaling of the source will contain a standard data set and configuration without any settings:
In addition, you can also use memcached clusters to store user sessions, which is especially useful when working with a large number of clustered application servers. Subsequently, they can be removed and reused by any application server in the cluster, if the original (which originally processed this session) fails. And your customers will not notice anything. You can configure multiple caching nodes added to the environment to store replicable sessions in each of them, ensuring that these sessions are available as long as at least one Memcached server is running.
VPS
The management of Jelastic Virtual Private Servers is easier - now you can add several VPS to one environment, there is no need to create a new environment for each of them. However, each VPS node remains an independent server for running individual applications:
Increasing the number of nodes for a VPS cluster adds a “bare” server by default. It is obvious that each node has its own hostname and administrator credentials, given in the corresponding e-mail, as well as a separate public IP-address.
So, summarizing the above, I would like to note the main feature of the update Jelastic 2.5 - the ability to scale horizontally any nodes. This allows users to increase / decrease the number of application servers in the environment, if this is required due to changes in the application load. This means that the application will be better able to handle the load and increase its resiliency for end users.
And another interesting announcement: in the near future, Jelastic expects support for the .NET platform, which will make it an even more universal environment suitable for deploying virtually any application.