Understand Jelastic
All our infrastructure lays on Jelastic Virtuozzo for now. Previously known as Jelastic, we refer as Jelastic the Virtuozzo plateform.
Jelastic is a cloud platform software vendor that provides multi-cloud Platform as a Service-based on container technology for hosting service providers, ISVs, telecommunication companies, enterprises and developers. The platform is available as public cloud in over 70 data centers, as well as virtual and on-premises servers. Jelastic provides support of Java, PHP, Ruby, Node.js, Python, Go environments, custom Docker containers and Kubernetes clusters. (source: https://en.m.wikipedia.org/wiki/Jelastic)
We use Jelastic with a set of docker container, with a preference for alpine images when possible.
Cloud Scripting and Apis
Jelastic offers two ways to interact programmatically with the infrastructure:
- Cloud scripting: YML files that describes a set of actions. We can then “install” these files through the API.
- API: A REST-like api
Both cloud scripting and apis use the same naming logics, let’s explore some basics to understand the voca codebase.
Links
Jelastic basics
You can try to open a Jelastic on the provider you want (Providers list). You generally have a 30days free tiers to be able to tests.
Jelastic is similar to other tecnologies for docker hosting, let’s start with what you see when you log on your jelastic environment:


EnvGroups

EnvGroup is a tag associate to your environments. Environnements Group is just a commodity to be able to group environment by EnvGroup. They are organized in tree:

Depending on your Jelastic Provider, you can define Network Isolation based on the envGroups. This allow to isolate networks between environments, and it is much needed in Voca.
Links
- Cloud Scripting EnvGroups
- Virtuozzo EnvGroup Documentation
- API documentation to change EnvGroups
- Private Network Isolation
Environment

An environment is the container for severals Layers (NodeGroup). Each layers can have one docker image associate, with environment variables, volumes, links, etc. An environment have by default an url that can be exposed or not (SLB
), and can be served under SSL.
NodeGroup (Layers)
NodeGroups, sometimes called Layers in the Virtuozzo Documentation hold nodes and configurations like volumes and links between NodeGroups.
By default, some NodeGroups are already available:
- load balancer (LB)
- compute (CP)
- database (DB)
- data storage (DS)
N.B “Extra” NodeGroup: You can add as many NodeGroup
you want programatically, and they will share the same characteristics as the defaults one. On the UI side, extra NodeGroups will be shown in the Extra
section, but extra
is not a layer, just a commodity.
Exemple: I create a NodeGroup decidim-sidekiq
it will appear in the UI as extra
, but I will still able to target the NodeGroup decidim-sidekiq
with the API.
Links
Nodes (Containers)
Nodes, or Containers are the running instance of the docker image selected in the associate NodeGroup. All the nodes mounted by Jelastic have some “Virtuozzo” spices installed on deployment, to allow ssh connexion to the container, STD_OUT log rotations and file exploration.
A node have a LAN ipv4 that is accessible to by default to all the others environments inside the same Jelastic account. It can have a public ipv4 as well.
N.B There are several official jelastic/*
docker images that are available. Even it is tempting to uses them, we consider this as a bad-practice: We want to avoid vendor-lock-in as much as possible — prefer alpine
images.
Links
- Virtuozzo Terminology: Containers
- Cloud Scripting: Node Definitions
- Cloud Scripting: Topology Node Management
Cloudets
Cloudlet is the smallest platform infrastructure component. It is a special resource unit that equals to 128 MiB of RAM and 400 MHz of CPU power simultaneously. Such high granularity of resources allows the system to allocate the exactly required capacity for each instance in the environment. This ensures the truly fair usage-based pricing, so that only the really consumed resources are being paid. (source: Virtuozzo Terminology: Cloudets)
The most essential information is this one: a cloudet represent a fix limit, that can be scaled vertically.
128 MiB | RAM |
---|---|
400 MHz | CPU |
A typical rails application will open up to 1GB RAM, with 3 workers of 5 threads (15threads).
Volumes
🚧 This section is not ready yet
Links
🚧 This section is not ready yet