I’m procrastinating writing my Monitorama talk, so here’s something that I’ve been thinking about for a while: Is there a space for Serverless applications in the Open Source world?
We’ve built up a huge ecosystem of tooling to help us run serverless applications. We have platforms, we have observability, we even have databases, kv stores, queues, and everything else that we could possibly want to deploy an application. So why are there no open source serverless applications?
No matter how much we try and espouse the benefits of serverless - the scalability, the cost efficiency, we just can’t seem to beat a binary that we can plop onto a machine and run it. Sure, vendors have demos, things they can point to to demonstrate what you can do with their platform, but if you want to run an open source project, you’re gonna be spinning up a VM (or running your own hardware, if you’re kool).
Maybe it’s because on some level, Serverless applications are sort of inherently political. Because every serverless platform is different, and there aren’t any standards for these things, it’s impossible for an application to be “generically” Serverless; it’s necessarily tied to whatever Serverless applications a maintainer decides to target. Regular binaries are democratized in a way; you can deploy to whatever you want - EC2, GCP, a Raspberry Pi in your bathroom, the old Compaq Portable your parents still have in their garage that you somehow managed to get running after weeks of tracing with a multimeter and a soldering iron, whatever.
At the same time, we also have an example of doing this somewhat “well” - Docker containers. We have a bunch of container runtimes, and even a standard that evolved out of them, and with that we can now deploy containers to pretty much anywhere. No such standard exists for serverless functions though (yet, I’m hearing good things from a few groups, including the CNCF Serverless Working Group).
Call me cynical, but I’m not actually sure that any such standard would even survive. In a world where Serverless functions are inherently Cloud based (yes, things like OpenFAAS exist, but the vast majority of use is still in Cloud providers), they represent an incredibly sticky product for Cloud providers - how many companies are going to rewrite their entire application to move to a new provider? In that light, it’s arguable that it would be better for Cloud providers to not support a standard, and prevent their customers from leaving.
And so the question remains: If Serverless will continue to exist as an architecture, will we ever get Open Source applications that are built on it? The answer feels like no, at least not without a comprehensive standard that all the platforms agree on. Otherwise, what will happen when I use a different Cloud provider than what the project I want to use supports? Any Open Source project would necessarily be alienating a portion of its users. Maybe we’ll see Cloud providers sponsoring Open Source projects to build on top of their platform? That’d be an interesting funding model for Open Source.
I'm on BlueSky: @colindou.ch. Come yell at me!