Chapter 3. The Impact of Docker on Java Application Architecture
“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.
Cloud-Native Twelve-Factor Applications
In early 2012, Platform-as-a-Service (PaaS) pioneer Heroku developed the Twelve-Factor App, a series of rules and guidance for helping developers build cloud-ready PaaS applications that:
- Use declarative formats for setup automation, to minimize time and cost for new developers joining the project
- Have a clean contract with the underlying operating system, offering maximum portability between execution environments
- Are suitable for deployment on modern cloud platforms, minimizing the need for servers and systems administration
- Minimize divergence between development and production, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access