Softwareentwicklung

Vert.x. Mit dem EventBus und Kubernetes zu hochperformanten Anwendungen

Jochen Mader erläutert bei der JUGH die Vorteile von Vert.x

Vert.x, der EventBus und Kubernetes mit Jochen Mader

Vert.x ist ein Webframework, das zunächst wie ein Zwilling von Node.js daherkommt, bei näherem Hinsehen aber teils erhebliche Unterschiede aufweist. Welche das sind und wo genau die Vorteile von Vert.x liegen, hat Jochen Mader bei der JUGH in Kassel vorgestellt.

Zunächst einmal ist Vert.x reaktiv. Darin folgt es den Paradigmen des Reaktiven Manifests und verwirklicht dabei folgende Eigenschaften:

  • Responsivität: Das Ziel von Vert.x ist es, die Antwortzeiten einer Webanwendung auf ein absolutes Minimum zu reduzieren
  • Resilienz: Sollte ein Fehler innerhalb der Anwendung auftreten, führt dies nicht zu Performanceverlusten. Außerdem kann der Fehler andere Teilbereiche der Software nicht beeinträchtigen und löst keine Kettenreaktion aus
  • Elastizität: Die Anwendung passt sich flexibel an eine wechselnde Datenlast an – wenn sich die Rechenlast erhöht, verschlechtert sich nicht die Rechenleistung
  • Nachrichtenorientierung: Informationen werden mit Vert.x dynamisch ausgetauscht – zu Überflutungen und Rückstaus bei der Datenverarbeitung kann es nicht kommen

 

Die ersten drei dieser reaktiven Prinzipien sind heute eigentlich Common Sense und in leichten Variationen Teil jeder modernen Webanwendung. Richtig interessant wird es laut Jochen Mader beim Thema Asynchrones Messaging. Denn anders als etwa beim Java Message Service JMS und artverwandten Technologien, wo es in erster Linie um den Informationsaustausch zwischen autarken, entkoppelten Systemen geht, versteht Vert.x das Prinzip der  Nachrichtenorientierung wesentlich granularer. Es geht hier nämlich nicht nur um die Kommunikation verschiedener Anwendungen untereinander, sondern um die Kommunikation einzelner Komponenten in ein und derselben Anwendung. Dabei folgt Vert.x dem Leitsatz aus dem Aktorenmodell: „Aktoren [Befehle] sind nebenläufige Einheiten, die nicht über einen geteilten Speicherbereich verfügen, sondern ausschließlich über Nachrichten kommunizieren. Die Kapselung des Zustandes des Aktors ähnelt dem Prinzip der Kapselung in der objektorientierten Programmierung. Jeder Aktor verfügt über einen Posteingang, eine Adresse und ein Verhalten.“ Der entscheidende Vorteil dabei: Der Informationsaustausch erfolgt asynchron, der Sender einer Nachricht muss nicht erst auf eine Empfangsbestätigung des Adressierten warten, bevor er mit anderen Prozessen fortfahren kann – ein großer Performancegewinn.

Vert.x ist polyglott

Vert.x ist polyglott (mehrsprachig) und bietet APIs (Schnittstellen) für eine Vielzahl von Programmiersprachen an, die mithilfe spezieller Annotationen und eines Maven-Plugins aus der Kern-API erzeugt werden. Zurzeit werden Java, JavaScript, Groovy und Ruby unterstützt. Scala, Python und andere werden in Version 3.1 folgen.

EventBus & Kubernetes

Der EventBus erlaubt den Komponenten einer Anwendung nach dem Prinzip von Publish & Subscribe zu kommunizieren, ohne dass vorher eine gegenseitige Registrierung notwendig ist. Damit ersetzt er die traditionelle Java-in-Progress-Event-Distribution, die eine solche Registrierung nämlich voraussetzt.

Das macht den EventBus zur Schaltzentrale des Vert.x-Frameworks. Er erlaubt nicht nur eine schlanke, nachrichten-orientierte Kommunikation, sondern auch ein simples und effizientes Clustering. Wenn er zusammen mit Kubernetes genutzt wird, offenbart sich die ganze Bandbreite seiner Vorteile. Kubernetes (vom Griechischen κυβερνήτης für Steuermann) ist ein System zur automatischen Verwaltung von Container-Anwendungen und ermöglicht diesen ein selbsttätiges Bespielen, Skalieren und Warten dieser Container (etwa Docker-Container) auf verteilten Hosts. Die Kombination beider Systeme, EventBus und Kubernetes, hat außerordentlich elastische, resiliente und reaktive Infrastrukturen zur Folge.

In seinem Talk erklärt Jochen Mader die Konzepte hinter Vert.x und zeigt, wie sich durch die Verbindung von Vert.x, EventBus und Kubernetes das Beste dieser Welten zugunsten hoch-performanter Anwendungen verbinden lässt.

Referent Jochen Mader:

Selbstbeschreibung: Jochen ist als C64-Nerd aufgewachsen und nach einer Wanderschaft von Basic über C bis Assembly irgendwie auf der JVM gelandet. In diese hat er sich verliebt und ist seither viel (aber nicht ausschließlich) mit Projekten rund um selbige beschäftigt. Die letzten Jahre hat sich Jochen ausgiebig mit reaktiven Anwendungsframeworks (Akka und Vert.x), Fast-Data-Infrastrukturen und verteilten Systemen beschäftigt. Neben seiner Haupttätigkeit bei codecentric ist er auf Konferenzen als Speaker anzutreffen, schreibt für diverse Fachmagazine und ist seit Kurzem Maintainer im Vert.x-Projekt.

Lust auf mehr Vorträge der JUGH? Hier geht’s zum Beispiel zum Thema Java: The Missing Manual.

Informationen zur JUGH:

Die Java User Group Hessen (JUGH) ist Teil des internationalen Netzwerkes von Java Communities, die sich der weltweiten Verbreitung von Java-Know-how verschrieben haben. Im Sommer 2009 wurde sie von Entwicklern der Micromata GmbH ins Leben gerufen und kann seither auf eine ganze Reihe spannender Workshops und Vorträge zum Thema Java zurückblicken. Zur Tradition der JUGH gehören neben namhaften Gastrednern außerdem so genannte „Stand-up Codings“, wo jeder Java-Entwickler die Gelegenheit bekommt, spontan zu einem Java-Thema seiner Wahl zu sprechen. Die JUGH trifft sich einmal im Monat (in der Regel immer am letzten Donnerstag) in Kassel. Eine Voranmeldung ist meistens nicht nötig, der Eintritt ist frei. Kontakt: jugh@micromata.de. Weitere Informationen sind unter www.jugh.de erhältlich.

(jw)

Sebastian Hardt

Zuletzt aktualisiert am .