Die Cloud verändert, wie Unternehmen ihre IT-Infrastruktur bereitstellen und betreiben. Auf der einen Seite können Unternehmen nun die Komplexität ihrer IT-Infrastruktur reduzieren und gleichzeitig die Flexibilität und Skalierbarkeit erhöhen. Auf der anderen Seite kann die Nutzung der Cloud auch zu höheren Kosten und einem höheren Energieverbrauch führen. Wir zeigen Ihnen wie Sie in Ihrer Cloud-Umgebung Kosten und Energie sparen. Es ist die perfekte Verbindung von FinOps und Green IT.
Bei der Nutzung von Cloud-Anwendungen besteht ein großes, bisher ungenutztes Einsparpotenzial an Energie und Kosten. Über kurz oder lang ist zu erwarten, dass Unternehmen auch für den CO2-Ausstoß der Cloud-Ressourcen entsprechende Kompensationen leisten müssen, um bilanziell CO2-neutral zu werden. Es lohnt sich also schon heute, sich mit den Themen FinOps und Green IT auseinanderzusetzen. Denn geringere Kosten führen automatisch zu einem geringeren CO2-Ausstoß und umgekehrt.
Hier sind 7 praktische Hebel und Tooltipps, mit denen Unternehmen die Kosten und CO2-Emissionen von Cloud-Anwendungen senken können:
1. Sizing von Knoten optimieren
Bei allen Cloud-Anbietern gibt es neben den generischen Maschinentypen auch CPU- oder memory-optimierte Typen. Wenn man z. B. eine oder mehrere Workloads mit hohem Hauptspeicherbedarf hat, führt das Hochskalieren von generischen Nodes meist dazu, dass zu viele CPU-Ressourcen allokiert werden und damit Kosten und CO2 verursachen. Java-Anwendungen haben wegen der eingebetteten JVM meist einen recht hohen Speicherbedarf. Hier ist oft ein memory-optimierter Machinentyp besser geeignet.
2. Mehrere Nodepools in einen Kubernetes Cluster nutzen, die für bestimmte Workload-Typen optimiert sind
Für Kubernetes Cluster können verschiedene Nodepools mit unterschiedlichen Maschinentypen erstellt werden. Wenn nur einige Workloads viel Speicher brauchen und andere dafür sehr viel CPU-Leistung benötigen, sollte man darüber nachdenken, jeweils optimierte Nodepools einzusetzen.
3. Nicht benötigte Ressourcen ganz oder zeitweise abschalten
In vielen Projekten sammeln sich auch mit der Zeit Services die gar nicht mehr verwendet werden. Eine entsprechende Überwachung mittels Metriken (automatisiert z. B. mit Linkerd) ermöglicht diese auch nach Jahren noch zu finden.
Auch ganze Cluster, die für Entwicklung oder Qualitätssicherung genutzt werden, können meist nachts und am Wochenende heruntergefahren werden. In einem der letzten Projekte haben wir positive Erfahrungen mit kube-green (https://kube-green.dev/) gesammelt. Services wie CAST AI (https://cast.ai/) können diesen Prozess auch AI-unterstützt automatisieren.
4. Lastabhängige, dynamische Skalierung der Workloads und ggf. der Cluster Knoten
Neben dem klassischen Horizontal Pod Autoscaler in Kubernetes gibt es inzwischen auch weitere Möglichkeiten Workloads automatisch zu skalieren. Wir haben sehr gute Erfahrungen mit KEDA gemacht (https://keda.sh/), um Workloads abhängig von der Anzahl Nachrichten in einem Kafka Topic zu skalieren.
Auf der diesjährigen KubeCon Europe in Amsterdam wurde der „Carbon Aware KEDA Operator“ vorgestellt. Dieser Operator verwendet von Cloud Providern in Echtzeit zur Verfügung gestellte Daten über den aktuellen Strommix, um z. B. Batch Jobs zu starten, wenn besonders viel Ökostrom zu Verfügung steht.
5. Automatisches Scale To Zero
KEDA kann den Workload auch auf Null herunter skalieren, beispielsweise wenn keine neue Nachricht im Kafka Topic liegt. Dies ist natürlich der Idealzustand. Für HTTP Workloads ist ein entsprechendes Add-On in der Entwicklung.
Das Skalieren von HTTP Workloads auf Null beherrscht Knative (https://knative.dev) schon sehr lange. Knative gibt es auch als Managed Cloud Service bei Google unter dem Namen Google Cloud Run.
Wenn eine Workload bei Bedarf von Null wieder hochskaliert wird, sind die Kaltstartzeiten gerade bei HTTP Workloads von Bedeutung. Meist wartet gerade ein User auf eine Antwort des Service. Java hat hier wegen der JVM grundsätzlich einen Malus, aber mit modernen Web-Frameworks wie Quarkus (https://quarkus.io/) ist das Problem beherrschbar.
6. Spot-Instanzen verwenden
Viele Cloud Anbieter versteigern brachliegende IT-Ressourcen als sogenannte Spot Instanzen. Diese sind meist 80 oder mehr Prozent billiger als klassische Nodes. Da hier freie Ressourcen auf Maschinen, die sowieso schon laufen, verwendet werden, vermeidet das ebenfalls den CO2 Ausstoß.
In unserem letzten Projekt haben wir eine Nodepool mit Spot-Instanzen zu unserem Cluster hinzugefügt und die Workloads so konfiguriert, dass sie bevorzugt auf Spot Instanzen laufen, aber auch, wenn keine Spot Instanzen verfügbar sind, auf klassischen Nodes laufen.
Spot Instanzen können vom Cloud Anbieter mit einer kurzen Vorwarnzeit heruntergefahren werden, sodass der Kubernetes Scheduler die Instanzen auf andere Knoten verlagern muss. Damit sind Spot Instanzen nicht für langlaufende Prozesse geeignet. Die meisten Workloads kommen damit aber problemlos klar.
7. Knoten mit ARM-Architektur nutzen
Viele Cloud-Anbieter bieten neben den klassischen Intel- und AMD-basierten Prozessoren auch ARM64 Prozessoren an. Dass ARM64 deutlich effizienter arbeitet, kann jeder Mac User mit einem M1/M2 Mac am eigenen Leib erleben. Ein Kubernetes Cluster in der Cloud mit ARM64-Architektur bietet daher energetisch und finanziell Vorteile. Die meisten OCI-Images liegen inzwischen auch in eine ARM-Variante vor, sodass der Einsatz von ARM-Knoten kein größeres Problem darstellen sollte.
-
FinOps
Open or Close
FinOps ist ein neues Konzept mit dem Kosten, die mit der Bereitstellung und Verwaltung der Cloud anfallen, optimiert werden können. Es setzt auf eine enge Zusammenarbeit zwischen der IT- und der Finanzabteilung und führt dazu, dass Unternehmen die Kosten der Cloud besser verstehen, Budgets planen und Kosten reduzieren, indem sie nicht genutzte Ressourcen freigeben und die Kapazitätsnutzung optimieren. Somit stellt FinOps sicher, dass Unternehmen nur für das bezahlen, was sie tatsächlich nutzen.
-
Green IT
Open or Close
Green IT ist ein Konzept, das sich auf die Optimierung des Energieverbrauchs in der IT konzentriert. Green IT setzt auf die Verwendung von Energieeffizienztechnologien und die Reduzierung des Energieverbrauchs, um die Umweltbelastung und die Kosten zu reduzieren. In der Cloud kann Green IT dazu beitragen, den Energieverbrauch zu reduzieren, indem IT-Ressourcen effizient genutzt werden und Ressourcen abgeschaltet werden, wenn sie nicht benötigt werden. Green IT ist ein wichtiger Ansatz, um die Umweltbelastung und die Kosten der Cloud zu reduzieren.
Noch Fragen?
Wie können Sie die Leistungsfähigkeit der IT-Infrastruktur in Ihrer Organisation erhöhen? Erfahren Sie, wie wir Sie bei diesem Thema unterstützen können:
Guido Zockoll - arbeitet als Senior Software-Architekt bei der iteratec GmbH in Hamburg. Davor hat er sich in verschiedenen Kundenprojekten mal als Software-Architekt, mal als Projekt- oder Programm-Manager für agile Vorgehensweisen und pragmatische Lösungen stark gemacht. Sein Spezialgebiet sind Cloud-Native-Architekturen, DevOps und Microservices.