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, ...

Get Containerizing Continuous Delivery in Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.