Why Serverless Web Applications Are Here to Stay
If you work in the DevOps or software engineering field you've probably heard rumblings of serverless computing over the last 8 months. Although the concept of functions as a service isn't new (PiCloud RIP and Iron.io were in the space since 2009), the concept of building other event services around it is. In addition to Lambda, AWS has API Gateway, Kinesis, S3 actions, and Cloudwatch logs to go with it. Some people in our field believe this is just fad. I'm not one of them.
You only pay for what you consume (for real this time)
We’ve danced with this idea before somewhat with the introduction VMs that could be created or destroyed via API back in the late 2000s. That was improved upon with the introduction of autoscaling VMs. Even with all of this innovation you still had to commit to at least one VM per month and at $72 per month in 2007, EC2 wasn’t the cheapest solution. Now it is a lot cheaper with reserved instances and smaller instance types but the underlying cost disadvantage is still there. AWS Lambda fixes this problem by only charging you by the millisecond. If only one user uses my app I only pay for one user (hint: that would be free).
90% less Ops
If you are reading this post then you’ve probably managed servers before or you are attempting to avoid managing servers at all cost. While tools to automate server management have come a long way since 2000 when I started in web development it still requires a lot of planning and work. The company you work for probably has a full-time DevOps or systems team. The idea of not worrying about Ansible templates, Ubuntu updates, Gunicorn and NGINX configs is music to my ears. Even the Docker fans still have to do this.
Microservices and CI/CD are here to stay
Smaller services and less stressful deployments are very popular these days. Companies like Netflix are deploying hundreds of times a day. AWS Lambda and API Gateway are tailor made for this strategy.
Low Entry Barrier
Hell you can even write your functions on AWS’ Management Console. Seriously, if you have never worked with Lambda I challenge you to write a function and then use something like Gordon, Kappa, Zappa, Serverless, or Apex to deploy it. If you have an existing WSGI app you can use Zappa with minimal changes. I promise you it will not take more than an hour to ramp up.
We live in a NOW Society
It is quicker now than ever to move from an idea to a minimum viable product (MVP) and going forward Lambda will be a big part of that. When your end users complain about bugs, no one says “I would like this bug fixed next quarter”. They all say I want this bug fixed ASAP. With the serverless model, you can write and deploy a small production ready application to an auto-scaling, highly available platform in under 2 hours. This is not conjecture, I’ve done this twice (three times if you include this blog).
In conclusion, it is here to stay because it saves time, saves money, depending on your current platform it improves performance, and it is simple. Try API Gateway and Lambda first in the AWS Management Console and it will quickly become evident.