What exactly is the cloud?

‘Cloud’ is a very broad term. It is repeated quite often in the context of IT solutions. So often we see the word ‘cloud’ in the name of an application that we could even get the impression that it is an advertising slogan which is supposed to lure customers with modernity. If something has the word “cloud” in its name it is probably more reliable and accessible from every corner of the world. The truth is that applications running in a different environment, which is not the cloud, can work just as stable and be just as accessible. As users, we basically shouldn’t care at all whether an application is running in the cloud or some other infrastructure. We should only care if it is available and meets our needs. The fact whether it works in the cloud should be irrelevant to us. It is rather the engineers of IT companies should deal with it, because they are responsible for the operation of services. So why is there so much talk about the cloud? Because the power of cloud is countless possibilities, which properly used can actually significantly improve stability and many other aspects of the application. On top of that, these capabilities are available at a few clicks, which is very convenient. In addition, the cloud provides great opportunities for cost optimization, which is especially attractive to companies that pay very large amounts of money to maintain their server infrastructure. And basically, companies should be more concerned with what the cloud is and how they can use it to maximize their own benefits. Users should just use their products. Let’s explain what the cloud really is and what it can give us.

To understand what the cloud is, let’s go back in time about 20 years. Let’s play the role of an entrepreneur developing some software. Let’s assume that this software works in a standard client-server model, i.e. there must be some server running the application available on the Internet. The server is remotely accessed by a client, i.e. a program operated by a user. The user does not care where the server is physically located, he only knows that he must have access to the Internet to use the application, and he uses the client installed on his computer to do it. In such circumstances, our entrepreneur knows that he has to buy several professional machines, that is servers, mount them somewhere in a place prepared for this, install on them the operating system, his server application and some additional software to monitor all this. Most of these activities can be done by the entrepreneur himself or with the help of his employees. However, there are some problems. Servers by nature heat up very quickly, need a lot of power and are usually very noisy. Due to the fact that the office sometimes experiences power cuts during the night and the servers have to work practically non-stop, our hero rightly realizes that the office is not the best place to store these business-critical machines. So he decides to buy colocation of his servers in a nearby data center. Basically, this means that the nearby data center provides space, power, Internet access and cooling within its building. The building is, of course, also adequately protected and monitored by security. At the end of each month, the data center owner submits a bill to the entrepreneur. As soon as our entrepreneur has installed the servers in the data center he remotely manages them and comes on site if necessary. The server applications of our entrepreneur thus run on the servers located in the data center.

The described way of maintaining infrastructure is still used today. Anyone can buy a server and place it in the data center of their choice and then use it as they need. The biggest advantage of this approach is full control over your own resources. We can buy almost any server, install on it literally whatever we want, and if there are several servers we can connect them practically by any network. However, in this aspect we will need some arrangements with the technical staff of the data center. In other words, we have full freedom, excluding some details mentioned in data center regulations or technical possibilities. This type of infrastructure which is practically entirely managed by us is called ‘On-site’ or ‘on-premise’.

Full control over the ‘on-site’ infrastructure is an unquestionable advantage, but let’s pay attention to the disadvantages of such a solution. First of all, server activation time may take up to several dozen days, depending on the size of the order or the number of available specialists. This type of infrastructure requires a lot of time and sometimes an actual visit on site. We also have to configure such machines ourselves from start to finish, i.e. from mounting them in their place, through installing the operating system, reinforcing security and ending with the installation and management of applications. Generally speaking, the more options we have, the more time we spend on proper settings.

The configuration possibilities are huge, but nobody really uses all of them. There are simply too many of them. So it should come as no surprise that many businesses would easily be willing to give up some of those huge configuration possibilities, which don’t always provide tangible benefits anyway, in exchange for the speed of infrastructure development for their needs. After all, it’s all about meeting the needs of their own customers quickly. Optimization that speeds up the work of servers by a few percent, but requires long hours of work, can be given up.

In July 2002, Amazon corporation created what today we would call a cloud in the IaaS model, i.e. ‘Infrastructure as a Service’. It is a type of cloud that allows you to create a virtual infrastructure in just a few clicks. Virtual database, file server, VPN, application server, authentication, network that connects all these services, monitoring, whatever we want, we can create in minutes and connect them together. All this will be created in a virtual form and the physical infrastructure will be taken care of by the cloud provider. The possibilities of configuring all these services will be actually smaller than if we manage these machines ourselves, but most users will be enough. And most importantly, the speed of infrastructure development will be incomparably greater. But that is not all. If we use the resources and potential of the cloud optimally, we can significantly reduce costs. Let’s assume that today I need three servers to make my company work properly. My employees use these servers in 80%. I am aware that in a week there will be a few more people employed for a three-month contract. In an on-site environment I would have to buy them additional servers which would only work for a short time. After the expiration of the contract I would have to sell the servers. The cloud gives me the possibility that if I need additional resources for a while, I just buy them in seconds, and when I don’t need them anymore, I give them back and don’t pay for them. I only pay for the number of hours I used them. Pricing is usually by the hour. But that is still not all. Let’s say my company has grown and I decide to open an office in another country. If I manage my cloud resources properly, I’m able to create a copy of my infrastructure overseas and give it to employees in another country to use. These are just a few of the dozens of possible scenarios for putting cloud IaaS into practice. The power of the cloud is automation, virtualization, the wealth of services available, and the ability to connect them together. The most popular Infrastrucutre as a Service clouds are Amazon Web Services, Microsoft Azure and Google Cloud Platform. These are so-called public clouds, meaning they are available to anyone. But can you have your own cloud? Of course you can. OpenStack project developed for over 10 years focuses on creating software that allows you to run your own cloud in your own data center. OpenStack is also used commercially, for example by OVH.

Well okay, we can automate the process of creating, modifying and even deleting virtual infrastructures with “Infrastructure as a Service”. But since we’ve already sacrificed some configuration capabilities in order to gain more speed in the development of our business, can we go a step further? Can we create some framework for the application that our company develops and simply upload such application to some platform without even worrying about virtual servers? Well, we can. PaaS or “Platform as a Service” is a type of processing in the cloud, which transfers not only the management of physical machines in the hands of technical staff of cloud provider, but also the management of virtual resources. Let’s assume that I am developing some web application. If I decide to use some PaaS model, my developers will only have to prepare the application code to fit the framework imposed by the platform. Further deployment of the application on the platform and its eventual migration between similar platforms will become trivial. Moreover, if I properly prepare my application, the platform itself will manage it in a quite intelligent way. For example, if there is a crash in the application, the platform itself will take some remedial action, such as restarting the application. If the platform notices increased traffic in the app for example related to a sudden surge of interest in the app, more resources will automatically be deployed in a short period of time to ensure smoothness for my users. Such functionality is especially important on days like Black Friday, when the number of users using an online store can increase several times within hours. PaaS is able to automatically adjust resources to the required demand, so that no one will feel that the website is running slowly during the hot periods. Resources will be automatically released when they are no longer needed. PaaS, however, is able to do much more. In addition to automatically scaling resources, it also provides great opportunities to deploy new changes as soon as they are made by developers. In an on-site environment, changing software versions can be quite cumbersome. In PaaS conditions, the process can be brought to complete automation. In other words, customers may not even notice the service interruption when the software version is changed on the fly. Users will get new functionality without being cut off from consuming the content of the application they are using. The most emerging platform of this type is Kubernetes technology, which is making a huge career today.

The last model of cloud computing is SaaS or ‘Software as a Service’. This is the model that we all most often get to use. Previous models are of interest to programmers or other IT engineers, but this is the model most people associate with the cloud. ‘Software as a service’ is a model in which the provider of a web application simply makes the functionality of its product available to users. What is the physical infrastructure, networks, servers, operating systems, virtual machines, resource management or application logic, it all remains the responsibility of someone else. If you’re developing a SaaS product, you may need to know all those aspects of it, or at least some of them. But if you’re a user of an application in the Software as a Service model, you’re only interested in using it. So the next time someone sees an application with the word “cloud” in its name and, after buying access, gets immediate access to its functionality without thinking about where it actually works, it’s probably a SaaS application. When we log on to such an application, remote infrastructure embedded on physical machines somewhere hundreds of kilometers away will automatically adjust to our needs. Maybe the application will request new resources to keep us running. Maybe exactly during our work, a new version of the application will come out and will be installed on those remote resources in such a way, that we won’t even notice it. Maybe during our work some of the resources will fail, and we still will not feel it, because the tasks that handled our resources were quickly taken over by other machines. All this will be imperceptible for us, because that’s how the cloud should work, to push away from us some problems. Can I create a SaaS application myself and make it available to my users so that their experience is always smooth and fault-tolerant? I can and for this purpose I should use resources in the cloud, because it is the cloud that gives me such a wide range of possibilities.

As you can see, saying something is in the cloud can mean different things. What is certain, however, is that somewhere beyond our knowledge there are some automated processes taking place to keep things running smoothly and reliably for users. These processes may be related to modifying the IT infrastructure on which the application runs. What we see in a web browser using a given application is sometimes the tip of the iceberg. There is more, much more technology under the surface than we realize. In the past, infrastructures were much more static. Today, they are changing, adapting to customer needs and optimizing costs. They have become almost as dynamic as software. That’s why so many companies are migrating their services to the cloud, because companies should be the ones to see its appeal. And while the cloud may not always be the ideal solution for everyone, my experience tells me that the vast majority of functionality can be migrated. Especially if we don’t need very specific devices. We don’t need to develop our own software within our business. It is enough that our company performs some activities that can be automated. Then also the cloud can help a lot. And you also don’t have to be an IT company to do it. It is enough that some action that we perform repetitively is possible to program, then it is worth giving such a task to the cloud, to take care of something more creative. The possibilities are on the table and there are many of them. You just need to review them and choose the ones that are best for us. And human creativity knows no bounds. So I encourage you to explore the almost limitless possibilities and use them to solve your problems. Who knows, maybe just maybe someone of you will create your own unique and innovative cloud solution, which later we will all want to use?