“If you can’t build a [well-structured] monolith, what makes you think microservices are the answer?”
Simon Brown, Coding the Architecture
Continuously delivering Java applications within containers require several long-standing architectural patterns and paradigms be challenged. The potential for automation and immutability that containers provide (along with new properties imposed like resource-restriction and transience) means that new architecture and configuration approaches are required. This chapter looks at examples of these changes, such as the Twelve-Factor Application, the decomposition of monolithic applications into smaller API-driven composable components (microservices), and the need to develop mechanical sympathy—an appreciation and respect for the underlying deployment fabric.