Das Internet produziert jährlich 900 Millionen Tonnen CO₂ – das ist deutlich mehr als Deutschland insgesamt emittiert. Hauptverantwortlich ist der immer weiter steigende Stromverbrauch beim Transport und der Speicherung von Daten. Wenn ihr kurz darüber nachdenkt, fallen euch sicher Dateien ein, die noch irgendwo gespeichert sind, weil ihr sie irgendwann nochmal gebrauchen könntet. Genau darum soll es in diesem Artikel gehen: Wie können wir Daten und damit Emissionen einsparen?
Dieser Blogpost betrachtet speziell die Möglichkeiten der Public Cloud, deren Anbieter auch ganz eigennützige Motivationen haben, ihre Emissionen zu verringern. Natürlich ist das Marketing aktuell ein wichtiger Beweggrund. Aber auch die finanziellen Gründe für eine Optimierung des Ressourcenverbrauchs sind klar: Ein geringerer Stromverbrauch senkt die Kosten für die Anbieter und steigert ihre Marge. Aus ökologischer Sicht ist Hardware, die nicht gekauft werden muss, Hardware, die nicht produziert wird und damit Ressourcen spart. Wir als Entwickler und Entwicklerinnen können durch unsere Nutzung also positiven Einfluss auf die Cloud-Anbieter nehmen – Stichwort AWS Shared Responsibility.
Daten löschen
Nicht mehr benötigte Daten zu löschen ist der einfachste Weg, den belegten Speicherplatz zu reduzieren. Bei der Frage, welche Daten nicht mehr benötigt werden, wird es aber spannend. Häufig wird zur Sicherheit erstmal alles gespeichert: „Später können wir ja immer noch löschen“. Hinzu kommt, dass Cloud-Speicher günstig sind. Erst mit steigender Nutzung und größeren Datenmengen fällt auf, dass die Kosten in die Höhe schießen.
Regelmäßiges Aufräumen muss aber keinen großen Zeitaufwand bedeuten. Mit Retention Policies lassen sich Ressourcen automatisch aufräumen. Bei der Nutzung von DynamoDB-Tabellen können Time-To-Live-Werte konfiguriert werden, nach denen Einträge automatisch aus den Tabellen gelöscht werden. Unsere S3-Buckets können wir mithilfe von Expiration-Rules aufräumen lassen oder wir verschieben die Daten in energiesparenden Cold Storage. Ähnliche Konzepte finden sich in vielen Cloud-Services.
Regelmäßiges Aufräumen schont nicht nur den Geldbeutel, sondern spart auch Ressourcen. Der freigewordene Speicher kann anderen Nutzern zur Verfügung gestellt werden und verzögert damit, dass die Cloud-Provider neue Hardware bereitstellen müssen.
Datensparsamkeit
Nicht nur mit Blick auf die Kosten und den Stromverbrauch sollten wir uns genau überlegen, welche Daten wir wirklich benötigen. Stichwort Datenschutz und Datensparsamkeit: Nicht alle Daten müssen gespeichert werden. Denn die Daten verbrauchen nicht nur Speicherplatz, sondern vergrößern auch die Requests, die wir über das Netzwerk verschicken. Es ist sehr sinnvoll, sich vor der Integration eines Tracking-Tools im Detail zu klären, welche Events und Daten wirklich notwendig sind.
Wenn ein System geringere Datenmengen verarbeiten muss, verbessert dies viele Aspekte. Angefangen bei der Performance, da Berechnungen schneller abgeschlossen werden. Auch die Hardwareanforderungen werden reduziert und damit schließt sich der Kreis: Wir reduzieren mit dem geringeren Leistungsbedarf auch unsere Rechnung und die Anbieter müssen weniger Hardware bereitstellen, um alle Kunden versorgen zu können.
Daten cachen
Wenn Daten über das Netzwerk versendet werden müssen, bevor eine Anwendung ihre Funktionen bereitstellen kann, verlängert das die Zeit, bis die User mit ihrer Arbeit beginnen können. Je größer die Strecke zwischen Server und Endgerät ist, desto stärker fällt dieser Punkt ins Gewicht. Darunter leidet aber nicht nur die User-Experience. Auch der Stromverbrauch wird durch den steigenden Netzwerktraffic vergrößert, da viele Geräte an der Übertragung von Daten beteiligt sind.
Eine Verbesserung kann mithilfe von Caching erreicht werden. Beispielsweise indem wir Daten direkt auf den Endgeräten speichern, nachdem sie einmal verschickt wurden. Dadurch ersparen wir zukünftig weitere Datenübertragungen. Mithilfe eines Content Delivery Networks (CDN) können wir die Ergebnisse häufiger Anfragen im Cache halten, statt diese jedes Mal durch das gesamte Netzwerk und über viele Systeme zu verschicken.
Nochmals stärker wirkt sich ein Cache auf die Antwortzeit aus, wenn es sich nicht um statische Daten handelt, sondern zunächst Berechnungslogik ausgeführt werden muss. Wenn unsere Anwendung viele User mit ähnlichen Anfragen bedient, haben wir an der Stelle einen großen Hebel. Selbstverständlich muss ein Cache für den jeweiligen Use Case kompatibel sein. Statische Dateien, wie Bilder oder das Impressum, lassen sich gut vorhalten und effizient aus einem Cache ausliefern.
Daten komprimieren
Bevor Daten über das Netzwerk verschickt werden, sollten sie so weit wie möglich komprimiert werden. Wie bei der Datensparsamkeit gilt auch hier: Wenn weniger Daten verschickt werden, spart das Zeit und Energie.
Ein wichtiger Entscheidungsfaktor sind die Endgeräte, auf denen unsere Anwendung genutzt wird. Während Desktop-Anwendungen nicht nur aufgrund der Bildschirmgröße mit größeren Bildern bespielt werden sollten, gilt es besonders bei mobilen Anwendungen Medien zu skalieren. Wir reduzieren dadurch nicht nur die Transportzeit, sondern verringern auch die Anforderungen an Hardware zur Verarbeitung der Datenmengen. Gerade bei älteren Smartphones lassen sich dadurch ein paar Millisekunden Zeit einsparen, was für die User-Experience ein großer Gewinn sein kann.
Mit der Schonung der Endgeräte erreichen wir nicht nur eine bessere Usability, sondern können auch indirekt Einfluss nehmen: Ruckeln die täglich genutzten Anwendungen auf dem Smartphone, spielt man schnell mit dem Gedanken an ein neues Gerät. Durch unsere Optimierungen können wir den Kauf noch ein wenig hinauszögern und die Produktion weiterer Hardware reduzieren.
Datenverbrauch messen
Idealerweise arbeiten wir nicht nur einmalig am Datenverbrauch, sondern messen zukünftige Veränderungen, um entsprechend reagieren zu können. Beispielsweise könnte eine Zugriffsanalyse ergeben, dass bestimmte Daten nur unregelmäßig und ohne Zeitdruck angefragt werden. Dann kann ein Wechsel von schnellen SSDs auf langsamere – aber auch energiesparende – magnetische Speichermedien sinnvoll sein. Preislich lohnt sich so ein Wechsel häufig ebenfalls.
Die Cloud-Provider bieten verschiedene Metriken zu ihren Speicherservices an. Gerade wenn wir eigene Volumes konfigurieren, sollten wir durch Alarme auf die entsprechenden Metriken sicherstellen, dass wir die Deployments weiterhin benötigen. Für den EBS-Service von AWS gibt die VolumeIdleTime an, wie lange keine Lese- und Schreibaktionen mehr ausgeführt wurden. Wenn die Idle-Time einen gewissen Wert überschreitet, sollte zumindest darüber nachgedacht werden, die Ressourcen für andere Kunden freizugeben.
Fazit
Mit ein paar Verbesserungen können wir nicht nur Einsparungen bei den Emissionen unserer Systeme erreichen, sondern auch die Kosten reduzieren und die Performance verbessern. Das zeigt sich auch in anderen Bereichen der Green-Cloud-Optimierungen. Beim vorsichtigen Umgang mit Daten können wir allerdings auch den Datenschutz verbessern.
Am 16. März ist der Digital Cleanup Day. Nehmt den Tag zum Anlass und stellt euren Teams einen Termin ein. Analysiert eure Daten im Projekt genauer – ihr werdet Optimierungspotenziale erkennen. Mit den Ideen aus diesem Blogpost habt ihr dann passende Lösungen zur Hand, um den datenbasierten Stromverbrauch zu reduzieren. Viel Erfolg dabei!
Weitere Beiträge
von Dennis
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Dennis
IT Consultant
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.