I'm not sure I'd fully realized it before, but the key problems in systems administration--at least the kind that I interact with the most--are really manifestations of a tension between complexity and reliability.
Complex systems are often more capable flexible, so goes the theory. At the same time, complexity often leads to operational failure, as a larger number of moving parts leads to more potential points of failure. I think it's an age old engineering problem and I doubt that there are good practical answers.
I've been working on this writing project where I've been exploring a number of fundamental systems administration problem domains, so this kind of thing is on my mind. It seems, that the way to address the hard questions often come back to "what are the actual requirements, and are you willing to pay the premiums to make the complex systems reliable?"
Trade-offs around complexity also happen in software development proper: I've heard more than a few developers talk in the last few months weigh the complexity of using dynamic languages like Python for very large scale projects. While the quests and implications manifest differently for code, it seems like this is part of the same problem.
Rather than prattle on about various approaches, I'm just going to close out this post with a few open questions/thoughts:
What's the process for determining requirements that accounts for actual required complexity?
How do things that had previously been complex, become less complex?
Perhaps someone just has write the code in C or C++ and let it mature for a few years before administrators accept it as stable?
Is there an corresponding level of complexity threshold in software development and within software itself? (Likely yes,) and is it related to something intrinsic to particular design patterns, or to tooling (i.e. programming language implementations, compilers, and so forth.)
Might better developer tooling allow us to programs of larger scope in dynamic languages (perhaps?)
Reader submitted questions:
- Your questions here.
Answers, or attempts thereat in comments.