On the innovative team @ HarperDB. Podcast host. Tech blogger. DevRel. Women in tech.
In this article, we debrief what “serverless” means. We’re starting to see more and more technology become serverless, but do we really know what it means or why it’s growing in popularity? Let’s look into this.
One author states that:
Serverless computing is an execution model for the cloud in which a cloud provider dynamically allocates—and then charges the user for—only the compute resources and storage needed to execute a particular piece of code. Naturally, there are still servers involved, but their provisioning and maintenance are entirely taken care of by the provider.
Another article describes:
Serverless architecture refers to a kind of illusion, originally made for the sake of developers whose software will be hosted in the public cloud, but which extends to the way people eventually use that software. Its main objective is to make it easier for a software developer to compose code, intended to run on a cloud platform, that performs a clearly-defined job.
Finally, another author claims that serverless doesn’t really mean one thing, but that it encompasses two overlapping areas. Originally the definition of serverless was a broad generalization, but the term has evolved into a more precise definition like the second point below:
1) Applications that incorporate third-party, cloud-hosted applications and services, to manage server-side logic and state.
2) Applications where server-side logic is still written by the application developer, but, unlike traditional architectures, it’s run in stateless compute containers that are event-triggered, ephemeral, and fully managed by a third party.
So, serverless doesn’t really mean “without a server.” It refers to software that’s hosted in the cloud, or a stateless container, where the user does not need to worry about management, hosting, or maintenance. Servers are still used, but serverless vendors generally provide backend services that are charged based on usage, instead of charging by a fixed amount of bandwidth or number of servers.
In the simplest terms, a serverless system is a way to build an application without having to manage the infrastructure. The overall goal of serverless architectures is to reduce administration and maintenance headaches while enabling increased flexibility and innovation. Sounds like a dream come true!
You might be familiar with AWS' serverless service model called Lambda. Or maybe you’re more of an Azure Functions or Google Cloud Functions fan. Vercel is another cloud platform that enables you to deploy serverless functions.
For example, let’s look at HarperDB Cloud instance provisioning. It utilizes a serverless architecture that uses AWS Lambda functions for instance provisioning, including allocating AWS resources and metadata creation, with backend data services powered entirely by HarperDB. HarperDB utilizes a REST API as the native interface, making it ideal for serverless functions to consume, as connection limits aren't a problem. There are certainly other examples of serverless - just think of any software that runs when called and disappears when it’s done.
As with any technology or architecture, there are pros and cons to serverless computing. Martin Fowler points out that, “Serverless architectures may benefit from significantly reduced operational cost, complexity, and engineering lead time, at a cost of increased reliance on vendor dependencies and comparatively immature supporting services.” This article also provides some great insights, but I’ll summarize from a few different sources below:
Simplicity; remove the need for infrastructure setup, configuration, provisioning, and management
Cost savings; new economic model of cloud computing provides an opportunity for increased efficiency and reduced cost; only pay for resources you use; less overhead
Scalability and latency; the cloud distributes the workload for you so it’s easier to scale horizontally; global access points reduce transmission time
Increased productivity; developers can focus on their code or their project instead of administration and housekeeping
Improved security; developers may be more likely to produce code that conforms with best practices because they are constrained to code constructs that work within the serverless context
Save time; reduce the number of steps involved in production, development, and deployment
Improved utilization; usage-based fee structure, customers lease a function instead of a server
Cloud lock-in; many services are specific to one cloud provider, which locks the cloud provider’s customers into one infrastructure and prevents redundancy and cost savings
Security/risk; no longer own or control the OS, container, or application runtime
Uncertain service levels; some service level agreements are not yet fully defined for serverless architectures
Monolithic tendency; organizations tend to deploy all functions on one platform, sharing the same context, which can make it difficult to scale
Communication; developers and operators may lack communication as developers no longer need to understand the requirements of the systems hosting their code
Well, there you have it, folks! The definition of serverless computing has evolved over the past few years, and Wikipedia currently summarizes it well, as “a cloud computing model where the cloud provider allocates machine resources on-demand, taking care of the servers on behalf of their customers.”
All in all, as long as each individual team or organization works to understand which serverless architecture or technology is the best fit for their unique goals, it seems that the serverless pros outweigh the cons. However, if you don’t do your due diligence and get locked in with a specific cloud provider, you may end up with high costs and a lack of redundancy. Put in the time upfront for technological decisions in order to reap the benefits later on.
Create your free account to unlock your custom reading experience.