Suche
Microservices und Java EE

JavaOne Tagebuch – Tag 5 „The final Chapter“

Lars Röwekamp

Heute war also der letzte Konferenztag der JavaOne. Auf meiner Agenda stand natürlich die traditionelle JavaOne Community – a.k.a. Comedy – Keynote, sowie die eine oder andere Session zum Thema Microservices.

Auch wenn der Hype rund um das Thema Microservices hier auf der JavaOne sicherlich nicht ganz so groß ist, wie auf speziell darauf ausgerichteten Konferenzen, so merkt man doch, dass es auch – oder gerade – in der Java Community sehr viel Diskussionsbedarf dazu gibt.

Microservices und Java EE

Meine erste Veranstaltung zum Thema Microservices war die Session von Reza Rahman (Oracle) und Steve Millidge (Payara) mit dem passenden Titel „Down-to-Earth Microservices with Java EE“. Man merkte Reza Rahman, seines Zeichens scheinbar ein 100%iger Verfechter der reinen Java-EE-Lehre, schnell an, dass er nicht wirklich ein Fan von Microservices ist:

„I am not here to ‚cheerleade’ microservices. I am here to give you a realistic view on it“

Gut gefallen hat mir Rahmans Definition von Microservices:

„The problem is, that Microservcies are not necessarily micro and not necessarily services. For me building a microservice based system means take a large system and separate it into small(er) separately deployable parts“

Aus rein technologischer Sicht hat Java EE alles, was es zur Entwicklung von Microservices benötigt, so Rahman. Dem stimme ich absolut zu. Und neben den notwendigen APIs zur Implementierung von RESTful Services existieren seit Jahren auch Tools für das Management und Monitoring sowie zur Sicherstellung einer hohen Verfügbarkeit. Alles andere wäre ehrlich gesagt auch verwunderlich, ist Java EE doch nicht nur eine Ansammlung von APIs, sondern vor allem auch eine Enterprise-Computing- Plattform.

Nachdem Rahman auf Microservices im Allgemeinen und die Möglichkeit der Umsetzung mit Hilfe von Java EE im Speziellen eingegangen ist, zeigte Steve Millidge anhand der Cargo Tracker Application – einer Art Blueprint zur Kombination von Java EE und DDD – wie ein Monolith in wenigen Schritten zu einer Microservice-basierten Anwendung migriert werden kann. Zu diesem Zweck extrahierte er einen Service aus der monolithischen Cargo-Tracker-Anwendung und deployte diesen im Anschluss mehrfach separat, wobei der Zugriff aus der ursprünglichen Anwendung heraus auf die verschiedenen Instanzen des Services über einen Loadbalancer erfolgte. Die Sourcen der Demo finden sich auf GitHub und sind auf jeden Fall einen tieferen Blick wert.

Alles in Allem war die Demo von Millidge wirklich gut gelungen. Das Beispiel zeigte vor allem, wie sich bei der sukzessiven Migration eines Monolithen hin zu einer Microservice-basierten Architektur die Komplexität – und somit auch das Risiko – innerhalb der Entwicklung verringert, im Gegenzug dazu die Bereiche Deployment, Management und Monitoring aber stark an Bedeutung gewinnen – DevOps lässt grüßen. Dass dies sehr viel Disziplin erfordert lässt sich leicht an dem immer wieder gern heraufbeschworenen Microservice-Musterknaben Netflix zeigen.

Natürlich hat Rahman Recht, wenn er behauptet, dass Java EE alle wesentlichen Bestandteile zur Umsetzung und zum Betreiben von Microservices mit sich bringt. Allerdings kann ich mir persönlich  nur schwer vorstellen, dass Netflix funktionieren würde, wenn in einem Java EE Server etliche hundert Services deployt werden würden und das mehrere hundert Mal am Tag. Dies funktioniert sicherlich bei einigen wenigen Services, darüber hinaus muss aber eine Alternative her. Dies haben mittlerweile auch etliche Serverhersteller und Anbieter im Java-EE-Umfeld erkannt und bieten entsprechende Lösungen, wie TomEE Shades, Wildfly Swarm, Payara Micro GlassFish, KumuluzEE, an. Alle genannten Lösungen sind in der Lage, Java EE oder Bestandteile davon gemeinsam mit dem eigenen (Micro)Service als separat startbares JAR zu bundeln, um diesen dann als Standalone-Service zu betreiben. Alternativ, wenn auch nicht ganz so Java EE, wie man es sich als getreuer Verfechter des Standards vielleicht wünscht, kann auch ein Blick auf Dropwizard oder Spring Boot nicht schaden.

Microservices und was man sonst noch so braucht …

Mein Eindruck, dass Microservices die vorhandene Komplexität einer Enterprise-Anwendung nicht eliminieren, sondern aus der Entwicklung in den Bereich Operations verlagern, wurde im Anschluss noch einmal in der sehr guten Session „Building a Microservice Ecosystem: Some assembly (still) required“ von Daniel Bryant (OpenCredo) bestätigt. Mal abgesehen davon, dass ich noch nie in meinem Leben einen Speaker habe so schnell reden hören, war die Session wirklich informativ und hat einen guten Überblick über mögliche Tools für ein erfolgreiches Microservice Ecosystem (Build, Test, Deploy, Operate & Observe) gegeben. Ein Blick auf die Folien lohnt sich für Interessierte also auf jeden Fall, auch wenn sie sicherlich nur einen Bruchteil von dem widerspiegeln können, was Bryant innerhalb von 60 Minuten an Tipps auf der Audio-Spur übermittelt hat.

Ebenfalls interessant dürfte in diesem Kontext der Blogpost „Anatomy of a Modern Production Stack“ von Joe Bedas sein, auf den Daniel Bryant in seinem Talk verwiesen hat. Bedas beschreibt in dem Post, wie heutzutage aus seiner Sicht ein moderner Production Stack aussehen muss, um den von ihm definierten vier Qualitätsmerkmalen „self healing and self managing, supports microservices, efficient, debuggable“ zu genügen.

Mitgenommen habe ich aus diesem Talk neben vielen, vielen Informationen vor allem noch zwei Zitate:

„A Microservice is an Application that fit in your head“,
James Lewis, ThoughtWorks

„Monitoiring is all about the people!“,
Daniel Bryant, OpenCredo

… so true!

Nach der Konferenz ist vor der Konferenz

Langsam aber sicher geht die JavaOne dem Ende entgegen. Jetzt heißt es für mich: Koffer packen und zurück nach „good old Germany“. Dort wartet dann die WJAX in München auf mich. Ich freue mich schon darauf, die positiven Eindrücke der JavaOne kommende Woche auf der WJAX mit hoffentlich vielen Interessierten teilen zu können. Sprecht mich einfach an, wenn ihr vor Ort seid!

In diesem Sinne: Stay tuned … and see you in Munic!

Geschrieben von
Lars Röwekamp
Lars Röwekamp
Lars Röwekamp ist Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen seiner Tätigkeit als „CIO New Technologies“ mit der eingehenden Analyse und Bewertung neuer Software- und Technologietrends. Ein besonderer Schwerpunkt seiner Arbeit liegt derzeit in den Bereichen Enterprise und Mobile Computing, wobei neben Design- und Architekturfragen insbesondere die Real-Life-Aspekte im Fokus seiner Betrachtung stehen. Lars Röwekamp, Autor mehrerer Fachartikel und -bücher, beschäftigt sich seit der Geburtsstunde von Java mit dieser Programmiersprache, wobei er einen Großteil seiner praktischen Erfahrungen im Rahmen großer internationaler Projekte sammeln konnte.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: