Definition „Software Scalability“ Was ist Skalierbarkeit?

Autor / Redakteur: Gedeon Rauch / Stephan Augsten

Dank Skalierbarkeit kann eine Software mit mehr Ressourcen oder in einem neuen Umfeld entsprechend der zusätzlich zur Verfügung stehenden Leistung funktionieren. Essenziell ist dies nicht nur im privaten Umfeld, sondern auch für Unternehmen.

Firmen zum Thema

Skalierbare Software ist dazu in der Lage, die Leistung auf neue Gegebenheiten anzupassen.
Skalierbare Software ist dazu in der Lage, die Leistung auf neue Gegebenheiten anzupassen.
(© vladimircaribb - stock.adobe.com)

Skalierbarkeit bezeichnet, kurzgefasst, die Fähigkeit eines Systems, zu wachsen. Unter Zugabe weiterer Ressourcen steigt die Leistungsfähigkeit eines Systems weiter an, doch stößt die Definition hier auch auf Schwierigkeiten.

Wer schon selbständig CPU oder RAM ausgetauscht hat weiß, dass die Leistungsfähigkeit einer Software nicht in gleichem Maße steigt wie die der aufgerüsteten Hardware. Durch den Zusatz von Skalierungsfaktoren wird so klar, dass es sich bei der praktischen Skalierbarkeit um ein diffiziles Zusammenspiel handelt. Zudem muss in der Informationstechnik zwischen verschiedenen Formen der Skalierbarkeit unterschieden werden.

Vertikale und horizontale Skalierbarkeit einfach erklärt

Skalierbarkeit ist die Fähigkeit einer Software, mit einer größeren leistungsstärkeren Anlage zu wachsen. Die Anwendung sollte entsprechend nicht einfach nur trotz verbesserten Hardware-Bedingungen weiter funktionieren, sie sollte auch besser funktionieren. Diese Änderung findet in skalierbarer Software statt, ohne dass eine Zeile Code verändert werden muss.

Der Einsatz von besserer Hardware oder des Upgrades eines Rechners bzw. Knotenpunktes wird vertikale Skalierung genannt. Sprechen wir von vertikaler Skalierbarkeit, so meinen wir im Allgemeinen vorrangig die Skalierbarkeit nach oben. In seltenen Fällen ist jedoch auch von der Skalierbarkeit nach unten die Rede, in diesen Fällen funktioniert die Software weiter, aber mit verringerter Performance.

Natürlich ist Software dabei niemals beliebig nach unten oder oben skalierbar. Vielmehr gibt es physische Leistungsgrenzen, unter denen Software gar nicht lauffähig ist und Hardware, deren Funktionalität und Geschwindigkeit die Software nicht ausnutzen kann - beispielsweise weil diese zum Release-Zeitpunkt noch nicht einmal konzipiert war.

Ein Beispiel hierfür wäre die Installation einer zehn Jahren alten Anwendung auf einem modernen PC. Diese wird deutlich verbessert laufen, doch nicht um den Faktor verbessert, um den die Hardware schneller ist. Hier spielen viele Faktoren zusammen, die eine einfach zu errechnende Skalierbarkeit unmöglich machen. Die vertikale Skalierung erreicht immer dann ihre Grenze, wenn die aktuell schnellste und beste Hardware verbaut ist.

Das horizontale Skalieren hingegen setzt auf das Aneinanderreihen von mehr Rechnern und Knotenpunkten und kann theoretisch beliebig weiter gedacht werden. Die Leistungsgrenze ist hier eher Software-seitig gesetzt, da das Parallelisieren von Software nicht für jede Art Anwendung geeignet ist. Ein Beispiel für horizontale Skalierbarkeit sind beispielsweise Serverfarmen oder Rechenzentren.

Die unterschiedlichen Arten von Skalierbarkeit

  • Lastskalierbarkeit: Unter Lastskalierbarkeit versteht man ein System, dass weder bei sehr geringer noch bei sehr hoher Belastung eine Verzögerung aufweist. Das Systemverhalten wird hierbei als konstant beschrieben.
  • Räumliche Skalierbarkeit: Relevant für den Begriff der räumlichen Skalierbarkeit ist vor allem der akzeptable Anstieg des Speicherbedarfs. Dieser sollte sub-linear erfolgen, was in der Regel durch höhere Kompression oder den Einsatz einer sparse matrix erfolgt.
  • Dieser sub-lineare Anstieg des Speicherbedarfs erfolgt jedoch auf Lasten der Lastskalierbarkeit, da höhere Datenkompressionsraten ebenfalls mehr Rechenleistung und Zeit erfordern.
  • Zeitlich-räumliche Skalierbarkeit: Ein Beispiel für zeitlich-räumliche Skalierbarkeit findet sich in Form von modernen indizierten Suchmaschinen (wie beispielsweise Google). Der Anstieg an Daten führt bei Google nicht zu einem linearen Anstieg der Suchzeit, weil die Sortierung der Daten die notwendige Skalierbarkeit erlaubt. Hohe Performance wirkt sich folglich nicht auf die Performance aus.
  • Strukturelle Skalierbarkeit: Bei der strukturellen Skalierbarkeit kann die Anzahl der Objekte in einem definierten Bereich erhöht werden, ohne das System in seiner Performance negativ zu beeinflussen. Das System behindert also eine hohe Auslastung nicht.

Die vier Formen der Skalierbarkeit können nicht unabhängig voneinander betrachtet werden, da unterschiedliche Formen der Skalierbarkeit, abhängig von Implementierung und System, Wechselwirkungen aufeinander haben können, aber nicht müssen.

Skalierungsfaktoren anhand linearen Wachstums verstehen

Weiter oben war bereits vom Skalierungsfaktor die Rede, dieser bezeichnet den tatsächlichen Leistungszuwachs (Speed Up) beim Hinzufügen einer Leistungseinheit. Unterschieden wird hier zwischen super-linearem, linearem und sub-linearem Zuwachs. Verdeutlicht sei dies anhand des Hinzufügens eines Prozessorkerns und der skalierenden Leistung einer Software.

  • Lineares Wachstum: Die Skalierbarkeit wächst analog zu den zur Verfügung stehenden Ressourcen, ein zweiter Prozessorkern erhöht die Leistung um 100 Prozent.
  • Sub-lineares Wachstum: Die Skalierbarkeit nimmt mit den Ressourcen ab, hier würde ein zweiter Prozessorkern beispielsweise nur 75 Prozent Leistung zusätzlich bringen.
  • Super-lineares Wachstum: Die Skalierbarkeit steigt mit weiteren Ressourcen an und wird immer größer, ein zweiter Prozessorkern könnte hier die Leistung etwa um 125 Prozent steigern.
  • Negative Skalierbarkeit: Ein Sonderfall, bei dem die Leistung mit mehr Ressourcen nicht steigt, sondern sinkt. Dies kann in Systemen dann der Fall sein, wenn die zusätzlichen Systemressourcen nicht eingesetzt werden können, das Systemmanagement diese aber verwalten muss.

Skalierbarkeit im Kontext neuer Hard- und Software

Für privat genutzte Software ist die Skalierbarkeit meist ein zusätzlicher Pluspunkt. Dass Anwendungen mit einer neuen Grafikkarte besser abschneiden als vorher, setzen viele User*innen zwar in gewissem Maße voraus, dennoch erhöht es die Zufriedenheit mit einem wie erwartet performenden Produkt.

Viel entscheidender ist skalierbare Software aber oft auf Unternehmensebene, dort muss nämlich über viele Upgrades hinweg die Funktionalität gewährleistet sein und Software sollte auch nach mehreren Expansionen des Unternehmens, der Serverkapazitäten oder der Datenbank weiterhin lauffähig und reaktiv bleiben.

Doch Soft- und auch Hardware sind nicht nur im Zusammenspiel miteinander skalierbar, sondern auch die kontextuelle Nutzung (etwa ein Update oder Wechsel des Betriebssystems) kann die Leistung nachhaltig beeinflussen.

(ID:47537180)