My Opinion on Serverless
I attended Serverlessconf in London to speak with people involved in the Serverless world. Vendors, Framework maintainers, and users like myself. I reflected on the discussed topics and here it is: my opinion.
Beta vs Stable
I can’t believe that business rely on beta software such as Azure Functions (in Preview) or Google Cloud Functions (in Alpha). There is a reason why providers attach the beta label to their software. Because it’s not stable! So please don’t run a business on top of that. Pet projects are more appropriate.
Please question those Vendor Evangelists. They are 100% not neutral! They get paid to tell you that their product is great. Don’t spread their arguments without reflecting on them. It’s your mind. You have the freedom to think by yourself.
Lambda chains vs event driven
I talked to many people and one hot topic was Lambda chains. A Lambda function calls a Lambda function calls a Lambda function.
If your Lambda needs to talk to other Lambdas a lot you may need to slice your problem better. Checkout bounded contexts to improve your modeling skills. Try to model your business process asynchronously by using an event driven design and avoid synchronous chains.
I can recommend the talk Serverless for Developers: Tips for Your Next App by Danilo Poccia.
Serverless - the name
I have not spoken to a single person who was not aware of the fact that the code still runs on servers. I recommend that we focus on a different topic than finding a name in the coming months.
Why not spend that energy to think about the event driven topic?
Platform is what matters
AWS Lambda alone is only the tip of the ice berg. The value comes from the AWS platform. Use Lambda to glue AWS services together and you will realize the potential. When evaluating other providers this is what matters!
I want to fix it myself syndrom
Oh my god: Lambda is down. I can’t fix it. I rely on AWS to fix it.
That’s called specialization and is the driver for our wealth. Someone maintains my car. Someone manufactures iPhones. Someone produces my food. I have no idea how this works. That’s fine!
But I hardly believe that I’m better at what I do in my field compared to people outside of my field. So why should this not apply to the Lambda staff?
There is still Ops
Let me tell you what I have observed in various projects:
- There is less Ops in EC2 compared to run your own VMware solution.
- There is less Ops in RDS compared to run your own Oracle database.
- There is less Ops in Kinesis compared to your own Kafka cluster.
The same is true for Lambda.
By the way: There is less Dev in Lambda compared to your Play/Spring/Express Framework as well. We get more productive. That’s fine.