Spring-Projekte strukturieren mit Modulith

Stellen wir vor, wir arbeiten an einem ganz frischen Projekt, quasi auf der grünen Wiese, und so langsam wird es doch ganz schön groß. Wie können wir es strukturieren? In mehreren Projekte habe ich mit Entwicklern zusammengearbeitet, deren Antwort fast reflexartig war: Aufteilen in Microservices! Der Reflex hatte einen Grund: Sie hatten Erfahrungen mit einem …

Softwarearchitektur: Schichten und DTOs

Neulich stolperte ich ArchUnit, ein Tool, mit den man testen kann ob sich Java-Code (oder auch Kotlin-Code) an bestimmte Architekturvorgaben hält. Zum Beispiel kann es in einer Spring-Anwendung überprüfen, das keine Serviceklasse eine Controllerklasse aufruft. Eine solche Regel klingt überflüssig, warum sollte ich von einem Service einen Controller aufrufen?