The title is taken from an 80’s commercial describing the new Oldsmobile line of cars:
Components (and micro services) are the hot new keyword in the world of agile development and DevOps. For developers they bring up connotations of reusable components – sort of like object oriented programming and design patterns. That is true – but not the real driver for containers. Containers solve delivery problems more than development problems. In fact, in the short term moving to containers can be quite uncomfortable for developers, and may require a complete re-architecting of the system.
Component enabled delivery is similar to the platform and module approach to designing products, like cars and airplanes.
This requires much more upfront design to ensure that components are architected to be independent and reusable, like seats that can be be used both in a Volkswagen and Audi. On the other hand this type of modularity, if not designed correctly, can create intra-module dependencies that increase complexity, time-to-detect and time-to-resolve. It can also wreak havoc with non-functional aspects of the system.
So before embarking on a component strategy decide if you are willing to pay the upfront costs associate with redesiging your code. The tradeoff is a better overall system that is more flexible and easier to deploy.