The Modern Monolith, with Spring Modulith
GOTO Amsterdam 2024

The Modern Monolith, with Spring Modulith

Monday Jun 10
09:00 –
16:00
695.00 EUR

In the last decade, much emphasis has been placed on decomposing monoliths into microservices. While this practice has important benefits, including increased agility for development teams and independent lifecycle management for applications, it also introduces new complexities, such as managing many git repositories and many component deployments.

In some cases, the benefits of monolith decomposition are absolutely necessary, but not in all. Sometimes we invite complexity for no good reason. In these cases, it behooves us to consider maintaining monolithic code bases. This does not mean, however, to revert back to the spaghetti monoliths of yesteryear, or to the cursory attempt to organize code into services of the SOA age. Instead, we must be sure to apply the hard-fought lessons we have learned from microservices back to the trusty old monolith and create a new paradigm for Modern Monoliths. Enter Spring Modulith. In this workshop, we will explore the concept of the Modern Monolith and how this compares to the Monoliths of yesteryear. How are they different, and what challenges do these differences aim to resolve?

We will do hands-on exercises using Spring Modulith to understand how to structure our applications and enforce adherence to best practices for monolithic applications. By the end of this workshop, you’ll have a clear idea of how best to structure your code base: when to use modern monoliths (aka Moduliths), how to structure and enforce proper practices with Moduliths, and when and why to use microservices.

The agenda for this masterclass will include:

  • Technical vs functional design
  • The problem with traditional architectures
  • Monoliths vs Microservices: characteristics and trade-offs
  • Domain-Driven Design and the Modular Monolith
  • Java compiler limitations: an opportunity for improvement
  • Helpful tooling: jMolecules and ArchUnit
  • Hands-on with Spring Modullith
    - Principles of modular arrangements
    - Verification of modular arrangements
    - Integration testing individual modules
    - Observing module behavior
    - Auto-generating documentation