© PremiumArt/Shutterstock.com
Der schnellste Weg zu modernen Java-Microservices

Per Microframeworks durch die Galaxis


In der Softwareentwicklung ist nichts so beständig wie der Wandel: Die letzten Jahre waren geprägt vom Microservices-Trend und der damit verbundenen Abkehr von schwergewichtigen, monolithischen Anwendungen hin zu kleineren, Cloud-basierten Services und zuletzt zu Serverless Computing.

Im Bereich der JVM konnten sich Spring Boot und Eclipse MicroProfile als Quasistandard-Frameworks für die Microservices-Entwicklung etablieren und haben auch maßgeblich zum Erfolg des Architekturpatterns beigetragen. Allerdings bringen diese Frameworks einigen Overhead mit sich, stammen sie in ihrem Kern doch aus der Ära vor Microservices und Cloud.

Daher gewinnen in letzter Zeit junge, schlanke JVM-Frameworks an Bedeutung, die von Grund auf und vollumfänglich für Cloud-Anwendungen konzipiert wurden. Zudem bekommen schon länger existierende Frameworks, die sich durch ihre Leichtgewichtigkeit auszeichnen, in modernen Cloud-Betriebsszenarien neuen Aufwind. Dieser Trend lässt sich unter dem Begriff JVM Microframeworks zusammenfassen.

Was sind JVM Microframeworks?

Eine allgemeingültige Definition, was exakt ein JVM Microframework kennzeichnet, lässt sich schwer finden, da die Bandbreite einfach zu groß ist. So ist etwa Javalin in seinem Funktionsumfang bewusst deutlich fokussierter und reduzierter. Micronaut und Quarkus bieten dagegen erheblich mehr Features und positionieren sich vielmehr als Full-Stack-Frameworks.

Dennoch gibt es einige grundsätzliche Charakteristika, die sich in allen JVM Microframeworks finden, auch wenn diese Eigenschaften mehr oder weniger stark ausgeprägt sein können:

  • ausgelegt für die Erstellung von Cloud-nativen Microservices

  • Kernbestandteil: leichtgewichtiges Web-Framework

  • schnelle Startzeiten und geringer Speicherverbrauch

  • Fokussierung auf Einfachheit und Entwicklungsgeschwindigkeit

  • GraalVM-friendly

Ausgelegt für die Erstellung von Cloud-nativen Microservices

Grundsätzlich sind JVM Microframeworks zur Entwicklung von Microservices-Landschaften vorgesehen. Genauer gesagt helfen sie bei der Erstellung von überschaubar großen, modularen Services, die in der Regel in der Cloud betrieben werden und dort horizontal skalierbar sein sollen. Meist werden sie als Fat/Uber JAR paketiert und benötigen lediglich eine JVM, um ausgeführt zu werden. Für gewöhnlich werden diese Artefakte in einem (Docker-)Container bereitgestellt und von einer Cloud-Plattform wie Kubernetes orchestriert.

Kernbestandteil: leichtgewichtiges Web-Framework

Um einen Dienst in der Cloud anbieten zu können, muss ganz grundsätzlich ein Server – wie zum Beispiel Tomcat, Jetty oder Netty – konfiguriert, gestartet und der entsprechende Prozess am Laufen gehalten werden. Darüber können dann REST APIs angeboten und Webinhalte ausgeliefert werden.

Schnelle Startzeiten und geringer Speicherverbrauch

Bei vielen etablierten Frameworks, wie beispielsweise Spring, basiert die Auflösung der Framework-Logik maßgeblich auf Reflection, Runtime Proxies, Dynamic Classloading und Classpath Scanning. All diese Funktionalitäten sind an sich sehr mächtig. Allerdings sind sie auch CPU- und speicherintensiv, was sich nachteilig auf die Startup Time und den Memory Footprint einer Applikation auswirken kann.

Der Grund dafür ist, dass diese Frameworks ihren Ursprung in einer Zeit haben, in der die Optimierung von langlaufenden Prozessen noch das Maß aller Dinge war. Hier sind Nachteile bei Startzeit und Speicherverbrauch noch nicht so deutlich ins Gewicht gefallen. In einer Cloud-nativen Microservices-Architektur, in der Instanzen schnell skaliert und neu verteilt werden, spielt das jetzt aber eine wesentliche Rolle.

Microframeworks schaffen es, ihre Framework-Logik anderweitig umzusetzen. Wie sie das erreichen, ist sehr Framework-spezifisch: Oftmals erfolgt die Konfigu...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang