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. states that: One author 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. describes: Another article 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, 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: another author 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 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. really In the simplest terms, a serverless system is . 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! a way to build an application without having to manage the infrastructure Examples 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. Benefits and Drawbacks As with any technology or architecture, there are pros and cons to serverless computing. 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.” also provides some great insights, but I’ll summarize from a few different sources below: Martin Fowler This article ; remove the need for infrastructure setup, configuration, provisioning, and management ; new economic model of cloud computing provides an opportunity for increased efficiency and reduced cost; only pay for resources you use; less overhead ; the cloud distributes the workload for you so it’s easier to scale horizontally; global access points reduce transmission time ; developers can focus on their code or their project instead of administration and housekeeping ; 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 ; reduce the number of steps involved in production, development, and deployment ; usage-based fee structure, customers lease a function instead of a server Pros Simplicity Cost savings Scalability and latency Increased productivity Improved security Save time Improved utilization ; many services are specific to one cloud provider, which locks the cloud provider’s customers into one infrastructure and prevents redundancy and cost savings ; no longer own or control the OS, container, or application runtime ; some service level agreements are not yet fully defined for serverless architectures ; organizations tend to deploy all functions on one platform, sharing the same context, which can make it difficult to scale ; developers and operators may lack communication as developers no longer need to understand the requirements of the systems hosting their code Cons Cloud lock-in Security/risk Uncertain service levels Monolithic tendency Communication The definition of serverless computing has evolved over the past few years, and 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.” Well, there you have it, folks! Wikipedia 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. Lead Photo by Kelvin Ang on Unsplash