X

Neuste Trends, Tipps, Strategien &
Events rund um das Thema Cloud

  • 6. June 2018

Wenn Twitter mit Graal Kosten spart, können Sie das auch

Thema ist natürlich weder das Videospiel noch das Ostseeheilbad Graal – sondern die Oracle Labs haben vor Kurzem die virtuelle Maschine GraalVM herausgebracht. Der Name steht für General Recursive Applicative and Algorithmic Language. Wichtiger ist aber: Sie kriegen damit für Programme, die in verschiedenen Sprachen geschrieben sind, eine vereinheitlichte Laufzeitumgebung, die in den meisten Fällen schneller als die native Java Virtual Machine (JVM). Und Twitter – die ja meist ganz gut wissen, was sie tun – lässt seine in Scala geschriebenen Microservices mit GraalVM laufen und spart damit Kosten. Wie geht das?

 

Das Problem der Vielsprachigkeit

Innerhalb einer virtuellen Maschine können ja viele verschiedene Sprachen laufen, z. B. Java, Python oder JavaScript. Meistens hat dabei jede Sprache ihre eigene VM, die speziell für die jeweilige Sprache entworfen ist. Andere Sprachen? Meist Fehlanzeige, oder sie laufen dann in dieser VM mit geringer Performance.

„Die Welt ist polyglott und wird es auch bleiben“, erklärt Thomas Wuerthinger, Senior Research Director bei Oracle und Architekt von GraalVM. Dafür gibt es im Prinzip auch gute Gründe. Verschiedene Sprachen sind auf verschiedene Teile des Software-Stacks durchaus clever zugeschnitten: für Websites (JavaScript und Ruby), für universelle Programmiersprachen (sog. GPL – Java und C++), Embedded Code für Geräte (C, C++ oder Java) und Data Science-Sprachen (R und Python). „Diese verschiedenen Sprachen werden nicht verschwinden“, sagt Wuerthinger. „C++ etwa wird seit den 1980ern intensiv verwendet. Es gibt Wissenschaftler, die mehr als 15 Jahre alte Fortan-Algorithmen nutzen.“

Nun brauchen Software-Entwickler verschiedene Sprachen für die Zusammenarbeit, aber wenn es darum geht, polyglotte Programme in ausführbarem Code zu kompilieren, kämpfen sie sofort mit gleich drei Hauptproblemen:

  1. Es riecht oft danach, dass nur die Sprachen hoch performant laufen, hinter denen Industrie-Schwergewichte stehen. Ruby ist zum Beispiel zwar durchaus weit verbreitet; wenn es aber um High-Performance-Runtime geht, ist ist es überhaupt nicht ganz vorne dabei.
  2. Jede dynamische Sprache führt ihre eigene kleine Runtime aus. Das kann dann zu einer teuren Serialisierung bei der Interaktion mit anderen Sprachen führen.
  3. Schließlich benötigen verschiedene Sprachen alle ihre unterschiedlichen Tools für Konfiguration, Debugging, Profiling usw.

GraalVM räumt mit dem Sprachenwirrwarr auf

Um Server-Code zu optimieren, mussten Entwickler bisher auf schnellere, aber nicht sonderlich leicht verständliche C2 JIT Compiler in der JVM zurückgreifen. GraalVM hingegen ist eine universelle virtuelle Maschine mit hoher Leistung: Sie unterstützt eine ganze Palette von Programmiersprachen, und sie macht schnellen Datenaustausch zwischen Programmen möglich, die in unterschiedlichen Sprachen geschrieben sind. Das sind für aktuelle Herausforderungen durchaus coole Features.

Würthinger erklärt: „GraalVM 1.0 unterstützt fast alle JVM-basierten Sprachen, z. B. Java, Scala und Kotlin sowie JavaScript (einschließlich TypeScript). Außerdem sind wir in der Phase des experimentellen Supports für alles, was in LLVM-Bitcode (C, C++, Rust) kompiliert wird, außerdem für Python, Ruby und R.“

Einen speziellen Vorteil für JVM-basierte Sprachen bietet GraalVM auch noch: Das Programm lässt sich in nativen Code übersetzen, den man sehr schnell starten kann und der wenig Speicher benötigen soll. Der neue Open Source JIT Compiler kann entweder standalone laufen oder embedded in OpenJDK, node.js, Oracle Datenbanken sowie MySQL.

 

Twitter zeigt, welche Optimierungspotentiale drin sind

„Was wir bei Twitter feststellen konnten, ist eine 11-prozentige Verringerung an CPU-Zeit“, erklärt Christian Thalinger, der sich schon etliche Jahre mit Graal beschäftigt hat, in einem Interview, das Yolande Poirier mit ihm auf der Oracle Code in Los Angeles geführt hat. Thalinger arbeitet seit mehr als 13 Jahren als Software-Engineer an der JVM – zunächst bei Sun, dann bei Oracle und nun bei Twitter, wo der Source Code in Scala geschrieben wird.

Twitter setzt GraalVM als einer der ersten Nutzer produktiv ein. Hier laufen in Scala geschriebene Microservices mit GraalVM. Der Effekt: höhere Geschwindigkeit, weniger Speicherallokationen und damit auch weniger Garbage-Collection. Letzteres reduziert widerum die Zwangspausen in der Ausführung. Thalinger hat dann noch ein wenig an GraalVM rumkonfiguriert und kam innerhalb eines Nachmittags auf 13% weniger benötigte CPU-Zeite. Nach seiner Einschätzung kann das – abhängig von der Anzahl eingesetzter Server – hochgerechnet zu Einsparungen von mehreren hunderttausend Dollar führen.

Contributoren gesucht!

GraalVM ist gelandet! Mit dem ersten erfolgreichen Release wird es weiter Fahrt aufnehmen. Beiträge sind jederzeit willkommen! Entweder durch GitHub-Beiträge oder durch eine Bewerbung im Oracle Labs Team:

GraalVM ist gelandet! Mit dem ersten erfolgreichen Release wird es weiter Fahrt aufnehmen. Beiträge sind jederzeit willkommen!

 

Kontakt:

Wenn Sie mehr über Graal erfahren wollen, spreche ich gerne mit Ihnen über dieses spannende Thema, per E-MailXingLinkedIn oder Twitter. Enzo Favuzzi, Business Development Manager, Cloud Platform.

Kommentieren

Kommentare ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.Captcha