Interview mit Silvia Schreier und Philipp Schirmacher

„Clojure bietet durch sein sehr einfaches Programmiermodell viel Potential“

Redaktion JAXenter
Clojure

Microservices und Clojure: ein Traumpaar? Auf der JAX 2015 werden Silvia Schreier und Philipp Schirmacher zeigen, weshalb sich die JVM-Sprache so gut für das neue Architekturparadigma eignet. In ihrer Session „Microservices mit Clojure“ werden sie die Teilnehmer Schritt für Schritt an Clojure heranführen und an Beispielen demonstrieren, mit welchen Clojure-Bibliotheken sich Herausforderungen in Microservice-Architekturen elegant lösen lassen. Einen kleinen Einblick in das, was die Teilnehmer erwartet, geben sie in folgendem Interview.

Viele behaupten ja, der derzeitige Hype um Microservices sei unberechtigt. Das Grundprinzip sei aus der SOA-Bewegung bekannt und keineswegs neu. Was entgegnen Sie diesen Kritikern?

Silvia Schreier/Philipp Schirmacher: Wie der gemeinsame Namensbestandteil schon sagt, sind die Grundideen beider Ansätze lose gekoppelte Services, und das Rad wird hier sicherlich auch nicht neu erfunden. Allerdings sind die Beweggründe doch sehr unterschiedlich. Wo SOA sich das gesamte Unternehmen und die Verbindung von Fachabteilung und IT auf die Flagge geschrieben hat, sind Microservices in unseren Augen sehr viel mehr von der technischen Seite getrieben und sind eine Gegenbewegung zu monolithischen Systemen, um bessere Wartbarkeit und Evolution zu ermöglichen.

Auch hat SOA nicht unbedingt zu einer heterogenen Architektur geführt, sondern oft wurde versucht, vieles zu vereinheitlichen. Wohingegen bei Microservices die Heterogenität der einzelnen Implementierungen eine wichtige Rolle spielt, auch wenn natürlich manche Aspekte, insbesondere betriebliche, ein Stück weit einheitlich gelöst werden müssen.

JAX 2015Die JAX (20.-24. April 2015) bildet mit der W-JAX Europas führende Konferenz-Serie für Enterprise-Technologien, agile Methoden und Software-Architekturen. Gemeinsam mit den begleitenden Business Technology Days und der BigDataCon verleiht sie IT-Professionals führender Unternehmen aller Branchen die entscheidenden Impulse für digitale Wertschöpfung und Innovation – zwei Mal im Jahr. Mehr Informationen unter http://jax.de.

Was sind aus Ihrer Sicht die größten Herausforderungen bei Microservice-Architekturen?

Wir sehen die große Herausforderung  weniger bei der Entwicklung eines einzelnen Service als viel mehr bei Deployment, Konfiguration und Betrieb einer großen Anzahl Services. Dabei stellen sich ganz andere Fragen als beim Betrieb eines Monolithen, der halbjährlich aktualisiert wird. Gerade hier muss man sich auf gewisse Standards im Unternehmen einigen, so wie es Heroku zum Beispiel mit der 12-Factor-App tut, und diese dann in den verschiedenen Services auch umsetzen. Auch muss bei einem verteilten System viel mehr für die Stabilität getan werden, da man immer davon ausgehen muss, dass andere Systeme gerade nicht erreichbar sind. Aber auch hierfür gibt es gute Lösungen.

Weshalb spielt Ihrer Ansicht nach gerade Clojure hier seine Stärken aus?

Eine Microservice-Architektur erlaubt es, für jeden Service die Technologie zu wählen, mit der die beteiligten Entwickler maximal produktiv sind. Clojure bietet hier durch sein sehr einfaches Programmiermodell viel Potential. Die Sprache ist sehr dynamisch und steht einem nicht im Weg. Trotzdem gibt es sehr mächtige Sprachfeatures, mit denen sich auch spezielle Anforderungen umsetzen lassen. Die Sprache ist so gestaltet, dass man die einzelnen Features sehr gezielt nutzen und flexibel kombinieren kann. Diese Philosophie erstreckt sich über die Sprache hinaus auf das Ökosystem. Man nutzt viele kleine Bibliotheken und stellt so die Funktionalität zusammen, die man gerade braucht. Das passt sehr gut zur Grundidee von Microservices, kleine Systeme zu entwickeln, die eine spezielle Aufgabe erfüllen.

Können Sie ein konkretes Beispiel nennen?

Ein gutes Beispiel dafür ist die Webentwicklung. Mit Ring gibt es eine sehr weit verbreitete Bibliothek, die einem grundsätzliche HTTP-Funktionalität bietet. Diese lässt sich durch sogenannte Middleware erweitern, um bspw. statische Dateien auszuliefern, JSON-Transformation vorzunehmen oder CSRF-Tokens zu validieren. Dieser Plug-in-Mechanismus ist mit sehr einfachen Sprachmitteln umgesetzt und wird auch deshalb sehr intensiv genutzt. Für weitere Funktionalität, die man bei Webanwendungen braucht, gibt es spezialisierte Bibliotheken: Routing von Requests, Generierung von HTML, Zugriff auf Datenbanken, Erstellung von Metriken usw. Da Clojure auf der JVM läuft, basieren viele dieser Bibliotheken auf bewährten Java-Bibliotheken und sind entsprechend gut für den produktiven Einsatz gerüstet.

Was spricht allgemein noch für Clojure bzw. funktionale Programmierung auf der JVM?

Die Verwendung unveränderlicher Datenstrukturen und seiteneffektfreier Funktionen hilft sehr stark dabei, testbaren und leicht verständlichen Code zu schreiben. Dies gilt nicht nur für nebenläufige Programmierung. Gerade im Web sind viele Systeme sehr stark datenzentrisch, d. h. es werden große Datenmengen transformiert und aggregiert. Das passt sehr gut zu funktionaler Programmierung.

Dass sich in der objektorientierten Welt so etwas wie eine „funktionale Wende“ vollziehen wird, wird auch nicht erst seit gestern prognostiziert. Trotzdem scheinen Sprachen wie Clojure noch immer einen Nischenstatus zu haben. Warum?

Die „funktionale Wende“ – falls es so etwas gibt – zeigt sich unserer Meinung nach vielmehr darin, dass entsprechende Konzepte auch in Java und in vielen Java-Bibliotheken sehr stark Einzug gehalten haben. Ein prominentes Beispiel sind natürlich Lambdas in Java 8. Aber auch viele Bibliotheken gehen in eine ähnliche Richtung, bspw. RxJava, Reactor, Fork/Join und so weiter. Bibliotheken wie diese waren ja auch eine starke Motivation dafür, funktionale Programmierung mit Java 8 besser zu unterstützen.

Wir halten es auch für eine gute Sache, dass es gerade auf der JVM eine gewisse Vielfalt an Sprachen gibt. Das erlaubt es den verschiedenen Sprachen, ganz unterschiedliche Ansätze zu wählen und so verschiedene Geschmäcker zu bedienen. Gleichzeitig bietet es allen Sprachen die Möglichkeit, voneinander zu profitieren. Neuere Sprachen wie Clojure haben durch die JVM Zugriff auf ein großes bestehendes Ökosystem. Klassische Sprachen können gezielt Features modernerer Sprachen übernehmen. Vor diesem Hintergrund glauben wir also auch nicht daran, dass Clojure oder eine andere Sprache Java als Platzhirsch ablösen wird – wir finden das aber auch gar nicht schlimm. Allerdings ist der Umstieg von Java auf Clojure inzwischen leichter, da da die funktionalen Konzepte aus der Java-Entwicklung zum Teil bekannt sind, und das macht es allen Entwicklern leichter, auch wirklich von der Sprachenvielfalt auf der JVM zu profitieren. Und für Clojure-Entwickler ist Java 8 ein Leichtes, weil alle neuen Konzepte auf Clojure und anderen funktionalen Sprachen schon lange bekannt sind.

Silvia Schreier arbeitet als Consultant bei der innoQ Deutschland GmbH im Bereich REST-konforme Webanwendungen und NoSQL-Datenbanken. Sie beschäftigt sich seit 10 Jahren mit funktionalen Programmiersprachen und setzt diese immer häufiger in (polyglotten) Projekten ein. Philipp Schirmacher arbeitet als Senior Consultant bei innoQ. Sein Schwerpunkt liegt auf der Entwicklung von Java-Applikationen in agilen Teams. Darüber hinaus interessiert er sich insbesondere für moderne Programmiersprachen wie Clojure und Scala.

Geschrieben von
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: