- Author's column
- Cloud Evolution
My name is Volodymyr Melnyk, and I am the technical director of Tucha. I want to share some observations and conclusions that I made during this year, as well as talk about the prospects for further development of the cloud computing industry in Ukraine.
We will talk about a real cloud - an environment of distributed computing and scalable storage, designed to ensure the operation of applications and storage of their data. This is not exactly the same as virtual machines, which functionally are no different from physical servers, and in many ways surpass them, because they are more reliable and at the same time easy to maintain. We, the operators, are used to being proud of this full functionality, but is it always exactly what is needed to solve the customer's task?
The company Tucha has been providing cloud computing services since 2012. But mentioning this fact, I must say that our first clients appeared in that year. And the understanding that this area has certain prospects in the Ukrainian market came to us appeared even earlier, in 2011. This was the reason for the active work on the creation of the first products and their promotion to the market.
I remember quite clearly how 8 years ago we contacted our first potential customers, who could not understand what kind of clouds we were talking about, and why they needed them. One of the IT managers of an agricultural holding did not even immediately realize that it was not about clouds hanging above the ground and pouring rain on endless cornfields. :-)
It was a very long time ago, cloud computing had not only "become mainstream" yet: very few people in Ukraine even imagined what it is and what it is for. IT infrastructure of most enterprises, as a rule, consisted of physical servers installed in the hermetic zone of a data center or server rooms in an enterprise's offices. Some smartish guys kept such servers in rented apartments, where, from time-to-time power outages happened or some other poltergeist appeared in the form of a late great-great-grandfather spirit, which disabled pairs in RAID arrays. However, they were not interested in cloud computing at that time: "What are these clouds? We are doing well as it is."
And, you know, everyone is doing well now too. Allegedly.
And when everyone is doing well and there seems to be no demand for any new services, operators can only brag about the number of certificates, petabytes of capacities, and market shares. There are no new services because service providers do not see any demand.
I should note right away: I think that virtual machines, especially machines running in the reliable cloud— are a great tool. Our company has been using them for more than 10 years to solve various tasks, and I can say that I am a fan of virtual machines. Fortunately, it is no longer necessary to talk about their advantages in 2019, so let us talk about some... if not disadvantages, then, features.
Imagine that we are going to leave, for example, on a business trip or vacation. Packing our bags. You can put a lot of things in suitcases (in my family, for example, there are real professionals of this "Tetris"). But if we put each item in a separate box, our suitcases will fit much fewer items, right?
Sometimes using virtual machines is about the same as packing things in different boxes, since each virtual machine is a small full-fledged server (we are still proud of this usefulness, remember?). Therefore, the server has processors allocated to it, its own RAM, and disk storage. Resources are allocated with some excess, because if the load increases dramatically, resources will have to be added, and this is often accompanied by a restart of the virtual machine. And these resources, as a rule, are either simply not used (although they occupy space in the suitcase) or are wasted (do not forget that each virtual machine carries its own operating system with a bunch of components), even though these systems are the same in different virtual machines.
Of course, the operator is incredibly happy about this. Especially when used virtualization technologies allow de-duplication of data in storage and RAM.
And so we arrived at our destination. It so happened that we managed to lose one of the suitcases. Maybe we could find it. But it still means that even in this case, the content of this suitcase will not be available to us for a while. Something will have to be bought or we will have to go without something at all. And so, having stayed in an unfamiliar city without underwear, we, postponing less important, although more interesting things, hurry to buy new ones.
I am not even talking about accidents on the side of the data center, which lead to interruptions in the operation of certain virtual machines. A virtual server running a single instance of a particular service may fail even without the influence of any factors from the environment in which it operates. And the number of ways to shoot yourself in the foot (although on the virtual server, although physically) theoretically has no restrictions.
But if we did not have any suitcases at all, and all we would need is a hotel that accepts us and meets our specifications? Then we would bring with us (or even send in advance) only clear instructions on what kind of underwear and what color we want to find in the closet every day, what our tea should be, what suit we need on Monday, and which shorts we need on Tuesday. At the same time, we could change any parameters at any time: "I need 3 times more coffee today than usual," "Tomorrow I want to wear polka dot socks, and the day after tomorrow — striped," "In the morning I want the windows that look the east, and in the evening — to the west."
At the same time, you can make such specifications yourself, you can download something ready from the network and, if necessary, adjust it to your taste. And, no matter what happens, as long as we have our specifications, we can instantly reproduce what we need in the required quantity. Did you get your favorite suit dirty? There is no need to take it to the dry cleaners: we do not need it, as well as hotels; because the hotel simply destroys it and gives us a new one.
Thus, we do not need to carry any suitcases with us. We have a set of manifestos that describe the entire architecture. Based on these manifests, an orchestration system creates the entities we need when we need them and removes them when they are no longer needed.
This is IaaC - infrastructure-as-a-code.
This is the real cloud.
What else is typical for such a cloud? In the real cloud, the components that ensure the operation of the service work simultaneously on several nodes that are independent of each other.
It is the paradigm that is becoming increasingly popular: we no longer run a monolithic application in a single instance. Human civilization has finally come to the point when splitting an application into many microservices and running these microservices in the cloud in the amount that is necessary according to the current load on each of them.
The online service will not stop working if one of the many nodes suddenly fails, because the same replicas of the same container work on all nodes, and the system instantly excludes the node that fell out of the list of requests recipients.
That is a whole farm instead of one beloved cow.
Those who already know the topic well, also understand what is typical for the cloud.
The ability to run the required number of instances of the same microservice is an opportunity to easily experience sudden load jump without the need to urgently add processor cores and RAM on the server (and most often - with system reboot).
I am not talking about metrics monitoring, event log analysis, automatic horizontal scaling, and other wonders of technology.
And how can we not mention those companies that themselves develop certain software products and provide online services available to millions of users.
Last year we came across the fact that all of them are to some extent interested in CI/CD processes automation. If we average it out, our customers wanted to see it in the form of such a chain:
- the programmer makes another Commit;
- the development platform does change analysis;
- the code is compiled with reference to these changes,
- unit tests are run, check, nothing is broken;
- the latest version of the application gets to the stage first, where it is tested by QA engineers;
- the latest version of the application carefully goes to production, while the system first launches new containers, makes sure that they feel good, and only after that switches traffic to them.
And the most important thing about it is this: it all happened automatically. That is, without the participation of people who already have something to do.
Usually, to ensure all these processes a company that provides online services hires DevOps specialists or outsources these tasks. And some are used to contacting specialists from their cloud computing operator support service.
And I honestly admit it, it is extremely easy to provoke us by throwing us a task, the solution of which is not something trivial for us. We are the company that has been providing web application hosting services for more than 13 years and were the first launched IaaS in Ukraine. And we are still very afraid of not being smart, customer-oriented, and dynamic enough to master something new. And we had to figure out how to automate CI/CD. Of course, we started to use Docker containers very quickly. At first, we tried to automate work with some of our crutches, but in time we discovered Kubernetes, and with it the entire huge cloud ecosystem.
Therefore, having thoroughly dug into it, we decided to systematize the accumulated experience and get additional benefits from it. So a new platform appeared — TuchaKube.
It is not just hosting containers in Kubernetes clusters. This is an environment in which monitoring, scaling, certificate issuance, data persistence, DBMS clusters, and other services are already configured. This is a CI/CD automation service. These are private repositories for code, artifacts, containers. This is something that has not happened in Ukraine yet.
As they say, it is better to see it once. Therefore, we suggest you watch some video demonstrations of the main functions of the platform TuchaKube:
We are planning to release several more series dedicated to ensuring data persistence, protecting web applications from malicious attacks, and other equally interesting topics. So as not to miss the news, we advise you to subscribe to our YouTube channel and the page on Facebook.
And, of course, I urge everyone to contact us with tasks in which the service TuchaKube can be useful. We are glad to see you 24×7!