My experience with Serverless began in 2017 and since then it’s been my favourite architecture pattern. The game changer about Serverless is you don’t pay for idle capacity. AWS invented it with Lambdas.
A fun episode about this experience was in the early 2020, when I ran a coding challenge with the help of my good friend Marco Iamonte. I was running a recruitment campaign and wanted to test the participants’ skill not only as software developers but also as software architects. Gamification is a way to do that.
Marco made up a quick frontend in Quasar and the challenge was to implement the simplest backend possible, using any software and technology. The challenge lied in understanding the front end code in a short time and coding a compatible back end. Minor edits to the frontend were allowed.
The typical approach from participants was using monolithic stacks, like Laravel. There was a good solution also in NetCore. Marco himself experimented and developed, outside of the challenge, a solution in Loopback4. We like experimenting and side projects often turn into full products.
I chose to step in and participate, in the hope to motivate other participants. This turned out to be a bad idea, as my solution outclassed others and it was impossible to pick another winner. My solution used AWS Lambda.
Because it was Serverless, I could deploy without worrying about cost considering the light workload and estimated number of invocations, so our total final cost was zero. Note: Serverless doesn’t mean you can liberally provision resources. It was ok for this small case. In general, there is a FinOps discipline (also called Cloud Financial Management) – that, later, I was the first in the world to get certified at (simultaneously with Jiri Pik and Jez Back). This was an advantage no other participant had.
The advantages of AWS Lambdas
- Lambdas are elementary to debug
- They may act as standalone microservices
- Coding the Lambdas was fun, because of this simplicity and fast deployment to quickly test changes
- It reduced the lines of code to a minimum
- Isolating the code logic, it took seconds to host the frontend on plain S3
- Performances were excellent
- You can configure memory, space, and more. It scales automatically.
Before the challenge I openly discussed about the Serverless possibility, but other participants were skeptical, betting their solutions would be quicker due to their prior experience. Development aside, in order to submit, they had to write a deployment guide. Marco, arbiter of this challenge, could almost never carry out instructions without errors, no matter if we virtualized it into an instance or ran it locally.
As the main takeaway from this challenge, everyone asked about my Lambda code and approached the newly found topic of Serverless architecture with great enthusiasm.
AWS released Lambdas in 2014 and, by doing so, de facto, invented the Serverless architecture. Lambdas exploded in popularity in 2016, when AWS added support for Python and Nodejs. I found them in 2017. To compare, Google released Cloud Functions beta in Mar 2017, while Microsoft released Azure functions in Nov 2016.