In the last 10 years, we are hearing more and more about cloud computing. There are now many consumer-focused cloud solutions that make our life easier. However, those solutions make up only the top of the cloud iceberg; most of it is covered by water. In this article, you will find the details of cloud computing.
What is cloud computing?
Cloud computing is the delivery of computing services on demand, through a network, from a remote data center. Nowadays, those computing services can include storage, processing power, virtual machines as a whole, specialized services, applications, and more.
Let’s have a better understanding of cloud computing with an example.
Explanation of cloud computing with an example
You can think of cloud computing as having a very advanced computer and renting it out to remote people as portions. Let’s say a customer needs processing power for its mobile application project; you rent out your CPU two cores. Another customer needs machine learning computing power for its AI-based project; you rent out him X number of tensor cores on your GPU. The last customer just needs to put some files on your computer so it can access them whenever it wants; you rent out this customer 5 GB of your SSD.
Of course, without the help of some software, it is not possible to simply rent out portions of your hardware to remote people. So you decide to create VMs and install operating systems for the first two customers that need processing power and make them remotely accessible.
However, creating a whole VM with an operating system installed does not look viable for the third customer who only needs to store and access some files. Installing an operating system for each storage customer would be a waste of storage itself, and they will not really need to navigate through an OS. So, you develop a way more simple frontend application for this specific customer, that looks very similar to Dropbox, or OneDrive, so he can easily access his files from anywhere, anytime. And with the help of the specially crafted backend, each customer does not waste unnecessary resources on your system.
After a while, you notice that you can also craft similar software at the backend for the CPU and tensor core renting out, instead of installing a whole operating system for each customer. You create some APIs and teach your customers to integrate them into their projects. Now, you have also avoided the “a whole operating system for each customer” situation, which improved your system’s efficiency and lowered the costs.
Some other day, a new customer wanted to use a portion of your PC just to store and stream videos from it, for a video streaming project. Since now you are specialized in delivering computing capacity through the internet, once again, you put your hands into dirty coding to make it efficient for every video streaming customer. You create software at the backend, so every video streaming customer can use some APIs and videos directly streamed from your PC to the viewers.
This is what cloud computing is at a very basic level. You, as a cloud provider, have a whole system with a lot of computing power, which is actually a data center, and you specialize it in such a way you can rent it out as very precise parts.
Main service models in cloud computing
There are three main service models in cloud computing, which are defined by the responsibilities of the customer and the cloud provider. In our example, while explaining the cloud, we have talked about some APIs, accessible virtual machines, and Dropbox-like software. Those are all different levels of responsibilities of the cloud provider.
The standard approach of creating servers as an individual or a company requires building a physical data center, buying and setting up hardware, installing operating systems, managing databases, maintaining both digital and physical security, creating a disaster recovery plan, and so on. Even with the lowest level of cloud computing, the customer gets rid of most of the hassle. You can see the chart below to see the cloud service models in cloud computing compared to on-premises.
While the transition to the cloud already solves most of the hassle, it has still room for additional comfort, depending on your purpose. The four main service models in cloud computing:
- Infrastructure as a Service (IaaS)
- Platform as a Service (PaaS)
- Function as a Service (FaaS)
- Software as a Service (SaaS)
Differences between On-Premise, IaaS, PaaS, and SaaS
On-Premise | IaaS | PaaS | SaaS | |
---|---|---|---|---|
Applications | Customer Manages | Customer Manages | Customer Manages | Provider Manages |
Data | Customer Manages | Customer Manages | Customer Manages | Provider Manages |
Runtime | Customer Manages | Customer Manages | Provider Manages | Provider Manages |
Middleware | Customer Manages | Customer Manages | Provider Manages | Provider Manages |
OS | Customer Manages | Customer Manages | Provider Manages | Provider Manages |
Virtualization | Customer Manages | Provider Manages | Provider Manages | Provider Manages |
Servers | Customer Manages | Provider Manages | Provider Manages | Provider Manages |
Storage | Customer Manages | Provider Manages | Provider Manages | Provider Manages |
Networking | Customer Manages | Provider Manages | Provider Manages | Provider Manages |
Now, let’s take a closer look at those service models.
Infrastructure-as-a-Service
Infrastructure-as-a-Service, shortly IaaS, is the most basic level of cloud computing services. The cloud provider is responsible for the servers, virtualization, storage, and networking. Even though the number of benefits of IaaS looks a little, it contains very big responsibilities such as finding a place for the servers, buying the hardware, maintaining the hardware, providing uninterrupted network and power, cooling, physical security, and many other things.
While IaaS offers the least, it is also the most flexible since the customer has control over every other component, including the operating system. But this also means the customer will need a system administrator. This flexibility results in many different use cases, from development environments to high-performance computing, or backup/recovery solutions.
Platform-as-a-Service
Platform-as-a-Service, shortly PaaS, is the service model that hands more responsibilities to the cloud service provider. In PaaS, in addition to servers, storage, networking, and virtualization, the provider is also responsible for the maintenance of the operating system, middleware, and runtime. In this scenario, the customer is only responsible for the applications and the data.
Platform-as-a-Service basically provides all of the necessary tools and infrastructure for creating cloud-based applications; developers craft the application as they desire with ease.
Function-as-a-Service
Function-as-a-Service, shortly FaaS, is the step between PaaS, and the finished product, SaaS. FaaS allows developers to integrate ready-to-use cloud-based functions into their applications through APIs. As an example, we can think of some applications that use Google Maps for their map function. In this case, the developer does not need to scan the whole area, or the whole world, with roads and buildings just to deliver a map-based feature in its application. The developer simply gets the map function from Google and integrates it.
Since the developer will not need a whole operating system, dedicated hardware, and 100% uptime for its maps feature, there is no reason for creating a virtual machine, which will be a waste of resources. Instead, Google serves Maps through APIs; no hardware, software, or operating system to hassle with. So, the cloud providers set up a big system again, with only one kernel or a whole operating system, to configure it in such a way that many customers can request a very specific type of service without a server.
And this is what “serverless computing” means. There is actually a server somewhere, just like the cloud itself, and it serves several customers, just like the cloud itself, but only serves specific functions in containers.
Software-as-a-Service
Software-as-a-Service, shortly SaaS, is rather a finished product that can be accessed from anywhere. End users generally know more about SaaS projects since SaaS is the top of the cloud iceberg. YouTube, Google Documents, Dropbox, OneDrive, Netflix, Spotify, and most other well-known cloud-based services are simply SaaS.
Cloud computing deployment models
Since cloud computing is a very flexible concept, it can be used for a very wide range of purposes. Because of that, some customers might not want the cloud to be accessible to everyone, but some might want it. Thus, there are a couple of cloud deployment models available that define its accessibility, and in some cases, its ownership.
Public cloud
The public cloud is the cloud deployment model that makes the cloud accessible to everyone. Of course, it makes the cloud less secure, however, if your application needs to be accessed by everyone, you should be aware of possible security issues.
Private cloud
The private cloud is the cloud deployment model that makes the cloud specialized for a single customer. This approach grants additional flexibility, control, and security. However, this also means the customer might have to take additional responsibilities depending on their preference for private cloud. It can reach the point of building an entire cloud internally with all of the responsibilities.
Hybrid cloud
A hybrid cloud is a cloud architecture that combines at least one public into a private cloud. In this setup, some portion of your application, for example, the database, can be held in a private cloud, but some portion can be held in a public cloud. The combination of the two architectures brings the advantages of both worlds together.
Multicloud
A multicloud is a cloud architecture that is the combination of multiple cloud services. While the hybrid cloud is all about the public or private status, the multicloud is more about using multiple cloud services for different purposes.
Community cloud
A community cloud is a cloud architecture that grants access between private and public; it is not accessible by just one organization but also it is not accessible by everyone. It targets a specific community and a couple of organizations.
The evolution of cloud computing: From concept to reality
Like many other technologies, cloud computing was also first invented and used for military purposes back in the early 1950s, a few years after WW2. Later in the early 1960s, John McCharty suggested providing a selling computing like water, or electricity. While this is the core of today’s cloud computing, it was an idea way ahead of its time; it took many years for the technology to catch it.
In the late 1990s, many new websites emerged with their content, which was being serviced directly from their own servers. At some point, people just had to buy their own servers and maintain them in order to maximize their website’s performance. That means they had to buy hardware that becomes obsolete after a couple of years, hire an IT guy to maintain the server, put the server in a proper data center, and handle all the other things by themselves. This was a huge hassle and it was only for a website, not an online service.
As the internet and access to the internet have improved, thanks to higher bandwidths over the years, it became more integrated with our devices. People and companies pushed further in terms of using the internet to its limits. They wanted to provide storage services, then computing services, software, and more. However, the hardware, the maintenance, and many other aspects of traditional servers were causing too many headaches. Then, Amazon as the first cloud provider brought McCharty’s idea to the table:
“I have a very big computer that can serve many customers at once. I personally maintain it so you don’t need to think about the physical space, networking, security, and physical security. You will pay me a little since you all need is one unit of computing power, but if things in your business go well and you want to expand your capacity, I can also deliver you two units of computing power in just a couple of minutes.”
Interestingly, the reason behind this attempt was the excess capacity on Amazon’s servers at that time. As an online retailer, Amazon was using only 10% of its server capacity. That excess capacity later became Amazon Web Services, which is currently the top cloud service in terms of market share.
What benefits does cloud computing have?
Cloud computing has many advantages over the on-premise model. The most important advantage is avoiding the initial costs. Cloud computing is a ready-to-use service from the providers; you will not have to find a place for a data center, build a data center, provide the electricity and network infrastructure for the data center, and pay for some other initial expenses. These grants cost savings, but also time-saving.
Also, maintaining the whole infrastructure is a huge headache; you simply give this responsibility to the cloud provider.
Another key advantage of cloud computing is scalability. Since all the hardware of the cloud provider is abstracted, the number of resources allocated to you can be changed on your demand immediately. If you have excess resources, you can immediately lower your resources to reduce costs. If you are experiencing an unexpected peak of users, you can immediately get additional resources from the provider.
Security is a huge benefit of the cloud as well. Securing a whole server with the patches and firewalls, and applying mitigations for zero-day vulnerabilities are very hard tasks to do. In the cloud, providers deliver great security solutions to keep your “system” safe. Cloud providers generally have the top security experts and deploy the most advanced solutions.
Migrating to cloud
Once a customer that already has an on-premise solution wants to benefit from the cloud, the digital assets, databases, IT resources, services, and applications can be migrated to the cloud. Then, the customer can enjoy the benefits of cloud computing.
Partly migrating to the cloud is possible as well, if the customer wants to continue utilizing its existing servers, but also use the cloud for some parts.
Also, it is possible to migrate from a cloud provider to another cloud provider, however, it might not be possible in some scenarios.
Finally, migrating from cloud to on-premise is named “reverse cloud migration” or “unclouding”, which is not very common.
You can find the full details of cloud migration in our article: What is Cloud Migration?