In unseren Lightning Talks teilen unsere Software Engineers ihre Erfahrungen mit bestimmten Technologien und geben Impulse für die Projektarbeit.
Wer sich mit der Entwicklung von Anwendungen in Java beschäftigt weiß, dass der Einsatz eines Frameworks wie Spring die Entwicklung erleichtern kann. Für Backend-Anwendungen, die größer und komplexer sind als klassische Microservices, nutzen wir bei eXXcellent solutions häufig Spring Boot, um die Entwicklung zu beschleunigen. Größere Anwendungen lassen sich typischerweise in unterschiedliche Module aufteilen. Hier setzt Spring Modulith an.
Spring Modulith: Strukturierung komplexer Spring-Boot Anwendungen
Spring Modulith ist ein noch relativ neues Framework im Spring-Ökosystem. Es ermöglicht mithilfe von Annotationen sehr leichtgewichtig Module zu definieren. In diesen Modulen kann dann definiert werden, welche Services zur public API des Moduls gehören. Wenn man sich hier an die Konventionen von Modulith bzgl. der Paketstruktur hält, kommt man mit relativ wenigen Modulith-Annotationen aus. Wenn davon abgewichen wird, lässt sich dies auch realisieren, jedoch mit mehr Konfiguration. Die für die Module definierten Zugriffsregeln lassen sich dann per Unit-Tests verifizieren. Hierfür verwendet Spring Modulith im Hintergrund ArchUnit.
Spring Modulith bringt darüber hinaus Tooling mit, das es erlaubt die definierten Module in Diagrammen zu visualisieren. Diese Diagramme lassen sich automatisiert im Build-Prozess generieren und bleiben so stets aktuell.
Durch Erzeugung von Traces lassen sich Modulinteraktionen in Tools wie Zipkin visualisieren.
Ebenfalls Teil von Modulith ist ein Framework, das Modul-Interaktionen über Events steuert und hierbei Mechanismen zur Fehlerbehandlung vorsieht.
Da es sich bei Modulith noch um ein relativ junges Framework handelt, sollte vor dem Einsatz in einem konkreten Projekt geprüft werden, ob sich das Projekt für Modulith eignet.
Die Definition und Verifikation von Modulen und deren Interaktionen mit Modulith kann relativ leichtgewichtig integriert werden und ist hierdurch am ehesten auch jetzt schon einen Blick Wert. Die komplizierteren Features wie die eventbasierten Modulinteraktionen sollten nur nach sehr sorgfältiger Prüfung eingesetzt werden, da sich hierdurch eine starke Abhängigkeit des Projekts zum Modulith-Framework ergibt.