I suggest that serverless computing, or “serverless” has hype that at this point has outpaced what the technology / philosophy / religion has been promising. Serverless computing arrived (debatably; please do not email me about this whatever you do, fans of Google App Engine / CGI scripts / managed SaaS offerings / pedants) with something of a bang when AWS announced Lambda functions in 2015. “In the future the only code you will write is business logic” proclaimed Werner Vogels, Amazon’s CTO and elusive traveler. Let’s be clear and for the purposes of this article define “serverless” as “functions as a service.” If you instead prefer to move the goal posts somewhat and suggest that other managed services such as S3 and DynamoDB are in fact other expressions of serverless, I strongly recommend you find a more lucrative hobby. You’re right, but that’s not my point today.
That’s what this article is about: Say what you will about serverless, it’s failed to live up to its promise and hasn’t proved to be particularly lucrative for anybody.
Serverless, but not portable
First, let’s talk lock-in. Yes, yes, every major cloud provider has a FaaS offering, but here’s what they don’t tell you: The bulk of your time building serverless applications will not be spent writing the application logic or focusing on the parts of your code that are in fact the differentiated thing that you’re being paid to work on. It just flat out won’t. Instead you’ll spend most of your time figuring out how to mate these functions with other services from that cloud provider. What format is it expecting? Do you have the endpoints correct? Is the security scoping accurate? Oh, it didn’t work? Time to embark on a microservices distributed systems murder mystery where the victim is another tiny piece of your soul, because getting coherent logs out of a CloudFront –> API Gateway –> Lambda configuration is CRAP.
That’s the kind of thing that isn’t portable anywhere. The ultimate expression of this problem can be observed in AWS’s Step Functions: There’s no equivalent elsewhere, so you’re well and truly stuck if you want to vacate the platform and happen to be using them.
The perceived value fallacy
I have a monstrous thing that powers my newsletter publication system. It costs maybe seven bucks a month to run provided you completely discount the weeks of work I’ve poured into this thing over the years. Epsagon was what I used to monitor it before Cisco bought Epsagon in the apparent hope of running it into the ground because it’s Cisco. I paid $120 a month for this, and felt that it was money well spent.
I’m apparently atypical here! Folks don’t like to spend an order of magnitude more to monitor a system than the system itself costs to run. This in turn leads to a situation in which serverless is perceived as low-cost — companies don’t feel the pain of an expensive problem around these systems. Expensive though the problem may be, it doesn’t feel that way, and so much of sales is driven more by psychology than by math. There are a bunch of great companies in the startup space that had to either pivot or close up shop entirely in the light of this unfortunate reality. The derived value of serverless is immense, but it doesn’t feel like it’s solving an expensive problem.
Who is going to own the upgrades?
The original version of the Last Week in AWS website was serverless. It used a Lambda function or two because I make poor choices. It tied CloudFront and S3 together, and it cost me pennies. One of the first things Mike Julian did when he took over as CEO of The Duckbill Group was to replace it with WordPress hosted by WPEngine. I was something of a serverless True Believer in those days, and pushed back on the decision. Mike’s very reasonable rebuttal was “okay, who can we find that isn’t you to enhance or update the site?” It turns out that while it’s super easy to find folks who know WordPress, you’re in trouble if both of the freelance developers who understand serverless are out sick that day — not to mention that they cost roughly as much as an anesthesiologist.
I like serverless technologies quite a bit, but the promise of it reducing the only code you write to business logic remains sadly unfulfilled. Its proponents increasingly have been reduced to edge-case adherents who fell in love with a technology — and not people who understand their business’s true constraints.