Java-basierte Infrastrukturen optimieren 5 Tipps für geringere Cloud-Kosten

Ein Gastbeitrag von Simon Ritter. Azul 4 min Lesedauer

Anbieter zum Thema

Unternehmen verlagern zunehmend Workloads in die Cloud. Doch bei allen Vorteilen entpuppt sich die neue Umgebung oft als Kostenfalle. Die meisten Unternehmen zahlen für Ressourcen, die sie gar nicht nutzen. Ein Großteil der Unternehmens-Applikationen in der Cloud sind Java-basiert. Das macht die Java-Umgebung zu einem wichtigen Hebel, um Cloud-Kosten zu senken.

Die Optimierung von Java-Anwendungen sorgt im Cloud-Betrieb für geringere Kosten.(Bild:  Arsenii - stock.adobe.com)
Die Optimierung von Java-Anwendungen sorgt im Cloud-Betrieb für geringere Kosten.
(Bild: Arsenii - stock.adobe.com)

CIOs müssen sicherstellen, dass Applikationen in der Cloud performant funktionieren und eine gute Nutzererfahrung bieten. Daher buchen sie lieber zu viel als zu wenig Kapazitäten und fahren diese auch in den Nebenzeiten nicht herunter.

Außerdem halten sie einen Puffer vor, um unerwartete Spitzenlasten abzufedern. So wird das Pay-per-Use-Modell, das eigentlich Kosten sparen sollte, zum Kostentreiber. Laut einer aktuellen Azul-Studie sagen 69 Prozent der weltweit befragten Unternehmen, dass sie überprovisionieren. Mehr als ein Drittel (41 Prozent) nutzen sogar weniger als 60 Prozent ihrer gebuchten Ressourcen.

Was hat Java damit zu tun? Eine ganze Menge! Denn Java ist und bleibt aufgrund der Plattformunabhängigkeit eine der beliebtesten Programmiersprachen – gerade auch in der Cloud. Fast alle Unternehmen (98 Prozent) setzen Java in ihrer Software oder Infrastruktur ein und 83 Prozent sagen, dass mindestens 40 Prozent ihrer Applikationen Java-basiert sind. 90 Prozent nutzen Java in der Public, Private oder Hybrid Cloud.

Java-basierte Applikationen optimieren

Die Java-basierte Umgebung zu optimieren ist daher ein wichtiger Hebel, um Ressourcen zu sparen und die Cloud-Kosten zu senken. Hier kommen fünf Tipps, wie das am besten gelingt.

1. Eine High-Performance Runtime einsetzen

Je langsamer der Java-Code, desto mehr Ressourcen benötigt eine Applikation, damit sie schnell läuft. Durch die Verbesserung der Performance der Anwendungen, lässt sich die Zahl der erforderlichen Cloud Nodes reduzieren.

Eine Möglichkeit besteht darin, bestehende Applikationen zu modernisieren und neu zu designen. Dafür müssen die meist großen monolithischen Architekturen in kleinere, Cloud-native Dienste umgewandelt werden. Doch das ist aufwändig, langwierig und würde bei allen Applikationen Jahre dauern. Einfacher und schneller lässt sich die Effizienz steigern durch das Einsetzen einer High-Performance Java Runtime wie Azul-Platform „Prime“. Das sorgt für einen höheren Durchsatz, ohne den Code der Applikationen anfassen zu müssen.

2. Das Warm-up beschleunigen

Charakteristisch für Java-Anwendungen ist, dass sie eine Weile brauchen, bis sie ihre volle Leistung erreichen. Dieses so genannte Warm-up hängt mit der JIT-Kompilierung (Just in Time) zusammen: Die Technologie identifiziert häufig genutzte Byte-Code-Blöcke und wandelt sie in Maschinenbefehle um, während die Anwendung ausgeführt wird. Das kostet etwas Zeit.

Bei Applikationen, die tage-, wochen- oder monatelang dauerhaft laufen, fällt die Aufwärmphase nicht weiter ins Gewicht. Zum Problem wird sie aber bei Microservices, die schnell hoch- und runtergefahren werden. Gerade geschäftskritische Anwendungen müssen sofort nach dem Start einer neuen Serverinstanz sofort auf Anfragen reagieren.

Um das zu gewährleisten, halten CIOs häufig einen Pool an vollständig aufgewärmten Instanzen bereit, die sie bei Bedarf zuschalten können. Diese provisionierten Ressourcen treiben die Cloud-Kosten in die Höhe.

Lösen lässt sich das Warm-up-Problem mit einem schnelleren, Cloud-nativen JIT-Compiler und einem Tool, das Profile aller häufig verwendeten Codes erstellt. Darin werden sämtliche Informationen gespeichert, die für die Kompilierung wichtig sind. Wenn die Applikation dann das nächste Mal startet, ruft die JVM (Java Virtual Machine) die Profile auf und kann den Code sofort umwandeln. Dadurch verkürzt sich die Aufwärmphase erheblich.

3. Compilation as a Service nutzen

Ein weiterer Trick besteht darin, die Kompilierung in einen zentralisierten Cloud-Service zu verlagern. Auch das steigert die Performance und hat den Vorteil, dass die Microservices mit kleineren Cloud-Instanzen auskommen, weil sie nicht mehr selbst kompilieren müssen. Darüber hinaus kann der Code zwischengespeichert werden, sodass er beim nächsten Mal aus dem Cache geladen wird und schneller bereitsteht.

Es gibt viele Möglichkeiten den Ressourcenbedarf zu reduzieren, indem man die Java-Umgebung optimiert und auf eine High-Performance-Plattform setzt. Wenn man bedenkt, wie groß der Anteil Java-basierter Software und Infrastruktur in der Cloud ist,
ergibt sich ein enormes Einsparpotenzial.

Simon Ritter, Deputy CTO bei Azul

4. Die JVM für leistungsfähige Cloud-Instanzen optimieren

Auch mit der Wahl der passenden Cloud-Instanz kann die Performance von Java-Anwendungen gesteigert werden. Java funktioniert mit beliebiger Hardware und Software und ist daher nicht an einen bestimmten Prozessortyp gebunden. Viele Cloud Provider bieten zum Beispiel Cloud-Computing-Instanzen mit besonders leistung

sfähigen Prozessoren, die auf maschinelles Lernen und KI spezialisiert sind. Sie können die JVM für diese Instanzen optimieren und im JIT Compiler entsprechende Mikroarchitekturbefehle nutzen. Beispielsweise beschleunigt die Vektorverarbeitung rechenintensive Anwendungen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

5. Stop-the-World Garbage Collection vermeiden

Ein bekanntes Performance-Problem bei Java-Anwendungen liegt in der Garbage Collection. Mit diesem automatisierten Speicherverwaltungsprozess identifiziert die JVM nicht mehr benötigte Objekte im Heap-Speicher und entfernt sie, um Speicherplatz freizugeben und die Anwendung zu stabilisieren.

Dabei kann es jedoch zu so genannten Stop-the-World-Pausen kommen: Die Applikation muss kurz angehalten werden, damit der Garbage Collector den Speicher aufräumen kann. Solche Pausen lassen sich durch den Einsatz eines speziellen C4 Garbage Collection Algorithmus (Continuously Concurrent Compacting Collector) vermeiden, der parallel zur Anwendung läuft und den Speicher kontinuierlich optimiert.

Simon Ritter ist Deputy CTO bei Azul Systems Inc., Anbieter der gleichnamigen Java-Plattform für Cloud-Unternehmen.(Bild:  Azul Systems)
Simon Ritter ist Deputy CTO bei Azul Systems Inc., Anbieter der gleichnamigen Java-Plattform für Cloud-Unternehmen.
(Bild: Azul Systems)

Das Potenzial von High Performance ausschöpfen

Unterm Strich ist die Rechnung einfach: Effizientere Java-Anwendungen brauchen weniger Ressourcen und sparen dadurch Cloud-Kosten. Die genannten Tipps sind nur einige Beispiele dafür, wo Sie ansetzen können.

Viele Unternehmen haben ihre bestehenden Java-Applikationen per Lift-and-Shift in die Cloud migriert und stellen jetzt fest, dass sie dort hohe Kosten verursachen. Manche überlegen deswegen sogar, Anwendungen wieder zurückzuholen. Doch es gibt viele Möglichkeiten den Ressourcenbedarf zu reduzieren, indem man die Java-Umgebung optimiert und auf eine High-Performance-Plattform setzt. Wenn man bedenkt, wie groß der Anteil Java-basierter Software und Infrastruktur in der Cloud ist, ergibt sich ein enormes Einsparpotenzial.

Artikelfiles und Artikellinks

(ID:50109567)