Back in the 80’s, Fred Brooks wrote a wonderful paper “No Silver Bullet: Essence and Accident in Software Engineering”. Every software developer should read it, but not before you finish this essay, so I’m going to summarize: “The best way to improve programmer productivity is not to do things someone else can do for you.”
Until recently, though, even with cloud-based applications we’ve looked at the world in terms of servers that we managed more or less the same way we always have, even if they were now virtual machines running in Seattle or Mountain View.
The next step is “FaaS” — Function as a Service, for example with Amazon Lambda or Microsoft Azure’s Functions. You don’t manage, or pay for, even those virtual machines — instead, you provide code to perform your business functions and your provider launches that code for you, only charging you for the resources you use while it’s running.
In general, the basic requirement for this code is that it be ReSTful: it exposes its functions to the world through the HTTP(S) protocol, and it doesn’t preserve any session state between invocations. Web applications based on using FaaS are called serverless — which can be confusing, since there certainly are servers involved. The difference is, they’re someone else’s servers.
For the developer, this means not needing to write back-end code that is mere infrastructure so your functions can operate. It’s all still there, but it’s all someone else’s code. For the business, it means that the business only pays for the developer effort to build the pieces specific to the application, and it means only paying for the resources needed while the application is using them. Amazon has examples in which computation costs are reduced by 95 percent over maintaining an EC2 instance.
For a small business or startup, the advantage can be even greater, because Amazon will provide a significant amount of Lambda utilization for free.
The real advantage, however, beyond lower costs and less effort, is that you get much more business value delivered per development dollar. You’re letting Amazon, or Azure, or Google, or whoever do what they do best, while you concentrate on what only you can do: your application.