Im IT-Bereich wird mit Skalierung bzw. Skalierbarkeit die Fähigkeit eines Computer-Systems oder einer Anlage beschrieben, sich sowohl den schrumpfenden als auch den wachsenden Anforderungen in Bezug auf die Performance der Software- und Hardware-Ebene möglichst flexibel anpassen zu können. In der Praxis wird Skalierung jedoch auch sehr häufig mit Wachstum gleichgesetzt.

Skalierbarkeit im Detail

Im Bereich moderner Informationstechnologien gelten Prozesse als skalierbar, wenn sie parallel zu den vorgegebenen Aufgaben wachsen oder schrumpfen können. Ein IT-System oder eine Anlage, die im Rahmen einer Skalierung den neuen Anforderungen angepasst wurde, ist auch nach der Implementierung der neuen Maßnahmen voll funktionsfähig. Skalierung bedeutet jedoch nicht nur, dass die skalierte Anwendung oder das System funktionieren, sondern dass auch die daraus resultierenden Vorteile weiterhin nutzbar sind. So gilt beispielsweise zum Beispiel eine Datenbank als skalierbar, wenn sie von einem einzelnen Server auf ein verteiltes Server-Cluster übertragen werden kann.

Die Vorteile einer solche Skalierung spiegeln sich in erster Linie in kürzeren Antwortzeiten und einer effizienteren Verwaltung der Datenbank. In der Praxis ist es oft so, dass sich eine Skalierbarkeit viel einfacher nach oben als nach unten realisieren lässt. Dies ist auf die Tatsache zurückzuführen, dass bei einer Herunterskalierung das System eine gute Performance in einer kleineren Umgebung bereitstellen muss, während bei einer Skalierung nach oben zusätzliche Ressourcen zur Verfügung gestellt werden. Die Leistung eines Systems lässt sich auf zwei verschiedene Arten steigern, und zwar vertikal und horizontal.

Vertikale Skalierung

Im Rahmen einer vertikalen Skalierbarkeit (Scale Up) werden Ressourcen innerhalb einer logischen Einheit zusammengefügt. Konkret bedeutet das, dass die Leistungssteigerung durch das Hinzufügen von Ressourcen innerhalb eines Systems realisiert wird. Prominente Beispiele für diese Art der Skalierbarkeit wären:

– das Vergrößern der vorhandenen Speicherplatzkapazität

– das Hinzufügen einer leistungsstärkeren CPU

– Aufrüstung von Arbeitsspeicher

– Einbau einer besseren GPU

Bei einer vertikalen Skalierung kann die vorhandene Software sehr einfach angepasst werden. In vielen Anwendungs-Fällen ist sogar eine Anpassung überhaupt nicht nötig. In der Regel muss keine Zeile Code neugeschrieben werden, um einen Leistungszuwachs durch vertikales Skalieren zu erhalten. Die vertikale Skalierbarkeit stößt jedoch früher oder später an Grenzen des Möglichen, weil man beispielsweise bereits die schnellste Hardware nutzt und eine Aufrüstung demzufolge nicht möglich ist.

Mehr zum Thema:
Software Defined Storage mit CEPH

Horizontale Skalierung

Bei der horizontalen Skalierbarkeit (Scale Out) sind im Gegensatz zu der vertikalen Skalierbarkeit keine Grenzen in Bezug auf die Performance der Hardware in bestehender IT-Infrastruktur gesetzt. Hier wird die Leistungssteigerung des Gesamt-Systems durch das Hinzufügen zusätzlicher Server bzw. Computer realisiert. Dabei ist es grundsätzlich egal ob die Skalierung mit physischen oder virtuellen Servern erfolgt. Wie gut diese Art der Skalierung letztendlich funktioniert, hängt in erster Linie von der eingesetzten Software ab, denn nicht jede Anwendung lässt sich gleich gut parallelisieren. Konkret bedeutet das, dass eine horizontale Skalierung dann vorliegt, wenn weitere Server- oder Rechner-Knoten hinzukommen, damit der steigende Workload mit gleichbleibender Leistung verarbeitet werden kann.

In einem Cloudsystem verteilen sich dann die anstehenden Aufgaben auf mehrere Rechner-Instanzen. In der Praxis wird das dadurch gelöst, dass ein Server als Verteiler für die Workloads (Load Balancing) in dem jeweiligen Server-Cluster eingesetzt wird. Der Einsatz eines Load Balancers ist immer dann nötig, wenn viele einzelne Ressourcen als eine Einheit zusammen im Rahmen einer horizontalen Skalierung fungieren müssen. Aus diesem Grund ist der sogenannte „Skalierbarkeitsfaktor“, also das Verhältnis zwischen der gewonnenen Leistung und den eingesetzten Ressourcen, hier prinzipiell niedriger als bei vertikaler Skalierbarkeit. Hinzu kommt noch, dass die horizontale Skalierbarkeit in der Regel kostengünstiger als vergleichbare Skalierungsmaßnahmen ist. Hinsichtlich des Overheads sind vertikale Skalierungsmaßnehmen jedoch viel effizienter als es bei der horizontalen Skalierbarkeit der Falls ist.

Skalierungsmaßnehmen und das Schichtenmodell

Um ein IT-System möglichst skalierbar zu gestalten, hat es sich im Laufe der Jahre bewährt, sämtliche Skalierungsmaßnehmen als Schichtenmodell zu implementieren. Im Rahmen dieses Ansatzes werden die einzelnen Schichten logisch voneinander getrennt, sodass jede einzelne Schicht für sich selbst skaliert werden kann. Eine äußerst beliebte Architektur im Bereich der Webentwicklung ist die sogenannte „3-Schichten-Architektur“. Um dabei eine möglichst hohe Skalierbarkeit zu erzielen, muss die Architektur so umgesetzt sein, dass sich jede dieser drei Schichten möglichst flexibel und unkompliziert skalieren lässt. Eine 3-Schichten-Architektur setzt sich aus folgenden Komponenten zusammen:

Präsentationsschicht: Diese Schicht wird auch als Front-End bezeichnet und ist für die Darstellung der Daten zuständig.

Logikschicht: Diese Schicht vereint die gesamte Anwendungslogik.

Datenbankschicht: Diese Schicht enthält die Datenbank, wie beispielsweise MySQL oder PostgreSQL, und ist für die Speicherung und die Bereitstellung von Daten zuständig.

Mehr zum Thema:
Was ist eigentlich... ein Browser?

Während sich die Präsentationsschicht relativ einfach horizontal skalieren lässt, ist im Rahmen der Logikschicht eine Anpassung des Codes nötig. Dabei sollte beachtet werden, dass eine möglichst große Menge der Code-Logik parallelisiert werden muss, um eine effiziente Skalierung zu erhalten. Am kompliziertesten ist die Skalierung der Datenbankschicht, weshalb diese Optimierungen komplexes Expertenwissen benötigen.

Letzte Artikel von Daniel Faust (Alle anzeigen)