Buoyant reposted this
Kubernetes is "a platform for building platforms", as Kelsey Hightower once said. If you use Kubernetes, how many other components do you also need to add? I dug into the CNCF's own survey data to find out. The answer, as they say, will shock you. I took the 2023 CNCF survey results and filtered to only responses representing late-stage, mature cloud native adoption. The average number of graduated or incubating CNCF projects used by these respondents? 20. How do you possibly combine 20 projects into one cohesive platform? And how do you do it in a way where the complexity of each project doesn't compound—complexity always seems to want to compound—and the result is something coherent and usable by your developer audience, who frankly doesn't care about these details and wants something that just works? Is the answer "keep it simple"? We've always focused on simplicity when building Linkerd. This is Linkerd's key selling point—in a world where service meshes are notorious for complexity, Linkerd is simple. There's a great Rich Hickey talk called Simple Made Easy, which dives into what "simple" really means in the context of software, which informed so much of how we designed Linkerd. These ideas have served us well for years. But I'm increasingly wondering whether "simple" is the whole story here. Simple, in the software sense, suggests doing less, doing one thing and doing it well—the well-established UNIX philosophy. But what I see our customers encounter is a requirement to do more, not less. They need their platform to do a lot of things (the business itself requires a lot of things, the developers require a lot of things)—anything it can't do is a failure of the platform. And they have to do all these things by combining other things together—an integration problem, not a build-from-scratch problem. To me it feels like we need a little more than simplicity: a model of *anti-complexity*. Obviously this is an analogue to "anti-fragility", which is the idea that you can go beyond resilience and build something that actually gets stronger as stress increases. Anti-complexity, by analogy, would mean that something gets *simpler* as you add more components. Is that even possible? Over the next six months I'm going to be exploring the idea of anti-complexity in Kubernetes with a variety of leaders in the ecosystem. My first conversation is in two weeks with Rhys Oxenham, who has spent the past decade and a half working directly with customers who are building platforms in a huge variety of situations and who has been exposed to a wide variety of successes and failures. What is the key to building a successful platform with Kubernetes, and how Join Rhys and me on September 24th and let's get into it!