Fifteen years ago most companies were entirely responsible for the operations of their server-side applications, from custom engineered programs down to the configuration of network switches and firewalls, from management of highly available database servers down to the consideration of power requirements for their data center racks.
But then the cloud arrived. What started as a playground for hobbyists has become a greater than $10 billion annual revenue business for Amazon alone. The cloud has revolutionized how we think about operating applications. No longer do we concern ourselves with provisioning network gear or making a yearly capital plan of what servers we need to buy. Instead we rent virtual machines by the hour, we hand over database management to a team of folks whom we’ve never met, and we pay as much concern to how much electricity our systems require as to how to use a rotary telephone.
But one thing remains: we still think of our systems in terms of servers—discrete components that we allocate, provision, set up, deploy, initialize, monitor, manage, shut down, redeploy, and reinitialize. The problem is most of the time we don’t actually care about any of those activities; all we (operationally) care about is that our software is performing the logic we intend it to, and that our data is safe and correct. Can the cloud help us here?
Yes it can, and in fact the cloud is turning our industry up on its head all over again. In late 2012, people started thinking about what it would mean to operate systems and not servers—to think of applications as workflow, distributed logic, and externally managed data stores. We describe this way of working as Serverless, not because there aren’t servers running anywhere, but because we don’t need to think about them anymore.
This way of working first became realistic with mobile applications being built on top of hosted database platforms like Google Firebase. It then started gaining mindshare with server-side developers when Amazon launched AWS Lambda in 2014, and became viable for some HTTP-backed services when Amazon added API Gateway in 2015. By 2016 the hype machine was kicking in, but a Docker-like explosion of popularity failed to happen. Why? Because while from a management point of view Serverless is a natural progression of cloud economics and outsourcing, from an architectural point of view it requires new design patterns, new tooling, and new approaches to operational management.
In this report we explain what Serverless really means and what its significant benefits are. We also present its limitations, both inherent and implementation specific. We close with looking to the future of Serverless. The goal of this report is to answer the question, “Is Serverless the right choice for you and your team?”