The Breakdown of Serverless
Tags: serverless, beginners, containers, codenewbie
Published: 2023-01-29 00:56:53

Technology has come a long way since only being able to store 1.44 megabytes on a floppy disk! Yet, until serverless computing revolutionized the approach to resource capabilities, developers still had to think about how to maintain, scale, monitor, and the capacity of a server. If a developer needed to expand the limitations of the server they were on, it was not a simple upgrade. The server needed physical storage to upgrade and manual migration of content. EEEK! Think about the possibilities of data loss. No thank you! 

Now that we understand some of the struggles of traditional computing structures, we’ll dive into what makes serverless so revolutionary. Take a look at the graphic below. It’ll help with the visualization of how bare metal servers have evolved to serverless.


![Visualization of the progression of servers from bare metal, virtual server, container, and server less. 
Bare Metal
You are responsible for physically managing the server and the infrastructure it's running (e.g, operating systems, etc.)..
Virtual Server
A hosting provider is responsible for physically managing the server You are responsible for the infrastructure running on the server (e.g., operating systems, etc.)..
Container
Containers are like a box that holds all the code, libraries, and dependencies needed to run an application. You can put the container on any computer or server, and it will run the same way. You are responsible for managing the containers and the infrastructure they run on (e.g., servers, operating systems, etc.).
Serverless
You don't have to worry about the infrastructure. The cloud provider runs your code when it's needed and charges you based on how many resources you use. You don't have to worry about scaling or maintaining servers. You are only responsible for writing your code and uploading it to the cloud.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1cmtxgh7irn76uwse2kz.png)


## What is serverless computing?
“Overview. Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers. There are still servers in serverless, but they are abstracted away from app development.” Thanks RedHat

We have come a far way even from servers that would be called “Bare Metal”. Meaning, someone would physically need to manage the server and keep the infrastructure running. This is where the term, server admin comes in. The server admin would not only need to manage the hardware, but they may also need to manage databases, operating systems, storage, and other resources. Many times, if there needed to be more resources, the server admin would need to physically make changes to the hardware. The hardware to be stored, the servers would be stacked upon each other vertically and have rows upon rows which made the server room. That is also where the term bare metal came from since the hardware was on a metal shelf. 

Up next, Virtual Servers became the next best. A hosting provider is responsible for physically managing the server but the server admin would only need to handle the software side of things such as managing databases, operating systems, storage, and other resources.

Containers are still highly used today such as Docker or Kubernetes. Containers are like boxes that hold all the code, libraries, and dependencies needed to run an application. The container can be put on any computer or server, and it will run the same way. Someone would still want to be managing the containers and the infrastructure they run on (e.g., servers, operating systems, etc.).

Finally, the magic we have now, Serverless. You don't have to worry about the infrastructure. The cloud provider runs your code when it's needed and charges you based on how many resources you use. You don't have to worry about scaling or maintaining servers. You are only responsible for writing your code and uploading it to the cloud. 🎉
Serverless functions & pay-per-use

Before going into how cool the pay-per-use structure that serverless computing uses are, we must talk about serverless functions. To picture serverless functions, imagine each time a user action is implemented or changes in the state of the system, serverless will analyze the resources needed and allocate those resources for implementation. Examples of a user action or change in the state of a function could be anywhere from clicking a button to creating a new file.
Another thing that makes serverless so radically different, is that it uses pay-per-use based on the used serverless functions instead of a set quantity that needs to be prepaid for use.  Pay-per-use would enable a developer to only need to worry about creating the application and code which revolutionizes concerns about time to execute projects and downtime due to working on the server.
It is important to be aware that there are several types of serverless computing as well as popular cloud providers that offer serverless computing platforms. 

**A few of the types of serverless computing include:**

- Functions-as-a-service (FaaS)
- Backend-as-a-service (BaaS)
- Containers-as-a-service (CaaS)
- Event-driven computing
- Database-as-a-service (DBaaS)

Some cloud providers that offer serverless platforms are: 
Amazon Web Services (AWS) with its AWS Lambda service
Microsoft Azure with its Azure Functions service
Google Cloud with its Cloud Functions service
Cloudflare with its CF Workers which include serverless edge functions

### Conclusion
Serverless computing, a cloud-based development model, is revolutionizing the way we write and deploy apps. The evolution of traditional computing to serverless computing showcases how using serverless computing allows developers to save time, money, and resources. Serverless functions enable pay-per-use, by not needing to physically expand a server in anticipation of what their needs would be. 

Again, serverless computing can be more cost-effective and efficient than traditional computing models, but it also has some potential drawbacks such as vendor lock-in and the need for specialized skills which will be covered in another article.