© Ekaphon maneechot/Shutterstock.com
Just add Hardware - mehr hilft mehr stimmt nicht immer

Prinzipien skalierbarer Architektur


Skalierbarkeit ist seit jeher eines der zentralen Architekturziele. Seitdem aber die zu verarbeitenden Datenmengen exponentiell wachsen und Two- und Three-Tier-Architekturen durch Multi-Tier-Architekturen abgelöst werden, kommt dem Architekturziel „Skalierbarkeit“ eine immer größere Bedeutung zu. Und da Skalierbarkeit zudem mit anderen Architekturzielen kollidieren kann, stellt sich die Frage, welche technologieneutralen Prinzipien existieren, um eine skalierbare Architektur zu entwickeln und zu steuern.

Skalierbarkeit beschreibt als Qualitätsattribut die Fähigkeit einer IT-Architektur, an eine steigende Last mit möglichst gering-invasiven Methoden anpassbar zu sein. Hierbei sind insbesondere zwei Dimensionen von Interesse: Zum einen müssen steigende Datenvolumen betrachtet werden, die beispielsweise durch Datenbankmanagementsysteme verarbeitet werden müssen; zum anderen ist die Zugriffszeit relevant, die unter steigenden Zugriffszahlen leidet. Eine ideale skalierbare Architektur zeichnet sich vor dem Hintergrund dieser Dimensionen dadurch aus, dass einer steigenden Last durch das bloße Hinzufügen einer (proportionalen) Menge neuer Hardware begegnet werden kann und im Ergebnis die Performance der Anwendung (z. B. messbar an den Leistungsgrößen Latenz und Durchsatz [1]) konstant bleibt.

Die Bedeutung dieser Fähigkeit nimmt aufgrund der Entwicklungen der letzten Jahre stetig zu: die von IT-Systemen erzeugten und zu verarbeitenden Datenmengen steigen exponentiell, da immer mehr Lebensbereiche von IT-Anwendungen durchdrungen werden. Gleichzeitig steigt die Vernetzung der IT-Anwendungen untereinander kontinuierlich. Hierbei existieren eine Vielzahl unterschiedlicher Endgeräte und Plattformen (Smartphone, Tablets, Embedded-Anwendungen vom Kühlschrank über das Auto bis hin zu Wearables), die integriert werden müssen. Schließlich eröffnen neue Möglichkeiten der Allokation von Rechnerkapazitäten (Virtualisierung, Cloud Computing) auch neue architektonische Lösungsmöglichkeiten.

Die Herausforderung des Architekten besteht entsprechend darin, die Skalierbarkeit einer IT-Lösung mit konkurrierenden Qualitätsattributen in Einklang zu bringen: Skalierbarkeit, Verfügbarkeit und Performance sind allerdings einander widersprechende Architekturziele [2]. Last but not least ist auch der Kostenaspekt für das jeweilige Anwendungsszenario zu berücksichtigen. Die im Folgenden dokumentierten Prinzipien sollen helfen, eine Architektur zu entwerfen, die eine größtmögliche Skalierbarkeit unterstützt und gleichzeitig andere Architekturziele angemessen berücksichtigt.

Prinzip 1: die richtige Skalierungsstrategie wählen

von_brauk_skalierung_formel1.tif_fmt1.jpga: nicht parallelisierbarer Codeanteil
P: Anzahl Prozessoren

In vielen Einsatzszenarien ist Skalierung gleichbedeutend mit dem Hinzufügen von Speichermodulen, Bestückung freier Prozessorsockel oder dem Einbau neuer oder größerer Festplatten. Dieser als vertikale Skalierung bzw. Scale-up bezeichnete Ansatz hat die Vorteile, dass keine neuen Serversysteme in das Netzwerk integriert werden müssen, keine neue Software installiert werden muss, die Anpassung von Konfigurationen sich auf ein kleines Maß beschränkt und die IT-Architektur als solche unberührt bleibt. Solange keine Spezialhardware eingekauft werden muss, ist dieses Vorgehen zudem noch recht günstig. Schließlich ist auf Anwendungsebene diese Strategie oft auch die einzig mögliche, da nicht alle (Legacy-)Anwendungen darauf ausgelegt sind, auf mehrere Server verteilt oder parallel betrieben zu werden – die Parallelisierung von Aktivitäten ist aber ein wesentliches Merkmal der Skalierbarkeit. Naturgemäß stößt die Ausbaufähigkeit einzelner Knoten zum einen an physische Grenzen, sodass der nächste Skalierungsschritt dann nur noch durch den Ersatz der entsprechenden Hardware mit leistungsfähigeren – und oftmals überproportional teuren – Systemen erfolgen kann. Zu berücksichtigen ist im Hinblick auf Performanceaspekte aber auch, dass der Ansatz oftmals nicht linear skaliert. Nach Amdahls Gesetz [3] bewirkt beispielsweise die Verdoppelung der Anzahl von Prozessoren einen Performancegewinn von lediglich 20 Prozent, wenn der Anteil des parallelisierbaren Codes der betriebenen Anwendung 70 Prozent beträgt. Diese Skalierungsstrategie macht es also nicht nur erforderlich, Hardware hinzuzufügen, sondern auf der Ebene der Softwarearchitektur einen möglichst hohen Parallelisierungsgrad zu ermöglichen (siehe Formel).

Die alternative Skalierungsstrategie der horizontalen Skalierung (Scale-out) setzt auf einer anderen Granularitätsebene an: Erhöht sich die Last auf einem IT-System, soll es durch einfaches Hinzufügen von neuen Knoten aus billiger x86-Standardhardware oder virtuellen Maschinen möglich sein, der erhöhten Last zu entsprechen. Neben dem Kostenaspekt hat diese Elastizität [4] die Vorteile, dass die Leistungserweiterung im laufenden Betrieb und ohne aufwändige Migrationsprojekte implementiert werden kann. Allerdings stellt sich die Frage, unter welchen Bedingungen eine solche Skalierungsstrategie angewandt werden kann, denn es ist offensichtlich, dass durch den Parallelbetrieb identischer Server und Anwendungen erhebliche architektonische Herausforderungen beispielsweise hinsichtlich Datenkonsistenz, Verfügbarkeit und Redundanz generiert werden.

Prinzip 2: Last richtig Verteilen

Kommt es zu dem Szenario, dass aufgrund von steigender Last mehrere Knoten eingesetzt werden sollen, stellt sich die Frage, wie die auflaufende Last verteilt werden kann. Abbildung 1 zeigt exemplarisch drei Alternativen zum horizontalen Skalieren von Datenbanksystemen auf – diese Alternativen können zudem mit...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang