The Internet architecture has gained quite a lot of complexity during its lifetime. This jest tries to help people thinking about architectural complexity by comparing it to body fat, pointing out the similarities.
Fat Sitting Woman, by Jed Dougherty
More complex environment and more functionality easily lead to a more complex architecture. However, that is no excuse for letting the architecture just get more complex without constantly and persistently trying to simplify it.
Complexity is not simply a product of more requirements and more functionality. In general, architectural complexity is a result of having lots of stuff without clean organisation. A system with a huge number of parts or functions may still appear simple if the parts are organised in a comprehensive manner and if the interconnections are easy to understand.
Designing complex solutions and protocols is easier than designing simple ones. Designing a simple protocol requires hard work. One needs to understand conflicting requirements, consider different operating environments, and anticipate future needs. One has to build for future flexibility while trying to keep the current simple, without options. Designing under time pressure easily (but not necessarily) leads to more complex design than otherwise.
Once complexity has crept into a system it is very hard to get it out. Getting rid of fat is conceptually easy: you just stop eating. Getting rid of complexity is not that easy: stopping to develop new functionality is not enough; you also need to work hard to re-design existing functionality in order to reduce complexity.
A suitable amount of architectural complexity can be beatiful
Both fat and complexity are connected to aesthetics. While too much of body fat or too much architectural complexity is easily ugly, none of them is not only a sign of illness but also often quite ugly, too. With regard to complexity, elegant solutions tend to be more correct.
Reducing complexity should not be a primary goal per se. Some very complex systems (such as the living cell) are very successful.
Some level of complexity in a network architecture shows that the architecture is being used. People are responding to new requirements by designing new functions. This is useful.
The problems start when the system is missing some crucial piece of functionality for a long time. That tends to lead to "point solutions", attempts to circumvent the missing central feature by designing around it in under some special conditions. The accumulation of incompatible point solutions seems to lead particularly bad problems, making the system both complex and brittle.
Our goal should be keeping architectural complexity (fat) and functionality (muscle) in balance.
[Having a lot of fat around the waist increases the chance of developing insulin resistance, diabetes, and cardiovascular disease, while having fat elsewhere does not seem to increase the risks that much.]
The two waists of the protocol hourglass by
Steve Deering
In a layered architecture, the purpose of a waist (a layer with a single solution) is to allow upper layers to interoperate over different lower layers. Having a simple and well defined waist seems to be a good way to achieve that; in particular, having multiple protocols instead of just one seems to lead to excessive tunnelling.
The Internet architecture, with both IPv4 and IPv6, seems to lack a proper single-solution waist. Some people are trying to work around this from below, e.g., by using MPLS everywhere. Some people are trying to work around with various complicated tunnelling and protocol conversion mechanisms. Others are trying to lift the waist higher, and basically giving up the concept of a host.
It is the architectural complexity at the Internet waist that I am most worried about.
Architectural complexity leads to reduced agility. As a result of that, younger and less complex systems tend to eventually replace older and more complex system, independent of the weight (market position) of the old system.
Victoria Street construction site by
Christopher Holt
Changing the architecture drastically is painful. Anaesthetics are not an option; we can't have flag days. Market adaptation will take a long time and may not ever take place. Reducing the symptoms with various kinds of well-thought-out operational and maintenance medicine may be needed to keep the patient alive.
Despite all of the problems involved, personally I tend to believe that introducing a new waist layer to the Internet protocol stack architecture is needed. The question is more about timing and roadmaps than whether it is needed or not.
It is important to note here that even large-scale surgery is not a complete nor a permanent fix. More work will be needed to remove much of the remaining fat.
Tai Chi Chuan requires balance
Some people get addicted to exercise. It would be very good to get a group of people addicted in trying to get rid of unused protocols, unused options, and other unused stuff in the current Internet specifications.