Cloud-Kosten senken

Java-basierte Infrastruktur optimieren

Programmieren

Ein Großteil der Unternehmens-Applikationen in der Cloud sind Java-basiert. Das macht die Java-Umgebung zum wichtigen Hebel, um Cloud-Kosten zu senken. Simon Ritter, Deputy CTO bei Azul, zeigt, wo Sie ansetzen können.

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. Das hat verschiedene Gründe. 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. 

Anzeige

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, Privat oder Hybrid Cloud. 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. Setzen Sie eine High-Performance Runtime ein

Je langsamer der Java-Code, desto mehr Ressourcen benötigt eine Applikation, damit sie schnell läuft. Indem Sie die Performance Ihrer Anwendungen verbessern, können Sie die Zahl der erforderlichen Cloud Nodes reduzieren. Eine Möglichkeit besteht darin, bestehende Applikationen zu modernisieren und neu zu designen. Dafür müssen Sie die meist großen monolithischen Architekturen in kleinere, Cloud-native Dienste umwandeln. Doch das ist aufwändig, langwierig und würde bei allen Applikationen Jahre dauern. Einfacher und schneller können Sie die Effizienz steigern, indem Sie eine High-Performance Java Runtime wie Azul Platform Prime einsetzen. So sorgen Sie für einen höheren Durchsatz, ohne dass Sie den Code Ihrer Applikationen anfassen müssen.

2. Beschleunigen Sie das Warm-up

Charakteristisch für Java-Anwendungen ist, dass sie eine Weile brauchen, bis sie ihre volle Leistung erreichen. Dieses sogenannte 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. 

Anzeige
Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.

3. Nutzen Sie Compilation as a Service

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.

4. Optimieren Sie die JVM für leistungsfähige Cloud-Instanzen 

Auch mit der Wahl der passenden Cloud-Instanz können Sie die Performance Ihrer Java-Anwendungen steigern. Da Java mit beliebiger Hardware und Software funktioniert, sind Sie nicht an einen bestimmten Prozessortyp gebunden. Viele Cloud Provider bieten zum Beispiel Cloud-Computing-Instanzen mit besonders leistungsfä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. 

5. Vermeiden Sie Stop-the-World Garbage Collection

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 sogenannten Stop-the-World-Pausen kommen: Die Applikation muss kurz angehalten werden, damit der Garbage Collector den Speicher aufräumen kann. Solche Pausen lassen sich vermeiden, indem Sie einen speziellen C4 Garbage Collection Algorithmus (Continuously Concurrent Compacting Collector) einsetzen, der parallel zur Anwendung läuft und den Speicher kontinuierlich optimiert.

Fazit

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“, sagt Simon Ritter, Deputy CTO bei Azul. „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.“

Simon Ritter

Simon

Ritter

Deputy CTO

Azul

Anzeige

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.