I’ve been in tech for several years. Over time, I’ve configured things that I’m proud of and I’ve built things that I’m not so proud of. Most of the things that I’m less proud of involve unnecessary or unwarranted complexity that has created operational challenges. In some cases this was a result of a small shop that wanted to cram way to much into a single box to save money. In other cases, I probably layered my own duct tape over my own band-aids.
In any case, the lessons I have learned point me toward the elegance of simplicity. This article assesses some of the operational challenges found in modern day networks and looks at the challenge of balancing complexity and simplicity.
The question is what exactly is simplicity. Simplicity in one area seems to create complexity in another area. Deciding where to accept complexity as a trade off for simplicity in another area is a bit of an art. To better understand how simplicity creates complexity in other areas, I will provide a couple of scenarios.
One example might be an older key system or PBX. In many cases, the extension was determined by the pair of wires that the phone was connected to. While this is technically simple, it has operationally complexities. For example, moving a phone required moving the connections in the wiring closet.
Some solutions mask the complexity behind what appears to be a simple administrative tool. For example, a complex networking system may be controlled by a seemingly simple graphical tool. Whether this is an acceptable trade-off probably depends on the reliability of the tool, the API’s it connects to and the operational errors it may prevent.
There are many cases where we find operational complexities that need to be simplified. As we simplify these operational aspects, the technical simplicity seems to suffer. If we have to trade our technical simplicity for more complex technologies or protocols, we must be careful to ensure that we are using proven solutions.
Today we’re seeing a rise in virtualization as a means to solve many operational challenges. This is, in effect, simplifying operations and increasing the lower level complexities. This is a good trade-off only if the benefits outweigh the any challenges being introduced by the increased lower level complexities. In most cases, I think server virtualization technologies have matured to the point that these benefits do outweigh the trade-offs.
As we deploy new solutions, we need to consider where we value simplicity and where we accept complexity. In doing so, we can minimize risk to our organizations and our customers.
Some of the factors that should be considered in making such an assessment include:
- If underlying technology is complex, is it proven?
- Is a single box solution more or less complex than a more modular approach?
- Can operational procedures be implemented that are reasonably resilient to human errors?
- Are common deployment models or best practices established and being followed?
- Is the staff that is expected to directly deal with the complexities capable of doing so?
Well designed technology is pleasure to operate and support. Complexity, whether in lower level technology or all the way up in the support processes, leads to challenges. In technology, we must realize that creating simplicity in one area often creates complexities in other areas. Accurately determining where complexities are “most” acceptable is key to building large-scale and reliable networks and systems.