In the past few days, we’ve seen two great essays around the topic of serverless. Both written by people that I respect and admire, these essays got me thinking.
The first, “The Unfulfilled Promise of Serverless” by Corey Quinn. The second is a rebuttal from Jeremy Daly, “The Unfulfilled Potential of Serverless".
You should read both essays in full, but I’ll give you the gist here.
Corey’s argument is that serverless compute was supposed to drive change in how we build solutions. It’s failed to live up to that. He cites the lack of portability and the low cost leading to a perception of low value as reasons. He calls out the lack of widespread adoption. That makes it harder to find talent comfortable with these solutions.
These are all great points and I agree with Corey.
Jeremy’s point is that it is early for serverless as concept. If we get out of the weeds, there’s a lot of value here. The tooling and ecosystem around the concept isn’t where it needs. That’s what is driving Corey’s argument. As things progress, we should see these issues recede, realizing the potential of serverless.
These are great points and I also agree with Jeremy.
But I think both essays only touch on a little of what’s going on here.
That’s New, What Is It?
Fifteen years into this “cloud” thing and AWS itself provides a good example of what’s happening.
When AWS expanded beyond just a couple of services, it reached a point where it’s potential was revealed. This wasn’t just an easier to use data centre. Building in the cloud let businesses shift away from a mountain of undifferentiated IT work.
The hardware and software upgrades. Provisioning new capacity. Operating lower level systems that users never see. And more. IT is very much an iceberg. The cloud teased that you could hand that work off and focus on solving business problems.
Some of that potential has been realized. However, a lot of business saw the cloud as better outsourcing. That was their existing mental model. They wanted to put the new technology into the old model. It was comfortable to do so.
The APIs and clear(ish) pricing from AWS was a smoother way of doing business vs. the traditional outsourcing contracts that plagued IT of the 1990s. That’s what was driving a lot of “the cloud is cheaper” myths.
It took years to break from that mental model. Eventually we realized that the cloud was different. It wasn’t about a better outsourcing model.
Building The New Way
It was—and is—about a cloud service provider operating at a scale where the economics are different. This economy of scale allows them to create new services and technologies. Most important, 99.9% of businesses will never reach that scale.
That scale provides an opportunity for the builders using the cloud.
Builders have access to technologies that would’ve taken years of steady growth to reach. Who would’ve been able to build out a storage service that had 11 9’s of durability? A queuing service handling millions of messages per minute?
Now, it is a simple API call and only costs pennies per hour.
This created new opportunities. The AWS Cloud was an exciting place to build for first few years of mainstream cloud acceptance.
It struck the right balance between power and simplicity. The tooling was mature enough. New features and services came out at a steady pace. With minimal effort, you could create very innovative solutions.
That’s still possible today. But builders are now dealing with overwhelming complexity. Just look at the list of AWS Cloud services in the AWS Management Console. How does anyone know where to get started?
In this confusion, builders default back to what they know.
It’s Always The People
This is why containers have skyrocketed in popularity. Especially compared to serverless designs over the past three years.
I see a lot of container-based solutions that would be better as serverless designs. Better in that they would be more efficient, less costly, and scale easier.
Why do these container-based solutions keep popping up?
Containers hit the sweet spot. They are familiar enough but push the envelope in interesting ways. They allow builders to be more productive using modern development methods. At the same time, they don’t require a new mental model.
What both Jeremy and Corey hint at is the people problem. The technology and concept around serverless designs makes more sense for most problems. People just aren’t ready for it yet.
Corey is right, serverless is an unfulfilled promise. Jeremy is also right, hang tight…it’ll happen.
Kubernetes Is The Stop Gap
The critical question is when? I don’t think it will happen for a while yet. Businesses will have to start to feel the pain of running Kubernetes before serverless comes to the forefront.
Before you fire up the Twitter cannon. Let’s take an objective look at Kubernetes. You cannot deny that it is a massive piece of critical infrastructure. It’s a burden for organizations adopting it. Despite the push away from running undifferentiated systems, k8s continues to rise.
Why? It lets team maximize the value their containers. Kubernetes allows containers to behave in modern ways. Solutions built on top of k8s are far closer to a serverless design than a traditional server-based ones.
That’s a good thing.
Yes, there’s a significant complexity cost associated with k8s. But it’s one that teams are used to paying. After all, is running k8s all that different than running your own application servers? Or mail servers? Or any of the other underlying infrastructure that we’ve been running for decades.
They are all critical to making other things run but your customers don’t get exposed to them. Conceptually, they operate at the same level. You teams and organization are ready for this effort. Doing this work is easier than changing the way everyone thinks.
Don’t get me wrong, this isn’t bad. This is normal. And it’s a good thing. Overall, these efforts move everyone closer to the ideas inherent in serverless designs.
Infinite Loops
This is a pattern that plays out time and time again. Gartner covers the technical side of it with their hype cycle approach. But, at it’s core this problem is a people challenge.
For the cutting edge, the devotees, the benefits of the new technology are clear. The shift to a new mental model is an easy one. But that’s a small percentage of the overall IT community.
The majority of the IT community is pushing towards a container driven landscape. And they will be there for a few years. Over time that will become too complex and burdensome. Then the mental model of serverless will become the dominant model.
It’ll take some time, but be patient. We’ve seen the pattern time and time again.
While the serverless community waits, innovation will continue. The ecosystem will mature. And when the rest of the IT community is ready, the technology will be too.
…and then we can start the loop all over again with whatever is next.