I love serverless, but it got something dramatically wrong
Serverless too closely couples the underlying cloud infra with your app and business logic. This shifts too many burdens onto the average app developer.
This is a repost of a recent Twitter/X post:
I love #serverless, but IMO, it got something dramatically wrong.— Jeremy Daly is building @amptdev (@jeremy_daly) September 15, 2023
It too closely coupled the underlying cloud infra with your app & business logic. This not only creates a bifurcation of business logic akin to Stored Procedures, but in many cases, ties the performance of your…
Serverless too closely coupled the underlying cloud infrastructure with your app and business logic. This not only creates a bifurcation of business logic akin to Stored Procedures, but in many cases, ties the performance of your application to the architectural decisions you've baked into your app code.
Rather than deploying apps to environments designed to support them - maintained, monitored, and optimized by platform engineers, serverless requires "developers" to understand the impact of choosing one statically configured primitive over another.
This is hard. The expectation that any one person can understand the complexities and nuances of several AWS (or other cloud providers') services, while also being a competent Java, Rust, Python, etc. developer is naive at best. What you don't know you don't know is MUCH worse than what you know you don't know.
I interviewed a 22 yo kid one time that said he was an EXPERT at Microsoft SQL Server. When I asked how long he had been using it, he replied, "Almost a year!" 🤦♂️
This isn't only an incredibly stupid thing to say, it's extremely DANGEROUS! You're just one misconfigured Retention Policy, public S3 bucket, or IAM "*" permission away from something very, very bad happening. And this is why Terraform dominates the market, because most devs probably SHOULD NOT be trusted to deploy whatever they want to the cloud.
Platform engineering has been around for quite some time now (despite the recent buzz), and that's because organizations are trying to allow their developers to be more productive, but in a way that doesn't compromise security, performance, and cost.
There are plenty of Infrastructure As Code (IaC) tools that shift these burdens onto the developer. Lots of them are very good for those developers looking to move towards cloud architect roles (which are definitely needed in modern organizations). But all of these tools presuppose that developers actually want this! Or perhaps, even more naively, assume that working developers that don't spend all day on Twitter (or X) actually have the time to invest in learning new services and digesting the latest feature added to Lambda (and how it could impact/help their customers).
I will reiterate: I LOVE #SERVERLESS. I think that deploying applications using serverless technology when possible is the fastest way to build highly resilient, global scale, virtually management free solutions. But upskilling an organization to get to that point can take years, succeeding only after running hundreds of experiments and having suffered countless failures.
I believe that the vast majority of developers just want to write code, and more importantly, solve their users' problems. But developers also need to be able to harness the power of the Public Cloud. In order to do this, a radically different approach is required.
This is why we built Ampt. Not because we're trying to restrict developers, but because we're trying to FREE them. If you're curious what this is all about, be sure to join our Launch Day livestream on September 20, 2023.