“Serverless” is being touted as the Next Big Thing in enterprise-level computing, but is it really just the next big flop?
What does “Serverless” mean, anyway? Well, obviously there is a ‘server’ somewhere which is running your functionality. But essentially this means that the whole execution environment is provided for you. You don’t need to worry about ‘hosting’, or ‘app servers’, operating systems, or similar. The code is executed on some anonymous server, which is provided by a major computing provider.
Almost, but it goes a step further. The user (and the developer) doesn’t care about the infrastructure at all. The developer provides some stateless code, and the code execution is triggered by an external event, such as a user pressing a button on a web page. This is why Serverless is also known as “Function as a Service” (FaaS).
Doesn’t everything need to hold some state? Yes. But all of the state is stored explicitly in the application’s database. There is no state held within the application code itself. This continues a trend which has been happening for many years, where the application holds zero state, and this makes it easier to scale an application to handle very large loads.
Essentially, this reduces the operational complexity of the system. The developer only has to worry about the functionality, not about the implementation detail about how and where this functionality is executed. Again, this is a continuation of a trend through recent years to higher-level abstractions in computer languages and environments such as web servers.
How does it handle peaks of load? The answer is that you don’t need to care. The Serverless provider automatically scales their back-end systems up and down to handle as much load as necessary. The mechanics of how this works are completely abstracted away from you.
How much does it cost? Essentially, you only pay for the functionality when it is actually running, so the cost scales alongside the load. There is no payment for idle time, or hosting.
There are examples of Serverless in operation right now: Amazon AWS Lambda was an early leader, and there are also Microsoft Azure with Azure Functions, Google Cloud with Google Cloud Functions, and others.
So, to answer the original question, is this the Next Big Thing, or is it the Next Big Flop?
I believe that it is definitely the Next Big Thing - it continues the trend towards commoditisation of the computing infrastructure. The enterprise has moved from deployed systems in-premise, through into hosting, Virtual Machines (VM's), The Cloud, Infrastructure as a Service (IaaS), and Platform as a Service (PaaS). The Serverless systems will be used for very many widely deployed user applications, and for the ‘backend’ functionality behind lots of “Internet of Things” systems.