We continue to talk about solution development companies (ISVs) using the Microsoft Azure cloud. In this issue, we present the story of how Jelastic , which develops DevOps PaaS with the support of advanced orchestration of Docker containers, does it. Dmitry Lazarenko, director of business development Jelastic.

Good day!
Jelastic is a universal cloud platform that combines the ability to use PaaS (platform as a service) and IaaS (infrastructure as a service). Using Jelastic, you can greatly simplify the development of cloud services by setting up your environment in Java, Ruby, Python, PHP and / or Node.JS in a few minutes and placing a project in this environment using Eclipse, NetBeans or IDEA plugins. Last year, at the flagship Microsoft / build conference, support for Jelastic PaaS on Microsoft Azure platform resources was announced. About how it was, what led to and how everything works from the technical and technological side, read under the cut.
At present, the “coupling” of Jelastic and Azure from the side of technological solutions is as follows - the platform interacts with Azure in two ways:
- You can install it entirely in Azure IaaS and get your own private cloud. We also use virtual machines, virtual networks, and high-performance Azure storage systems.
- Computing resources from different Azure regions can be connected to a private Jelastic cloud deployed in their own data center, and thus, get a hybrid cloud. This scenario is in demand when customers do not have enough of their own computational resources and adding additional permanent capacity to their data center is not advisable due to the changeable load profile. For example, New Year's sale or “Habraeffekt”, which lasts only a few days, and then falls. In this case, we connect new virtual machines from Azure dynamically and use them to scale applications. Through the use of containerized virtualization technology, Jelastic can migrate applications between a private cloud and Azure regions in live mode without stopping the application. This technology greatly simplifies the process of transferring applications between data centers, making it absolutely transparent and secure.
Both of the above solutions can be installed automatically from the Azure Marketplace, a partner solutions store that is available to Microsoft Azure users.
')
The story of autoscaling to the Azure public cloud is also very relevant among large customers. Azure cloud, available in a large number of countries around the world, allows you to allocate the necessary resources as close as possible to the private data center of customers and, thereby, minimize network delays and time spent on data transfer. In addition, we integrated Azure Traffic Manager to enable highly available geo-balancing.
Now let's look at the technical component. The architecture of our solution is as follows - Jelastic will include a set of control services written in Java. These services include: orchestrator, security system, metrics collection system, billing, template pool management, etc. There is also a distributed entry point consisting of a reverse Nginx proxy server and the Bind domain name server. HTTP or TCP requests to end-user applications go through this entry point and are distributed to specific applications.

Jelastic users usually create environments with an architecture similar to the following:
- 2 Nginx servers for load balancing
- 2-4 Java application servers (Glassfish / Tomcat / Jboss) with replication of http session data
- SQL replication DBMS (PostgreSQL, MariaDB, Percona)
- NoSQL DBMS with replication (MongoDB, Redis, Cassandra, Neo4j)

In the process of deployment, despite the fact that, in general, the deployment took place without any problems, we had to adapt in some way the well-established architecture of the application to the specifics of Azure, which we would like to share. At first, there were several problems:
- Low performance of Azure Premium Storage on Linux. It turned out that this was a consequence of the incorrect size of the file system block, which was used by default. After we changed the block size from 63 to 4096, the performance of the Azure Premium Storage disk subsystem increased by several orders of magnitude.
- Strong filtering of network packets in virtual networks. This problem is relevant for us, because we use virtual containers distributed across multiple Azure virtual machines, and in fact Jelastic independently manages the internal network of containers. The problem was solved by creating an overlay network that works according to our rules.
- Restrictions on the number of external IP addresses that can be assigned to one virtual machine. At the moment, no more than 2 external IP addresses can be set for one VM. Since multiple virtual containers can work in one Azure VM, they could need more than 3 IP addresses. The problem was solved by applying reserved IP (Reserved IP).
We have several goals to interact with Microsoft Azure and provide our platform through the Azure Marketplace:
- Increasing the number of large customers who are interested in PaaS for Java and other Open Source technologies on top of Microsoft Azure
- Launch of joint sales of Jelastic and Microsoft to corporate customers, including the international market.
At the moment there are already some excellent results:
- Several international companies are interested in our Azure solution.
- Our solution was promoted within the start-up support program Go-to-Market accelerator . In particular, this program included promotion through the Microsoft blog and Twitter, a success story on the Microsoft resource and a grant for an advertising campaign. One large oil and gas company in Latin America became interested in our Azure solution. This was preceded by a lot of collaboration with Microsoft in Brazil.
There are some positive aspects in using Azure, as the platform gave us the opportunity to significantly simplify and speed up the installation of Jelastic for the end user. Previously, this process took several days and required the involvement of our deployment engineers. Now, using the Azure Marketplace, the client can independently deploy an isolated Jelastic cluster and this will take only half an hour. If we talk about how we did it, how we moved, then, as such, there was no transition: with the help of Azure and Azure Marketplace, we simplified and accelerated the installation of the product, leaving behind alternative options. The work on creating a solution for the Azure Marketplace took about a month and a half of the work of our developers and deployment engineers, but these costs paid off after 3-4 months.
A detailed tutorial on how to use Jelastic on Azure is
available on the Jelastic website .