The Serverless Story: Why The Hype
When I first stumbled upon Serverless computing back in 2017, I was quite intrigued. How could an application possibly run without servers? I still remember the first time I used AWS Lambda to re-design an old cron job. No server setups, no system package installations and no auto-scaling configurations - just pure code and an event trigger. At the time, I didn't understand how it all worked internally, but it did and it felt a bit like magic.
When engineers rave about Serverless, they're not referring to the technology or the tools themselves, it’s never been about that; They’re talking about the principles it represents and the potential it has to transform the user experience in developing and using modern applications.
In a large organization where development teams rely on shared DevOps resources for every infrastructure need, Serverless represents empowerment, autonomy, and self-sufficiency. With Serverless, you are no longer dependent on another team's backlog and priorities. Instead, you can take charge and become the captain of the ship.
In this article, I talk about the concept of Serverless, it's significance, impact, origins, and projected future trajectory.
Understanding Serverless
The term "Serverless" can be misleading as servers are still being used. However, the key is that developers don't need to manage them. This idea might seem simple, but it represents a significant shift in how we approach and think about computational tasks.
To better understand, let's imagine you want to create a website or an application. In the past, you would have had to rent or purchase servers, take care of configuration and maintenance, and make sure that they are always up and running. It's akin to owning a car - you need to maintain it, pay for its upkeep, and ensure that it's always available when you need it.
Serverless computing is similar to using public transportation. You don't own the vehicle (server), but rather you use it only when necessary and for the duration required. You don't have to worry about the servers themselves, as your focus is solely on writing your code. The platform handles all infrastructure-related activities, making it easier for you to concentrate on your project.
Public transport operators are responsible for managing the logistics of ensuring there are sufficient vehicles, keeping them in good condition, and augmenting capacity to meet demand. Similarly, Serverless platforms automatically handle the provisioning, maintenance, availability, and scalability of computing resources. Thus, you do not have to concern yourself with reserving seats or ensuring that there is enough capacity.
In essence, Serverless abstracts away the underlying infrastructure, enabling developers to focus solely on writing and deploying code without concerning themselves with server provisioning, scaling, or maintenance, thereby accelerating the development process.?
By using Serverless, you're not only shifting from a pricing model that's based on resources to one that's based on value, but you're also delegating the responsibility of server provisioning, resource scaling, and ensuring high availability to your cloud provider. This is similar to how we use public transportation without needing to worry about scheduling, maintenance, or capacity planning.
Why Serverless is kind of a big deal
Before the advent of Serverless, developers had to deal with the significant challenge of managing infrastructure overhead. This meant that they were spending a lot of time configuring servers, networking, and security measures which took their focus away from writing code and delivering value to end-users.?
Scaling applications was another hurdle as it required a manual and often reactive process. Organizations struggled to predict peak loads accurately, leading to either over-provisioning, which incurred wasteful expenses, or under-provisioning, risking performance degradation during peak usage periods.
Moreover, the high operational costs associated with maintaining server infrastructure placed a considerable burden on development teams. Expenses such as hardware procurement, software licensing, and ongoing maintenance were incurred regardless of actual usage, resulting in inefficiencies and budgetary constraints.?
Managing servers required expertise in infrastructure management, including configuration, updates, and troubleshooting. This took resources away from core business activities, hindering organizational efficiency.
领英推荐
How Serverless changed the game
Focus on Business Logic: By abstracting away server management and infrastructure concerns, Serverless enables developers to focus solely on writing application code and implementing business logic. This increased focus on application functionality accelerates development cycles and fosters innovation, as developers can rapidly prototype and deploy new features without being encumbered by infrastructure constraints
Pay for Value: With Serverless, you only pay for the computing resources that you use in a pay-as-you-go model. This means that you don't have to invest upfront in infrastructure or pay ongoing maintenance costs for owning your servers. The pricing model is based on utility, which aligns with the principles of efficiency and cost-effectiveness. It's similar to paying for electricity - you're charged based on how much you consume. Therefore, you don't have to pay for idle servers that are sitting around doing nothing, which saves you money.
Dynamic Scalability: Serverless platforms automatically scale resources up or down based on demand. This dynamic scalability ensures that applications can handle sudden spikes in traffic without experiencing performance degradation or downtime. This flexibility enables businesses to meet changing demand without over-provisioning resources, thereby optimizing cost-effectiveness.
Reduced Downtime: Serverless computing shifts the responsibility of managing servers and ensuring their availability from the developer to the cloud provider. This means that providers can leverage advanced infrastructure and redundancy mechanisms to minimize downtime, resulting in significantly less downtime compared to traditional server-based architectures.
Event-Driven Architecture: Serverless lends itself to event-driven architectures, allowing applications to react to events as they occur. This approach fosters effortless integration with diverse services and supports the creation of exceptionally scalable and robust systems.
Who created Serverless
While individual engineers and researchers have made significant contributions to the development of Serverless computing, it would be unjust to attribute its invention to a single entity. Instead, Serverless emerged from the collective efforts of many individuals and organizations, representing the culmination of their work over time.
The concept of Serverless did not arise in isolation; it evolved through a series of steps in cloud computing. It began with the introduction of Infrastructure as a Service (IaaS) in the mid-2000s, which allowed businesses to rent virtualized hardware resources over the Internet, eliminating the need for physical infrastructure investment.
However, IaaS still required businesses to manage servers, which was a complex and time-consuming task. To simplify this process, Platform as a Service (PaaS) was developed. PaaS eliminated the need for businesses to worry about the underlying infrastructure and allowed developers to focus solely on coding. However, even with PaaS, developers still found it challenging to manage certain aspects of server management such as capacity planning and scaling.
In 2014, Amazon Web Services (AWS) introduced Lambda, which was the first-ever Function as a Service (FaaS) platform by a large public cloud vendor. This was a breakthrough in cloud computing as it completely removed the need for servers. This meant that developers could focus solely on writing code while Lambda would take care of everything else, including scaling, patching, and capacity planning. Lambda's introduction was a significant event in cloud computing. It made software development accessible to a wider audience.
Where to from here
I still get annoyed by every piece of AWS that is not serverless - Werner Vogels, Serverless Chats, April 2022
Serverless is set to continue growing in usage and popularity, as it can streamline development processes, optimize resource utilization and reduce operational overhead, but it’s a powerful concept that has the potential to revolutionize many areas beyond just computing.
The trend towards 'Serverless Everything' is already evident with services like AWS Fargate for Serverless containers and Aurora Serverless for Serverless databases.
AWS and other cloud providers are likely to continue transitioning more and more of their offerings to the serverless model, reflecting the industry's shift towards more efficient and scalable cloud solutions.?
With an emphasis on simplicity, scalability, and cost-effectiveness, Serverless promises to continue transforming the way we build and deploy modern applications.
Abir, absolutely agree! What specific tasks have you streamlined using serverless?