All of the instances in the Jelastic environment (like databases, app servers etc.) are independent virtual machines (containers) located on different hosts.
Three main reasons why Jelastic provides individual role-based servers are:
Scalability of Isolated Containers
In some cases as your application starts requesting more and more resources, the physical server running your node might not be able to provide the required resources. In this case, Jelastic can perform a live migration of the node to another host within 30 seconds.
During that migration, the application keeps working being scaled vertically. As an application scales within a server, other applications can be migrated to another server to make room. Live migration allows Jelastic to deliver all the needed resources for applications without restarting containers and causing application downtime. In addition, it can be used during maintenance or other planned downtime to perform automated evacuation of containers from a physical server.
Also you can add more instances to your environment using horizontal scaling, not having to worry if there is enough space on the host. Jelastic chooses the host with an appropriate amount of free space and relocates your server, in order to offer high-quality performance to each of your nodes.
High Availability for Apps
Jelastic platform provides the highest availability by distributing containers of one environment evenly on different physical servers (Hardware nodes). This is done with the help of anti-affinity groups configured to specify that certain virtual containers should never run on the same physical server.
Security of Isolated Containers
Jelastic uses the virtualization method to run multiple virtual machines (containers) simultaneously on a single host. These containers are fully isolated with no risk of interfering with one another. If the security of any container at the hardware node is compromised, the rest of the containers are left unaffected.
Note, that as all containers are isolated virtual machines, it's not possible to reach any services from another container by means of specifying localhost:port_number or 127.0.0.1:port_number.
This can be achieved only by specifying a private/public IP address or a hostname. For example, it is required for the connection to the database instance from the application.