When designing software systems, architects and developers have plenty of architectural options from which to choose. Over the last few years, we have seen the growth of Microservice-based systems. However, the idea of monolithic, modular systems has recently regained popularity. Regardless of which architecture we choose, how can we build the individual applications that comprise our overall system such that their structure is evolvable to follow business requirements?
What if I were to tell you there was a way for you to express these logical application modules in code so that you can build well-structured, domain-aligned Spring Boot applications? Spring Modulith does this by providing the developer a way to declare logical modules in Spring Boot applications. It also provides the tooling needed to write Junit tests that run structural validation tests, run integration tests for individual modules, and to document the module arrangement. It also has features that let you implement module interactions in a loosely coupled way and then lets you observe module interactions between each other at runtime. In this talk, we discuss the features that are available and then in a live coding demonstration show you how they work.