Did Amazon really say that Serverless was a mistake?

Recently Amazon released a post describing how they refactored an existing service to remove a lot, if not all, serverless calls. And many people jumped on this claiming things like "Amazon admits serverless sucks".

Unfortunately, it is not true.

What they DID say however really parallels what I said about Microservices. Which is to say, they went too far. They built serverless functions all over the place without understanding how the overhead would impact them. It doesn't mean that serverless is wrong. Not by a long shot.

As I, and most experienced devs, recommend; start small. Whether you're building serverless or microservices, the key is NOT to try and make every little thing into a separate serverless function or microservice. If you know what the system will look like well enough to break it up properly from the start, then do it. But, the nature of dev is that people almost always use your software differently than you expect, so I would really question if you DO know how best to split up a project at the start.

Instead, I suggest picking one or two areas which are logically distinct from the rest of the app to split into microservices. The advice would be a bit different for serverless. But, generally, I would say for serverless "choose something atomic and logically complete". And this is exactly what Amazon did NOT do. They had a process which required MANY serverless calls to complete a single task. 

Why should you split one or two pieces out if you don't know? To make sure you know what the architecture will look like and to force yourself to deal with some of the challenges.

And, I will actually say this; Amazon made the best mistake possible. They over-engineered and re-evaluated. It is easier to shave off over-engineered aspects of a project than it is to add software engineering elements to an existing project. So, while the mistake was monumentally bad, it is much less likely that they would have invested in the re-architecting if they had to go the other way.

Comments

Popular Posts