Software wird immer effektiver … aber!

24.07.2023

Wir alle lieben Balkendiagramme, wo der eine Balken größer ist als der Andere ;). Aber nicht nur auf dem (Marketing) Papier wird Software immer effektiver. Doch was ist die Konsequenz daraus für die Nachhaltigkeit von Software?

In der Softwareentwicklung findet eine stetige Optimierung der Technologien statt, welche kein Ende zu finden scheint. Einen besonders großen Effekt haben dabei Technologien, welche als Grundlagen für weitere Technologien dienen. Zum Beispiel haben neue Programmiersprachen wie zum Beispiel Zig oder Rust dafür gesorgt, dass viele Technologien wie z. B. Datenbanken in diesen Sprachen neu gedacht und implementiert werden. Die Folge ist eine neue Generation von Software mit weniger Bugs und einem effektiveren Ressourcenverbrauch. Werden dabei bestehende Standards und Schnittstellen eingehalten, dann ist der Umstieg sogar nur mit einem geringen Aufwand verbunden. Hier ein paar Beispiele:


Bun ist eine neue Plattform für Javascript Anwendungen und konkurriert damit mit Deno (zweite Generation) und Node.js (erste Generation). Bun wird mit der Sprache Zig entwickelt.

Requests per second - Deno vs Node
https://deno.land
Requests per second - Bun vs Deno vs Node
https://bun.sh

Dragonfly ist eine Redis kompatible Key-Value Datenbank, welche Millionen von Queries in der Sekunde leisten soll. Das wird dadurch erreicht, indem Dragonfly vorhandene Ressourcen wie CPU und Speicher besser ausnutzt.

Queries per second - Key Value Datenbanken im Vergleich
https://github.com/dragonflydb/dragonfly

TigerBeetle ist eine Accountingdatenbank, die über eine Million Transaktionen leisten kann und damit z. B. neue Geschäftsmodelle ermöglicht, die vorher mit höherem Aufwand verbunden waren (z. B. Mikrotransaktionen). TigerBeetle wird mit der Sprache Zig entwickelt.

Tigerbeetle wirbt mit besserer Effizienz
https://tigerbeetle.com

Unikernels sind Images, welche Anwendungen und ein minimales Betriebssystem zusammenfassen. Durch den reduzierten Overhead soll die Effektivität und Sicherheit verbessert werden.

Unikraft verspricht mehr Leistung mit weniger Resourcen
https://unikraft.org
Durch das weglassen ganzer Schichten will Nanos effektiver sein
https://nanos.org und https://nanovms.com

Natürlich klingen solche Vergleiche oft zu schön, um wahr zu sein und man muss sie immer mit Vorsicht genießen. Im Kern löst diese Entwicklung viele unserer Probleme, birgt aber auch Gefahren, denen wir uns bewusst sein sollten. Die Steigerung von Effektivität geht in der Regel mit dem Rebound Effekt einher.


Effizienzsteigerungen senken oft die Kosten für Produkte oder Dienstleistungen. Dies kann dazu führen, dass sich das Verhalten der Nutzerinnen und Nutzer ändert: Sie verbrauchen mehr – die ursprünglichen Einsparungen werden teilweise wieder aufgehoben. Dieser Effekt wird Rebound genannt. (Quelle)


Besonders Java Entwickler kennen diesen Effekt wahrscheinlich gut. Durch die Java Programmiersprache und dem einhergehenden Ökosystem lässt es sich bequem allerlei Software entwickeln ohne auf Dinge wie z. B. Memorymanagement zu achten. Die Folge waren viele neue Anwendungen mit tollen Funktionen. Diese Anwendungen waren aber eben auch dafür bekannt enorme Mengen an Arbeitsspeicher zu belegen, was erst dadurch akzeptabel wurde, dass Arbeitsspeicher in Mengen günstig verfügbar wurde. Notwendig, um die eigentliche Funktionalität bereitzustellen, war das nicht.

Deshalb ist es wichtig, dass wir a) diesen Effekt immer im Hinterkopf haben und b), dass wir kontinuierlich gegenlenken, z. B. indem wir hinterfragen, ob etwas überhaupt notwendig ist.

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*