The evolution of Compute has seen a steady progression from expensive dedicated solutions to less expensive and very resource-light options. Before we discuss the evolution of compute, let’s first define what compute is. Compute in the cloud computing world refers to the servers that are made up of the processing, memory, and storage required to run a cloud-based service. In the early days of compute, expensive dedicated servers were the only option available to businesses. Soon after that, Virtual Machines were invented which allowed several servers to exist on one physical piece of hardware. Then came containers that virtualize right to the application level. Finally, in the modern era, companies can dissect their workload down to the smallest of computational units, a simple function, like the ones you see so many times in your favorite programming languages.
Why do we look at the evolution of compute? We review the evolution of compute because it helps us better understand all of the layers of compute in the modern stack. The first paradigm we can look at is the Dedicated Server approach. When a business chooses to go with a dedicated server, they are signing up for a physical server that is entirely dedicated to that one customer. So what happens in this approach is the client needs to guess capacity in the initial stages, and will likely overpay for an underutilized server and any wasted space that comes along with it. It is akin to buying clothes that are too big and waiting to grow into them. It works, but it is not the most efficient approach. Upgrading techniques must also be taken into consideration since it can be slow and expensive with a dedicated server. The operating system installed on the physical server is what you get, so it lacks some flexibility. If the business runs multiple applications, it may result in conflicts and resource sharing. A dedicated server does have the great benefit of guaranteed security, privacy, and full utility of the underlying resources. It is this last reason why some companies still prefer to use the dedicated server method in their cloud computing stack. This is what is sometimes referred to as a “Bare Metal” approach as it mimics what it was like to have your own physical server in your own data center.
Virtual Machines are the next iteration of compute in the cloud. It’s a fantastic technology that makes it possible to run multiple virtual machines on one physical machine. The is made possible by what is known as a Hypervisor. A Hypervisor is the software layer that enables the ability to run virtualized computers. When taking the Virtual Machine approach in cloud computing, a physical server is shared amongst many customers. The benefit of this method is that the customer only has to pay for fraction of the server. Hardware costs are shared among more businesses. A Virtual Machine can still have the problem of overpaying if the VM is underutilized, which is always a possibility. Like the dedicated server, only one guest operation system would be in use. Multiple applications on the same virtual machine may also have resource sharing conflicts like the dedicated server sometimes does.
Containers are the next iteration of computing in the cloud after virtual machines. They are a really cool technology with several benefits. Containers are isolated from each other and provide running applications using software that packages up code and all of its dependencies so the application runs consistently from one computing environment to another. Now you can have a virtual machine that is further fractionalized by running multiple containers on the same VM. Docker is the most commonly used software layer for running multiple containers. By subdividing it down into containers, customers are able to utilize the maximum available capacity which is very cost-effective. All running containers share the same underlying operating system so containers can be more efficient than virtual machines. The great thing is that you can have different operating systems as well. Each container could run a different OS and therefore multiple applications are able to run side by side without having the limitation of the same underlying OS and will not cause any resource sharing conflicts.
Last up in the evolution of compute (at least at the time of this writing) are functions. Amazingly, containers are not the smallest level of subdivision in cloud compute. That award goes to Functions. Functions are the result of breaking up you applications into small pieces of code that are responsible for one well-defined task. This offers even better utility of compute than just standard containers offer. By leveraging functions in the cloud, you will find these pros and cons:
- Managed Virtual Machines Running Managed Containers
- Defined As Serverless Compute
- Only responsible for Code and Data – nothing else
- Very cost-effective
- Cold Starts can be troublesome
Serverless compute means you don’t have to worry about running and configuring any virtual machines or containers. The cloud service provider takes care of all of that for you. You don’t set up anything, you simply put your code online and it should work. The only thing you might need to consider is memory used and duration. What makes serverless computing so cost-effective is that you are only paying for a function to run. Any underutilized resources are not your concern any longer, the cloud service provider deals with that. The one downside to serverless compute is that you can run into what is known as Cold Starts. This happens when a function or serverless code is triggered, but an underlying container is not yet running to support that code. So the first time the serverless code runs, there may be a small delay while waiting for the underlying support structure to ramp up. You can minimize this phenomenon by keeping functions small in size, reducing set up variables, and triggering the function automatically every 15 minutes or so to keep the function warm.
Dedicated, Virtual Machine, Container, Functions Resources
- Cloud Vs Dedicated (rackspace.com)
- Difference Between Cloud Servers Dedicated Servers (cloudacademy.com)
- Dedicated Servers (ionos.com)
- Virtual Machines (azure.microsoft.com)
- Learning Cloud What Is A Virtual Machine (cloudflare.com)
- Learn Virtual Machines (ibm.com)
- Virtual Machine In Cloud Computing (jigsawacademy.com)
- Learn What Are Containers (cloud.google.com)
- Cloud Containers What They Are And How They Work (searchcloudsecurity.techtarget.com)
- Containers For Everyone (docker.com)
- Learn Cloud Containers (ibm.com)
- What Is A Container (azure.microsoft.com)
- Docker Container Container Cloud Computing (aquasec.com)
- Cloud Native Apps What Is Serverless (redhat.com)
- What Is Serverless Computing And Which Enterprises Are Adopting It (computerworld.com)
- State Of Serverless (datadoghq.com)
- Azure.microsoft.com En Us Solutions Serverless (azure.microsoft.com)
- Serverless: Develop & Monitor Apps On AWS Lambda(serverless.com)
- Why Use Serverless (cloudflare.com)