I see this too often with new teams which want to work with Serverless services to build their solution. They focus on what services they want to use and how they will split up code into lambda functions to deliver their code. All of this is great to be thinking about. They are thinking about using managed Services, they feel like they have the Serverless mindset because they are going to write code for Lambda - but do they really have the Serverless mindset? Are they really focused on the right thing?
Writing Lambda Code is not thinking Serverless!
The enthusiasm is great but we need to be changing how we talk about Serverless, we are not writing and delivering code to AWS Lambda - that is not being Serverless! It may feel like it but we are limiting our viewpoint and being singleminded in our focus - this is dangerous and will get you in trouble at some point. Just using Managed Services for everything is not the right solution all the time, it is a LOT of the time but we need to be mindful of what we are building and focus on the actual problem we are solving.
Serverless is not a Silver Bullet
Just creating a system that is built with Managed Services is not going to create a Scalable solution without limits. In the cloud there are always limits, and as cloud architects we need to be mindful of every managed service quota and limit which applies to our problem space. This is additional thinking we need to take up when we want to “Think Serverless”.
Think Event Driven
AWS Serverless DA’s have started to change the messaging for Serverless architecture to Event Driven Architecture (EDA). This is a subtle change but is an important one, since it re-focuses us back to the fundamental architecture principles of Serverless which enable it to be so great:
- Event driven
- Asynchronous, stateless processing
- Horizontally scalable
These core principles enable any system to become hyper-scalable and are what make Serverless Systems so powerful. Sure there is a lot more that goes into the hyper-scalability but the core, fundamental thinking from an architecture perspective boils down to these elements with Event Driven being the prime enabler.
If you want to get deeper into Event Driven thinking I recommend taking a look at the EDA Visuals from David Boyne and the AWS DA Team on Serverlessland.