Why architectural complexity is like body fat — food for thought

by Pekka Nikander

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.

Artwork 'Fat Sitting Woman'
Fat Sitting Woman, by Jed Dougherty

  1. You naturally tend to gain it while you grow older
  2. It is very easy to gain it and very hard to get rid of it
  3. It is healthy to have some of it but not too much
  4. Having it on waist may be worse than elsewhere
  5. Younger and slimmer will eventually beat you
  6. Sometimes surgery is a good way to start
  7. Long term results require constant exercise

You naturally tend to gain it while you grow older

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.

Back to top

It is very easy to gain it and very hard to get rid of it

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.

Back to top

It is healthy to have some of it but not too much

Complex architecture
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.

Back to top

Having it on waist may be worse than elsewhere

[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.]

Two waists of TCP/IP
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.

Back to top

Younger and slimmer will eventually beat you

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.

Back to top

Construction site
Victoria Street construction site by Christopher Holt

Sometimes surgery is a good way to start

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.

Back to top

Children's tai chi class
Tai Chi Chuan requires balance

Long term results require constant exercise

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.

Back to top