Nothing is Perfect
It's tempting to think we can create a perfect "black box" platform where developers never have to worry about the infrastructure underneath. Build a clean enough API, and the messy reality of pods, nodes, and network policies simply disappears.
In 2002, software engineer Joel Spolsky formulated the Law of Leaky Abstractions:
"All non-trivial abstractions, to some degree, are leaky."
This means that no matter how hard you try to hide the underlying complexity, someday, something will go wrong that forces the user to understand what's happening inside the "black box." The abstraction doesn't fail completely — it just stops hiding the details at the worst possible moment.
Examples of Leaks
- TCP/IP: The protocol presents a reliable, ordered byte stream between two machines. But if a physical cable is cut, your "reliable connection" abstraction suddenly leaks the reality of lost packets, retransmission timeouts, and connection resets. You now need to understand the underlying network to debug the problem.
- SQL Databases: You write a SQL query and the database engine figures out how to execute it. It's a powerful abstraction. But if your query is slow, you suddenly need to understand indexes, query planners, and table scans — the very details SQL is supposed to hide. The abstraction leaked under load.
- Kubernetes Deployments: A platform might expose a simple
deploycommand. But when a pod entersCrashLoopBackOff, the developer needs to know what a pod is, how to read its logs, and what an OOMKill means. The Kubernetes reality leaks through the moment something breaks.
Implication for Platforms
Don't try to build a hermetically sealed platform. Accept that your abstractions will leak. The question is not whether they will leak, but how gracefully they leak when they do.