Interdependence & Modularity
A service’s architecture is interdependent if the way one part is designed, made, and delivered depends on the way other parts are designed, made, and delivered—and vice versa. When there is an unpredictable interdependency across an interface between parts—that is, we can’t know ahead of time how we must build or use a certain aspect of a service until we have delivered both parts together—then the same organization must develop both of the components if it hopes to develop either component. Interdependent architectures optimize performance in terms of functionality and reliability. This is precisely what successful companies have done when a service is “not good enough” to serve its customers and when the causal mechanisms between constituent parts are understood poorly. Many of these interdependencies are unpredictable, so all pieces must be designed interactively.
By contrast, in a modular architecture, there are no unpredictable interdependencies in the design of the service’s parts. Modular parts fit and work together in well-understood, crisply codified ways. A modular architecture specifies the fit and function of all elements so completely that it does not matter who makes the components or subsystems as long as they meet the defined specifications. Modular components can be developed in independent work groups or by different organizations working at arm’s length.
To illustrate, consider the architecture of an electric light. A light bulb and a lamp have an interface between the light bulb stem and the light bulb socket. This is a modular interface. Engineers have lots of freedom to improve the design inside the light bulb, as long as they build the stem so that it can fit the established light bulb socket specifications. Notice how new LED bulbs fit into old lamps. The same company does not need to design and make the light bulb, the lamp, the wall sockets, and the electricity generation and distribution systems. Because standard interfaces exist, different companies can provide products for each piece of the system.