Beim Horizontal Scaling wird eine Infrastruktur um zusätzliche Maschinen erweitert, um sich an die steigende Nachfrage nach einer Anwendung oder einer Website anzupassen. Hier erfährst du alles, was du über diese Erweiterungsmethode wissen musst, wie sie sich vom vertikalen Scaling unterscheidet und welche Anwendungsfälle es in der Cloud oder im Bereich Data Science gibt!
Der Erfolg einer Website, eines Webdienstes oder einer App hängt stark von der Menge des Netzwerkverkehrs ab, der bewältigt werden kann. Es ist nicht ungewöhnlich, die Nachfrage zu unterschätzen, was zu einem Serverabsturz oder einer Verschlechterung der Dienstqualität führen kann.
Im Bereich der Softwareentwicklung ist die Kapazitätsplanung von entscheidender Bedeutung. Selbst bei einer unvorhergesehenen Spitze des Datenverkehrs auf einer Anwendung oder Website müssen die richtigen Ressourcen vorhanden sein, um die Last zu tragen.
Bei einem Anstieg der Nachfrage müssen die Erreichbarkeit, die Speicherkapazität und die Verfügbarkeitsstufen erhöht werden. Es kann jedoch schwierig sein, zwischen horizontalem und vertikalem Scaling (Skalierung) zu entscheiden.
Diese Entscheidung hängt von vielen Faktoren ab, wie z. B. der Geschwindigkeit, mit der das Anfragevolumen steigt, oder dem Grad der Beeinträchtigung des Dienstes, der durch Wachstumsspitzen verursacht wird. Es ist unerlässlich, all diese Kriterien und die Besonderheiten der jeweiligen Anwendung zu berücksichtigen, um die optimale Methode auszuwählen…
Horizontal Scaling -Was ist Skalierbarkeit?
Skalierbarkeit ist die Elastizität eines Systems. Sie wird oft als die Fähigkeit eines Systems, zu wachsen, definiert, umfasst aber auch die Fähigkeit, zu schrumpfen oder sich horizontal auszudehnen.
Es handelt sich also um die Fähigkeit des Systems, sich an Veränderungen und die Nachfrage anzupassen. Dadurch werden Ausfallzeiten vermieden und die Qualität des Dienstes sichergestellt.
Die Skalierbarkeit einer App ist die Anzahl der Anfragen, die sie gleichzeitig bewältigen kann. Ihre Grenze ist der Punkt, an dem die Anwendung keine weiteren Anfragen mehr unterstützen kann.
Diese Grenze ist erreicht, wenn eine wichtige Hardwareressource erschöpft ist. Dann müssen zusätzliche Rechner hinzugefügt werden oder es müssen andere Rechner gewählt werden.
Das Skalieren von Ressourcen kann die Anpassung verschiedener Elemente beinhalten. Bei CPU und RAM können zusätzliche oder andere Maschinen hinzugefügt werden. Bei Festplatten kann ihre Kapazität erhöht oder sie können durch SSDs ersetzt werden.
Die Netzwerkbandbreite kann skaliert werden, indem mehrere Netzwerkschnittstellen-Controller oder Netzwerkschnittstellenkarten mit höherer Kapazität hinzugefügt werden. Diese verschiedenen Änderungen können je nach Bedarf kombiniert werden.
Sowohl die horizontale als auch die vertikale Skalierung bedeuten, dass der Infrastruktur Computerressourcen hinzugefügt werden. Beide Ansätze weisen jedoch große Unterschiede in Bezug auf die Implementierung und die Leistung auf.
Was ist Horizontal Scaling?
Horizontales Scaling oder Horizontal Scaling out ist das Hinzufügen von zusätzlichen Knoten oder Maschinen zu einer Infrastruktur, um auf eine veränderte Nachfrage zu reagieren.
Wenn z. B. eine Anwendung auf einem Server gehostet wird, der nicht mehr in der Lage ist, den Datenverkehr zu bewältigen, kann das Hinzufügen eines weiteren Servers eine Lösung für das Problem sein.
Man kann dieses Konzept damit vergleichen, Aufgaben auf mehrere Mitarbeiter zu verteilen, anstatt die gesamte Arbeit einer Person zu übertragen.
Doch auch wenn die Vorteile auf der Hand liegen, hat dieser Ansatz den Nachteil, dass er die Komplexität der Abläufe erhöht. Es ist wichtig, die Rolle jeder Maschine genau zu definieren.
Horizontal Scaling vs. Vertical Scaling: Wo liegen die Unterschiede?
Horizontales Scaling oder „Scaling out“ bedeutet, dass mehr Maschinen zum Ressourcenpool hinzugefügt werden. Beim vertikalen Scaling oder „scaling up“ geht es darum, einem bestehenden Rechner mehr Leistung hinzuzufügen, z. B. mehr RAM oder eine bessere CPU.
Einer der Hauptunterschiede zwischen diesen beiden Ansätzen besteht darin, dass beim horizontalen Scaling ein Stück sequentielle Logik in kleinere Teile zerlegt werden muss. Das Ziel ist es, diese auf mehreren Rechnern parallel ausführen zu können.
Im Allgemeinen ist das vertikale Scaling einfacher, weil die Logik nicht verändert werden muss. Man führt einfach denselben Code auf Maschinen mit höherer Leistung aus.
Es gibt jedoch viele weitere kleinere Unterschiede, die je nach Art der zu skalierenden Anwendung bei der Bestimmung des richtigen Ansatzes berücksichtigt werden müssen.
Im Bereich der Datenbanken basiert das horizontale Scaling normalerweise auf der Partitionierung der Daten. Jeder Knoten enthält nur einen Teil der Daten. Beim vertikalen Scaling befinden sich die Daten auf einem einzigen Knoten und es werden Cores hinzugefügt, um die Last zwischen den RAM- und CPU-Ressourcen des Rechners zu verteilen.
Um Downtime oder Ausfallzeiten zu vermeiden, ist Horizontal Scaling die beste Wahl, da es verhindert, dass man auf die Kapazität einer einzelnen Einheit beschränkt ist. Im Gegensatz dazu basiert das vertikale Scaling auf der Kapazität eines einzelnen Rechners und kann daher eine Downtime und eine Obergrenze beinhalten.
Diese beiden Ansätze unterscheiden sich auch bei der konkurrierenden Programmierung. Beim horizontalen Scaling werden bei der verteilten Programmierung Aufgaben auf mehrere Maschinen in einem Netzwerk verteilt. Im vertikalen Scaling wird die konkurrierende Programmierung auf Maschinen mit mehreren Kernen häufig durch Multithreading durchgeführt.
Das Teilen oder Aktualisieren von Daten kann in der Horizontalen teurer sein, da mehrere Kopien der Daten übertragen werden müssen. In der Vertikalen ermöglicht Multithreading das Teilen von Daten innerhalb eines gemeinsamen Bereichs.
Beispiele für Datenbanken mit horizontalem Scaling sind Cassandra, MongoDB oder Google Cloud Spanner. Zu den Datenbanken mit vertikalem Scaling gehören MySQL und Amazon RDS.
Vor- und Nachteile des Horizontal Scaling
Horizontal Scaling hat einige Vorteile, aber auch einige Nachteile. Zunächst einmal vereinfacht dieser Ansatz das Scaling auf der Hardware-Ebene. Es werden einfach zusätzliche Maschinen zum bestehenden Pool hinzugefügt, und dadurch entfällt die Notwendigkeit, die Eigenschaften des zu verbessernden Systems zu analysieren.
Dieses Modell reduziert auch die Ausfallzeiten. Um eine Maschine hinzuzufügen, müssen die anderen nicht abgeschaltet werden. Die Ausfallzeit kann sogar ganz eliminiert werden und die Kunden haben ein geringeres Risiko, davon betroffen zu sein.
Außerdem werden die Ausfallsicherheit und die Fehlertoleranz erhöht. Die Abhängigkeit von einem einzigen Knotenpunkt für alle Daten und Vorgänge birgt ein hohes Risiko, bei einem Ausfall alles zu verlieren. Durch die Verteilung auf mehrere Knoten wird dieses Risiko vermieden.
Schließlich erhöht sich die Anzahl der Endpunkte für Verbindungen durch die Verwendung von Horizontal Scaling für die Verwaltung des Netzwerkverkehrs, da die Last auf mehrere Rechner verteilt wird. Dadurch wird die Leistung gesteigert.
Andererseits kann die Komplexität der Wartung und des Betriebs steigen. Es ist schwieriger, mehrere Server zu warten als eine einzelne Maschine, und es wird Software für den Lastausgleich und die Virtualisierung benötigt.
Auch das Back-up der Maschinen kann komplexer werden, und die Knoten müssen synchronisiert werden und effektiv kommunizieren. Schließlich ist das Hinzufügen neuer Server viel teurer als das Aufrüsten bestehender Maschinen.
Scaling auf der Cloud
Das Scaling in der Cloud funktioniert auf die gleiche Weise wie das Scaling on-premise (vor Ort). Ein Anbieter von Cloud-Diensten kann horizontales Scaling auf der Grundlage einer hyper-konvergenten Infrastruktur implementieren oder sich für die Nutzung verteilter virtueller Dienste entscheiden.
Horizontal Scaling basiert auf der Bereitstellung einer neuen Infrastruktur, während vertikales Scaling auf der bestehenden Infrastruktur aufbaut. In der Cloud wird diese Skalierbarkeit vor allem durch die Virtualisierungsfähigkeiten in einer Cloud-Architektur erreicht.
Virtuelle Maschinen werden von einer physischen Infrastruktur mit relativ kristallisierten Eigenschaften und Fähigkeiten unterstützt. Die Flexibilität, die VMs bieten, vereinfacht die Skalierung.
So können z. B. bestehende Workloads bei Bedarf einfach in mehr oder weniger große virtuelle Maschinen verschoben werden. Anwendungen und Workloads, die auf diesen VMs gespeichert und verarbeitet werden, können gleichzeitig auf einen oder mehrere verschiedene Server übertragen werden.
Bei den meisten Hybrid- oder privaten Cloud-Lösungen übernimmt der Cloud-Anbieter das Scaling. Das IT-Team der Organisation muss sich also keine Gedanken darüber machen, wie viel Hardware angesichts der steigenden Nachfrage benötigt wird.
Dienstleister wie Azure und AWS bieten ein automatisches Scaling und eine Anpassung in Echtzeit, wenn die Nachfrage steigt oder sinkt. Dies ermöglicht ein wesentlich effizienteres und kostengünstigeres Scaling und ist einer der Vorteile des Umzugs in die Cloud.
Wie wähle ich zwischen Horizontal und Vertikal Scaling?
Bei der Entscheidung zwischen Vertical und Horizontal Scaling müssen mehrere Faktoren berücksichtigt werden. Je nach Anwendungsfall und den zu beachtenden Einschränkungen ist die ideale Wahl nicht immer die gleiche.
Zunächst einmal, was die Leistung angeht, ermöglicht horizontales Scaling, die Leistung mehrerer Maschinen in einer einzigen virtuellen Maschine zu kombinieren. Die Leistung ist also nicht auf die Kapazität eines einzelnen Rechners beschränkt.
Es ist jedoch besser, zu prüfen, ob die Ressourcen eines einzelnen Rechners ausreichen, bevor du eine Skalierung in Betracht ziehst. Dies kann nämlich dazu beitragen, die Kosten zu minimieren.
Außerdem bietet das Horizontal Scaling mehr Flexibilität bei der Wahl der Konfiguration zur Optimierung von Kosten und Leistung. Beim vertikalen Scaling wird ein Mindestpreis durch die verwendete Hardware definiert.
Ebenso können beim horizontalen Scaling einzelne Codeteile leichter hinzugefügt oder geändert werden, ohne dass das gesamte System vorübergehend deaktiviert werden muss. Dieser Ansatz ermöglicht daher kontinuierliche Aktualisierungen. Horizontal Scaling ermöglicht auch eine höhere Redundanz und vermeidet die Gefahren eines Single Point of Failure.
Horizontales Scaling ist erforderlich, wenn eine Anwendung über mehrere geografische Regionen oder Rechenzentren verteilt werden muss, um die Latenzzeit zu verringern, Vorschriften einzuhalten oder die Wiederherstellung im Katastrophenfall zu vereinfachen.
Generell ist es nicht immer sinnvoll, sich zwischen Vertical und Horizontal Scaling zu entscheiden. Oft ist es sinnvoller, zwischen diesen beiden Modellen zu wechseln. Zum Beispiel kann man bei der Datenspeicherung zwischen einem einzelnen lokalen Laufwerk und einem verteilten System wechseln.
Ein flexibles System, bei dem einige Anwendungsschichten auf vertikal skalierenden Maschinen und andere auf einer horizontal skalierenden Infrastruktur laufen, kann schwer zu entwerfen sein.
Es muss von Anfang an als ein Satz entkoppelter Dienste gedacht und die Übertragung von Code vereinfacht werden. So können bei Bedarf Ressourcen hinzugefügt werden, ohne die Verbindungen zwischen den Code-Sets zu zerreißen. Die Partitionierung der Anwendung und des Datenmodells verhindert auch das Teilen zwischen parallelen Einheiten.
Der horizontal verteilte Ansatz wird in der Softwarewelt angesichts der steigenden Nachfrage nach Redundanz und des Wachstums von Cloud- und SaaS-Umgebungen immer häufiger angewandt. Dennoch bringt die Kombination mit vertikalem Scaling viele Vorteile.
Wo finde ich eine Data Science Weiterbildung?
Horizontal Scaling ist ein wichtiges Konzept im Bereich der Data Science und des Data Engineering. Um dieses Konzept zu beherrschen, kannst du dich für DataScientest entscheiden.
Unsere Kurse vermitteln dir alle Fähigkeiten, die du für die Ausübung von Data Science-Berufen wie Data Scientist, Data Engineer, Data Analyst oder Data Product Manager benötigst.
In diesen Kursen wirst du unter anderem in die Programmierung mit Python, Machine Learning, Datenbanken, CI/CD und Automatisierungstechniken eingeführt. Während des gesamten Kurses gibt es ein Projekt, das sich wie ein roter Faden durch die gesamte Ausbildung zieht, sodass du durch die Praxis lernen kannst.
Unsere zertifizierenden Kurse ermöglichen es dir, ein Zertifikat von Mines ParisTech PSL Executive Education oder Paris Dauphine-PSL zu erhalten und eine Zertifizierung als „Projektleiter für künstliche Intelligenz“ zu erhalten. Du kannst auch eine Amazon Web Services oder Microsoft Azure Cloud-Zertifizierung erwerben.
Alle unsere Programme können vollständig im Remote, als Weiterbildung oder im intensiven BootCamp-Modus absolviert werden. Unsere Organisation ist für den Bildungsgutschein zur Finanzierung zugelassen. Entdecke jetzt DataScientest!