Dossier Scala

Scala im Experten-Check: Scala, Akka, Play, Lagom, Spark – das Gegenmodell zu Spring und Java EE?

Redaktion JAXenter

Im Experten-Check vermitteln uns sechs erfahrene Scala-Entwickler ihre Sichtweise auf das Scala-Ökosystem. Im dritten Teil geht es um die Frage, welche Rolle der Technologie-Stack spielt, der sich um Scala gebildet hat: Akka, Play, Lagom, Spark, etc. Ist es ein Gegenmodell zu Java EE und Spring? Ist es ein loser Baukasten interessanter Technologien oder besteht ein engerer Zusammenhang?

Durchstarten-mit-Scala_Auflage2_2400x_rgb-220x315Kommentieren und gewinnen!
Diskutieren Sie mit! Unter allen konstruktiven Kommentaren zum Experten-Check Scala verlosen wir drei Exemplare des Buches „Durchstarten mit Scala von Heiko Seeberger.

Ihre Meinung zählt!

Um Scala hat sich mittlerweile ein ganzer Technologie-Stack gebildet, bestehend aus Akka, Play, Lagom, Spark und anderen Komponenten. Wie kann man diesen Stack einschätzen? Ist es ein Gegenmodell zu Java EE und Spring? Ist es ein loser Baukasten interessanter Technologien oder besteht ein engerer Zusammenhang?

Akka, Play, Lagom, Spark – Wie kann man den Technologie-Stack um Scala einschätzen?

Die Scala-Experten

heiko seeberger

Heiko Seeberger: Fellow bei codecentric. Autor des Buches „Durchstarten mit Scala.“ @hseeberger

Julian Tournay: CTO at @mfg_labs und Autor von jto/validation

Julian Tournay: CTO at @mfg_labs und Autor von jto/validation

daniela sfregola

Daniela Sfregola: Bloggerin und Tech Leader bei PayTouch. @DanielaSfregola

ivan

Ivan Kusalic: Software Engineer bei HERE. Organisator des Berliner Software Craftsmanship meetup, SoCraTes. @ikusalic

Daniel Westheide

Daniel Westheide: Consultant bei innoQ. Autor von „The Neophyte’s Guide to Scala.“ @kaffeecoder

markus Hauck

Markus Hauck: IT Consultant und Scala Trainer bei codecentric.

Daniel Westheide: Lagom würde ich hier mal getrennt betrachten, denn dabei handelt es sich meiner Einschätzung nach tatsächlich um den Versuch, ein Gegenmodell zu Java EE und Spring anzubieten, und es richtet sich ja auch in erster Linie an Java-Entwickler aus dem Enterprise-Umfeld. Aktuell gibt es für Lagom ja auch nur ein Java-API, während ein Scala-API noch aussteht.

Die anderen genannten Technologien bilden eher einen losen Baukasten. Wählt man Akka als Gegenmodell zu Java EE und Spring, landet man meist auch bei Event Sourcing und CQRS. Mit Play in Verbindung mit Slick für die Anbindung relationaler Datenbanken gibt es auch eine Alternative zu Java EE und Spring, die nicht einen derart starken Einfluss auf bestimmte Architektur- und Technologieentscheidungen hat.

Ein beliebter Standard-Stack ist mittlerweile der sogenannte SMACK-Stack, der aus Spark, Mesos, Akka, Cassandra und Kafka besteht. Diesen sehe ich allerdings nicht unbedingt als Gegenmodell zu Java EE oder Spring, da er ganz andere Probleme lösen will, nämlich Fast Data und Big Data Processing.

Lesen Sie dazu auch den Artikel: Next Generation Big Data mit SMACK: Aus Big Data werde Fast Data

Heiko Seeberger: Das Scala-Ökosystem ist sehr lebendig und umfangreich. Einen wichtigen Stein in diesem Baukasten stellen in der Tat die Produkte der Lightbend Reactive Platform dar, also insbesondere Akka und Play. Hier geht es gar nicht um ein Gegenmodell zu JEE und Spring, sondern um eine grundsätzlich andere Herangehensweise an Architektur: Wer Systeme im Sinne des Reaktiven Manifests bauen möchte, benötigt moderne Werkzeuge wie Akka und keine Technologien, die im Kern immer noch nach dem Ein-Thread-pro-Request-Prinzip funktionieren und Verteilung einfach einer verteilten Datenbank überlassen.

Ivan Kusalic: Mein Kontext sind nicht typische CRUD-Szenarien oder Enterprise Web-Anwendungen. Ich beschäftige mich mit hochgradig verteilten Systemen in einem Cloud-Setup, manchmal auch aus der DevOps-Perspektive. Mit dem erwähnten Srack habe bisher herumgespielt, und alles sieht großartig aus. In meiner täglichen Arbeit nutze ich allerdings nur Akka.

Markus Hauck: Baukasten trifft es ganz gut, aber „lose“ nicht. Die Teile des Stacks lassen sich sehr gut einzeln verwenden, wenn man den Rest nicht benötigt. Gleichzeitig kann man später Teile hinzufügen, wenn man sie braucht. Es ist aber keine Sammlung, die zufällig zueinander passt, sondern es gibt schon einen Schwerpunkt, der sich durch alle zieht: Reaktive Systeme zu bauen.

Julien Tournay: Es ist wahr, dass die Scala Open-Source-Community sehr aktiv ist. Spark ist ein riesiger Treiber für die Scala-Verbreitung. Die Technologien, die du erwähnst, werden hauptsächlich von Lightbend entwickelt, der Firma hinter der Scala-Sprache. Stellen sie eine Alternative zu JEE oder Spring dar?  Nun, JEE und Spring sind beide große Ökosysteme, in dieser Hinsicht konkurrieren Projekte des Scala-Ökosystems also gewissermaßen mit Projekten aus den JEE- oder Spring-Ökosystemen.

Die Projekte, die von Lightbend entwickelt werden, teilen eine Vision davon, wie Scala ihrer Meinung nach sein sollte. Lightbend versucht, alle Technologien auch für Java-Entwickler nutzbar zu machen. Zum Beispiel kann man Play verwenden, ohne eine einzige Zeile Scala-Code zu schreiben. Natürlich muss man hier Kompromisse eingehen. Immer für zwei Sprachen entwickeln zu müssen, braucht mehr Zeit. Es kann außerdem schwierig sein, ein API zu entwerfen, das von Java-Entwickeln genutzt werden kann, ohne das Design seines Scala-Gegenstückes zu beeinflussen.

Doch genauso wie Java nicht auf Projekte von Oracle begrenzt ist (Spring ist dafür ein großartiges Beispiel), ist Scala nicht auf die Initiativen von Lightbend begrenzt. Für mich sind besonders die Arbeiten von Typelevel interessant. Das Ziel von Typelevel besteht darin, Scala noch funktionaler zu machen und auch ein zusammenhängendes Ökosystem darum herum aufzubauen. Ich denke, dass Leute mit Java-Hintergrund wahrscheinlich mit den Lightbend-Technologien beginnen, nach einigen Monaten dann aber Projekte zu Typelevel migrieren werden, wenn sie sich mit den mehr funktional ausgerichteten Ideen angefreundet haben.

Für welche Art von Anwendung ist der Stack prädestiniert?

Daniel Westheide: Ich halte die genannten Technologien nicht für einen feststehenden Stack und betrachte sie deshalb lieber einzeln. Akka bietet sich überall da an, wo geringe Latenz eine Rolle spielt, da man mit Akka-Persistence den aktuellen Zustand der Anwendung im Arbeitsspeicher halten kann. Das kann im IoT-Umfeld spannend sein, aber auch für Trading, Real Time Bidding oder Multiplayer-Games. Wer Akka-Persistence sagt, sagt auch Event Sourcing, deshalb ist Akka auch eine gute Wahl, wenn man aus anderen Gründen als Latenz und Throughput Event Sourcing benötigt, etwa um ein Audit Log zu haben oder als Mittel zur Business Intelligence.

Akka und Spark in Verbindung mit Cassandra und Kafka ist prädestiniert zur Umsetzung der Lambda-Architektur. Auch das ist zum Beispiel für IoT- Anwendungen interessant, wo man häufig aus einem ständigen Strom von Sensordaten diverse Views oder Aggregationen erzeugen will.

Julien Tournay: Ich denke, Lightbends Ökosystem zielt darauf ab, ein Referenz-Stack für die Entwicklung verteilter Anwendungen zu werden. Es gibt hier in der Tat ziemlich coole Projekte, mein Favorit ist Akka Streams. Andererseits ist Scala genauso allgemein verwendbar wie Java – man kann also so ziemlich alles damit bauen 🙂

scala-iconDossier Scala
Im Themen-Dossier „Scala“ dreht sich alles um die JVM-Sprache Scala. Nach unserer Einführung in die grundlegenden Konzepte von Scala ordnet Martin Odersky die Evolution Scalas im Interview ein. Außerdem beleuchten wir den reaktiven Technologie-Stack um Scala und lassen Entwickler zu Wort kommen, um uns von ihren persönlichen Scala-Tops und Flops zu berichten.

Daniela Sfregola: Die Bandbreite für diesen Stack ist riesig und variiert abhängig von der benötigten Performance und der Art der Anwendung. Play und Lagom sind Frameworks, mit denen sich schnell einfache Anwendungen bauen lassen. Play unterstützt HTML5 und ist ideal für Leute wie mich, die sich nicht sonderlich gut mit JavaScript auskennen und Webseiten mit Server-seitiger Anbindung entwickeln. Lagom ist ein recht neues Framework, das dabei hilft, Microservices auf der Basis von Event Sourcing zu schreiben. Akka würde ich als eine Sammlung verschiedener Werkzeuge bezeichnen, die genutzt werden können, um komplexere und skalierbare Service-seitige Anwendungen zu bauen – angefangen beim HTTP Layer des API über Aktoren-Systeme bis hin zum Cluster-Management. Spark hingegen wird genutzt, um Daten effizient zu verarbeiten, und ist normalerweise passend für Big-Data-Anwendungen, die einen konstanten Fluss von Daten verarbeiten müssen.

Markus Hauck: Dieser Stack ist sehr gut geeignet für Anwendungen, die schnell reagieren müssen und/oder mit großen Datenmengen skalieren könnnen. Gleichzeitig ist er modular genug, um nur die Teile einzusetzen, die man wirklich braucht.

Lesen Sie auch: Scala-Experten-Check Teil 1: Warum Scala und nicht Java?

Heiko Seeberger: Ein Stack mit Scala und Akka ist für jegliche Art von Anwendung geeignet. Seine Vorteile werden natürlich nicht unbedingt bei der persönlichen Homepage zur Geltung kommen, sondern eher dann, wenn es darum geht, hochverfügbare Systeme zu erstellen. Eines meiner Lieblingsbeispiele ist Walmart Canada, deren mit “klassischen” Technologien gebauter Online Shop regelmäßig an zuvor bekannten Tagen mit hohen Lastspitzen zusammenbrach. Nachdem Walmart Canada auf Scala, Akka und Play umgestiegen war, gab es nicht nur keine Ausfälle mehr, sondern konnten sogar Software-Lizenzkosten gespart werden.

In Teil 4 des Experten-Checks beleuchten wir das kommende Scala 2.12 und die Wunschliste für zukünftige Scala-Releases. Stay tuned!

 

Durchstarten-mit-Scala_Auflage2_2400x_rgb-220x315Und Sie? Kommentieren und gewinnen!

Wie sind Ihre Erfahrungen mit den Technologien aus dem Scala-Ökosystem? Stellt sich hier eine Alternative für Java EE und/oder Spring vor?

Kommentieren Sie hier!

Unter allen konstruktiven Kommentaren zum Experten-Check Scala verlosen wir drei Exemplare des Buches „Durchstarten mit Scala“ von Heiko Seeberger. (Vergessen Sie hierfür nicht, Ihre E-Mail-Adresse anzugeben).

Ihre Meinung zählt!

Geschrieben von
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: