At present, the topic of microservices is not new to anyone. Many popular services utilize this approach to organize their architecture. On the surface, there are numerous advantages, flexibility, and adaptability in opting for such a software development approach. However, along with modern solutions come a range of downsides, such as the complexity of maintenance, redundancy, development time, and operational expenses. Trends are cyclical, just like the adoption of specific architectural principles in software development. Therefore, there's a renewed tendency towards building monolithic applications, which are simpler in terms of structure. Just recall the recent news from Amazon about migrating from microservices to a monolith, significantly reducing infrastructure costs - it's impressive!
In this session, we explored the application of a new experimental project within the Spring ecosystem for developing monolithic applications with modular structure, known as Spring Modulith. To provide context, we will briefly examine the features, advantages, and disadvantages of both approaches - microservices and monoliths. I will share my insights on enhancing the typical structure of average Spring Boot projects and why it's crucial to focus on the domain rather than just technical concepts.
Spring Modulith supports the automatic recognition of project modules and their component constituents, dependencies between them, and access levels. Additionally, testing modules independently of the entire application context becomes feasible here. Another notable aspect is that the framework can automatically generate Ascii-docs and PlantUML diagrams for your project. By utilizing event-driven communication, module coupling can be reduced as well. It's worth mentioning that the framework is actively evolving and already has a stable release.
And, of course, all the features of this framework will be demonstrated in a live coding demo. Enjoy the presentation!