This content originally appeared on DEV Community and was authored by Avinash Dalvi
“The reports of my death have been greatly exaggerated.” – Mark Twain
This famous quote applies just as well to technology as it does to people. In the fast-paced world of software development, we often hear proclamations about the death of one technology or another. But the truth is, technologies rarely die outright – they evolve, transform, and find new niches.
Take serverless computing, for instance. When it first emerged, some viewed it as merely a new runtime environment. But as the concept has matured, it’s become clear that serverless represents something much more profound: a shift in how we architect and think about applications.
I am writing this blog to express my views about Serverless. I believe that every technological evolution happens to solve a problem or meet a specific need. I am always amazed by people who write or create content around the idea that “This technology is dead.” I have been in the software development career for the past 13 years and have seen the evolution from VB to VB.NET, ASP to ASP.NET, PHP, Python, Java, CSS to SCSS, HTML to Web3, and many more technological advancements. To be frank and realistic, even if we move from one point to another, the older point is still valid for certain use cases. They never die; they evolve with the demand. There’s no one-size-fits-all solution; the perfect choice depends on the project. Currently, everyone wants to ride the wave of AI and Generative AI, but in reality, many people still haven’t found the right use case for it. It can’t be fitted everywhere, or maybe something different will come along that fits better. Serverless is the same. Serverless came into the picture almost immediately after the cloud era started because of the need for a situation where developers were more in number, and managing or scaling servers was painful or not easy to do.
To understand why serverless computing emerged as a solution, let’s explore the specific challenges it was designed to address.
The Birth of Serverless
To understand serverless, we need to look at the problems it was born to solve.
Focus on code, not servers
As a developer who understands the challenges developers face, I can explain this better. I am a big fan of the cloud era and a dedicated full-stack developer. When the cloud era began, dedicated cloud operations or DevOps were not as popular as they are today. Now, Cloud Ops and DevOps are crucial parts of an application team. Back then, developers had to take on the challenge of creating, managing, and scaling servers based on thresholds. This required both time and effort, diverting them from their primary role as developers. Although I personally enjoyed that work, companies couldn’t afford to invest that much time and effort.
Enter serverless, promising to abstract away infrastructure concerns and allow developers to focus solely on writing code. Beyond simplifying development, serverless also brought significant cost benefits.
Cost efficiency:
Along with this, customers started complaining about getting huge bills without making much profit in their business. Cost was a major factor! They were paying for resources that weren’t fully utilized and not getting any business value out of it. That’s when the “Pay-per-use model” emerged with Serverless, and it was a game-changer! In addition to cost savings, serverless computing also revolutionized scalability.
Improved scalability:
Scalability existed in traditional infrastructure, but it was a burden on developers. Serverless eliminates the need for developers to provision extra servers in anticipation of spikes or worry about under-provisioning during peak times. Unlike traditional architectures where you might hit a ceiling based on your provisioned servers, serverless can theoretically scale infinitely (though providers may impose some limits). Another critical advantage of serverless is the speed at which developers can deploy applications.
Faster deployment :
Developers need to provision servers and manage them. All this server management slows down deployments. Developers can’t focus on writing code and pushing updates because they’re bogged down with infrastructure tasks. They wanted to push code frequently but lacked the time to do so.
Microservice was perfect match
Microservices emerged from the frustration of dealing with monolithic codebases. The rise of microservices and serverless computing is indeed closely intertwined. That’s why I said it was a perfect match! When you’re running granular pieces of code, why keep a server running at full capacity? The pay-per-use model was perfect for running microservices. Focus on code, not on servers! Both evolutions shared the same goal: to help developers. That’s where the magic happened!
At the same time, frontend frameworks like Angular, NextJS, and React were taking shape, focusing on API-based backends and frontends. This synergy boosted microservices, and microservices, in turn, supercharged serverless!
This synergy was highlighted by the launch of AWS Lambda, which became a key example of serverless computing.
AWS Lambda = Serverless
So, when the first serverless applications started to get built on AWS, the initial approach was “let’s build microservices”…
The first serverless offerings, like AWS Lambda in 2014, were indeed focused on providing a runtime environment for small, event-driven functions. This led to the initial perception of serverless as simply a new way to run code. Again, it was a perfect match for microservices with the help of Lambda.
Serverless was creating pave to become concept to a way of building and deploying applications where you don’t have to manage servers. The cloud provider handles all the infrastructure provisioning, scaling, and maintenance. Same time AWS Lambda was paving foot as function as a service: It’s a specific offering from Amazon Web Services (AWS) that allows you to run code in a serverless fashion. You write your code, upload it to Lambda, and define events that trigger the code’s execution. Lambda takes care of everything else.
One of my favorite analogies, which I’ve used in many talks about serverless, is Ordering pizza is serverless. Isn’t that intriguing? Here’s a short video about it.
This content originally appeared on DEV Community and was authored by Avinash Dalvi