Am 10.12.2015 war Jochen Mader (@codepitbull) von der Firma Codecentric zu Gast bei der Java User Group in Darmstadt und hat einen Vortrag mit dem Titel Reactive Microservices mit Vert.x 3 gehalten. Diesmal fand die Veranstaltung bei der Firma Cosee im TIZ statt.
Los ging es mit der Frage worum es eigentlich geht. :-) Wenn man über das Thema Microservices redet, dann redet man auch über Dinge, wie Architektur, also das was geplant war…
…und das was später rauskommt, wenn das Projekt abgeschlossen ist… :-DDabei landet man sehr schnell bei dem Thema Domain-Driven Design, Conways Law und dem Bounded Context. Nachdem Jochen den Rahmen sehr zügig abgesteckt hat, ist er auf Microservices eingegangen. Er hat erklärt was einen Mikroservice ausmacht. D.h. er ist auf Eigenschaften, wie Größe, Persistenz, den Agilen Context (Unabhängige Entwicklung), DevOps und die Umgebung (distributed by default) eingegangen.
Tja, und wenn man über verteilte Systeme spricht, muss man auch die „8 Fallacies of distributed computing“ ansprechen.
Anschließend hat Jochen die Eigenschaften erklärt, die zum Programmierparadigma Reactive (Reaktive Programmierung) gehören, also Responsive, elasic, resilient, Message-Driven.Nachdem die Grundlagen erklärt waren, ging es mit einer Einführung in Vert.x weiter. Also Verticles, Event Loops, Handler und die Kommunikation über eine Art Bus. Gefolgt von einer kurzen Beschreibung einer pom-Datei, mit der man einfach ein Maven Vert.x-Projekt aufsetzen kann.
Die Verbindung zu den Microservices wurde nun dadurch hergestellt, dass eine Vert.x-Anwendung als eine Art Microservice gesehen werden kann.
Anschliessend hat Jochen die Eigenschaften von Reactive der Reihe nach am Beispiel von Vert.x und Microservices beschrieben.
Beispielsweise, dass sich einzelne Vert.x Microservices in einem Netzwerk mittels Hazelcast, JGroups oder Apache ZooKeeper finden können, d.h. Services einfach hinzugefügt oder entfernt werden können ohne, dass im Betrieb Probleme auftreten. Einzelne Verticeles lassen sich dadurch unabhänging deployen. Wenn ein Service ausfällt, kann ein neuer deployt werden. Erwähnt hat Jochen außerdem noch CI/CD mit Git, Jenkins und Docker und Tools wie HAProxy (Loadbalancer), etcd (Verteilter Key-Value Store) und Nomad (Cluster Manager).
Während des Vortrags ist er regelmäßig zwischen Folien und IDE gewechselt. In der IDE hat er an verschiedenen Beispielen gezeigt, wie eine Vert.x-Anwendung aussieht, wie sie gebaut (Stichwort FAT JAR) und gestartet wird und wie sich anschließend zwei Anwendungen finden.
Aus meiner Sicht war es ein klasse Vortrag mit unheimlich vielen Informationen, der trotzdem sehr unterhaltsam war. Da direkt nach dem Vortrag keine Fragen gestellt wurden gehe ich davon aus, dass alle einen „Information Overflow“ hatten. ;-)
Glücklicherweise gab es nach dem Vortrag noch genug Zeit sich beim sehr guten Essen mit Jochen und den anderen Zuhörern auszutauschen, um offene Fragen zu klären.
Vielen Dank an Jochen für den Vortrag und an Cosee für die sehr gute Bewirtung und die Räumlichkeiten!
Den Sourceode und die Folien zu dem Vortrag findet man hier: