
Traffic-Spitzen, sei es aufgrund einer Produkteinführung oder des Black Friday, sollten Ihre Anwendung nicht zum Absturz bringen oder Ihre Speicher- und RAM-Kapazität auslasten. Hier kommt die intelligente automatische Skalierung ins Spiel. Sie sorgt dafür, dass Anwendungen schnell bleiben und die Kosten unter Kontrolle bleiben, indem sie je nach Bedarf Anwendungsinstanzen hinzufügt oder entfernt. Anstatt eine feste Größe zu schätzen, überwacht die Plattform Live-Signale und passt die Ressourcen automatisch an.
Moderne Anwendungen erfordern mehr als nur das Hinzufügen zusätzlicher Server. Sie benötigen ausgefeilte Skalierungsstrategien, die zwischen vorübergehenden Spitzen und nachhaltigem Wachstum unterscheiden, einzelne Komponenten unabhängig voneinander skalieren und die Leistung über mehrere Cloud-Umgebungen hinweg aufrechterhalten können. Der Schlüssel liegt im Verständnis zweier grundlegender Skalierungsansätze: horizontale Skalierung und automatische Cluster-Skalierung.
Die Skalierung von Anwendungen ist keine Einheitslösung. Unterschiedliche Workloads erfordern unterschiedliche Strategien, und die effektivsten Skalierungsimplementierungen kombinieren mehrere Ansätze, um robuste, kostengünstige Systeme zu schaffen.
Beider horizontalen Skalierung liegt der Schwerpunkt auf dem Hinzufügen weiterer Instanzen Ihrer Anwendungscontainer, um die Last zu verteilen. Anstatt auf einen leistungsstärkeren Server aufzurüsten, werden bei der horizontalen Skalierung zusätzliche identische Anwendungsinstanzen erstellt, die sich den eingehenden Datenverkehr teilen. Dieser Ansatz eignet sich besonders gut für zustandslose Anwendungen, bei denen jede verfügbare Instanz jede Anfrage bearbeiten kann.
Die Cluster-Skalierung hingegen arbeitet auf der Infrastrukturebene und passt die Anzahl der für Ihre Anwendungen verfügbaren Rechenknoten automatisch an. Wenn Ihre Anwendungsinstanzen mehr Ressourcen benötigen, als Ihr aktueller Cluster bereitstellen kann, stellt die automatische Cluster-Skalierung zusätzliche Knoten bereit. Umgekehrt werden bei sinkender Nachfrage nicht ausgelastete Knoten entfernt, um Kosten zu senken.
Sie fragen sich wahrscheinlich, wie es dann mit der vertikalen Skalierung aussieht? Die vertikale Skalierung verfolgt einen anderen Ansatz , indem sie die Leistung bestehender Server erhöht und den bereits vorhandenen Maschinen mehr CPU, RAM oder Speicher hinzufügt. Anstatt mehr Kopien Ihrer Anwendung auszuführen, weisen Sie Ihren aktuellen Anwendungsinstanzen mehr Ressourcen zu, um die erhöhte Last zu bewältigen. Dies eignet sich gut für Anwendungen, die sich nicht ohne Weiteres in mehrere Instanzen aufteilen lassen, wie beispielsweise Datenbanken oder Anwendungen mit komplexer Statusverwaltung. Die vertikale Skalierung hat jedoch ihre Grenzen: Einem einzelnen Server können nur begrenzt CPU und RAM hinzugefügt werden, und sie bietet nicht die gleiche Fehlertoleranz wie die horizontale Skalierung, da Sie weiterhin auf einzelne Maschinen angewiesen sind.
Schauen wir uns ein Beispiel an, das wir beide nachvollziehen können.
Stellen Sie sich eine Autofahrt vor. Normalerweise reist Ihre vierköpfige Familie bequem in einem Sedan. Heute organisieren Sie ein Familientreffen und müssen 20 Personen zum Strand transportieren. Vertikale Skalierung bedeutet, ein größeres Fahrzeug zu beschaffen; Sie tauschen Ihren Sedan gegen einen großen Bus, der alle 20 Personen in einer Fahrt befördern kann.
Bei der horizontalen Skalierung hingegen behalten Sie Ihren Sedan und besorgen sich vier weitere identische Autos. Jetzt haben Sie fünf Limousinen, die insgesamt 20 Personen befördern können (4 Personen pro Auto). Wenn ein Auto eine Panne hat, können die anderen vier die Fahrt trotzdem fortsetzen, und die Personen können sich auf die anderen Autos verteilen.
Bei der automatischen Cluster-Skalierung rekrutieren Sie drei weitere Familienmitglieder, die fahren können. Jetzt hat jedes Ihrer fünf Autos einen Fahrer, und alle 20 Personen können effizient reisen.
Schauen wir uns Cluster-Autoscaler einmal genauer an.
In herkömmlichen Cloud-Umgebungen arbeitet die Cluster-Autoskalierung auf der Infrastrukturebene und passt die Anzahl der Rechenknoten automatisch an die Anforderungen der Anwendungen an. Wenn Ihre Anwendungen mehr Ressourcen benötigen, als Ihre aktuellen Knoten bereitstellen können, stellt ein Cluster-Autoscaler zusätzliche Knoten bereit. Wenn der Bedarf sinkt, entfernt er nicht ausgelastete Knoten, um Kosten zu senken.
Der Cluster-Autoscaler überwacht kontinuierlich die Ressourcenanforderungen und Planungsbedürfnisse in Ihrer gesamten Infrastruktur. Moderne Implementierungen verwenden Algorithmen, die Faktoren wie ausstehende Pod-Planungsanforderungen, Knotenauslastungsmuster und Anwendungsressourcenanforderungen bei Skalierungsentscheidungen berücksichtigen. Dies verhindert sowohl Ressourcenengpässe als auch verschwenderische Überbereitstellung.
Die Integration zwischen horizontaler Pod-Skalierung und Cluster-Autoscaling schafft ein vollständiges Skalierungs-Ökosystem in Kubernetes-Umgebungen. Wenn Anwendungen mehr Instanzen benötigen, aber die vorhandenen Knoten nicht über ausreichende Kapazitäten verfügen, bleiben die Pods ausstehend, bis der Cluster-Autoscaler zusätzliche Knoten bereitstellt, um sie aufzunehmen.
Die Verwaltung der automatischen Cluster-Skalierung erfordert jedoch Fachwissen über Kubernetes-Betrieb, Cloud-Anbieter-Integrationen und die sorgfältige Konfiguration von Skalierungsrichtlinien, Knotenpools und Kostenkontrollen. Diese operative Komplexität ist ein Grund, warum viele Teams verwaltete Plattformen bevorzugen, die die Skalierung der Infrastruktur automatisch übernehmen.
Mit „Hyperscaler“ meinen wir die großen Cloud-Anbieter wie AWS, Google Cloud und Microsoft Azure, die riesige Maschinenflotten über mehrere Regionen hinweg betreiben. Ihr Wert ist einfach: nahezu sofortige Kapazität und eine globale Präsenz, wenn Sie sie brauchen. Ihr globales Netzwerk von Rechenzentren, fortschrittliche Orchestrierungsfunktionen und Managed Services schaffen die perfekte Umgebung für die Umsetzung intelligenter Skalierungsstrategien. Mit ihren Diensten müssten Sie jedoch weiterhin Knotengruppen, Autoscaler und Metriken miteinander verbinden.
Upsun ist auf AWS, Azure und Google Cloud Platform verfügbar und ermöglicht Ihren Anwendungen den Zugriff auf die Hyperscaler-Infrastruktur, während die Komplexität der Verwaltung mehrerer Cloud-Umgebungen abstrahiert wird. Dieser Multi-Cloud-Ansatz bietet mehrere Vorteile für Skalierungsvorgänge.
Erstens beseitigt er Bedenken hinsichtlich der Anbieterabhängigkeit, die Skalierungsentscheidungen oft einschränken. Ihre Anwendungen können die besten Funktionen jedes Hyperscalers nutzen, ohne Kompromisse bei der Architektur eingehen zu müssen. AWS bietet möglicherweise die ausgereiftesten Autoscaling-Services, Google Cloud die beste Kubernetes-Integration und Azure die überlegene Unternehmensintegration. Mit Upsun müssen Sie sich nicht für einen einzigen Anbieter entscheiden.
Zweitens ermöglicht die Multi-Cloud-Bereitstellung eine geografische Verteilung, die sowohl die Leistung als auch die Ausfallsicherheit verbessert. Ihre europäischen Nutzer können aus den europäischen Regionen von Azure bedient werden, während Ihr asiatischer Datenverkehr über die Infrastruktur von Google Cloud im asiatisch-pazifischen Raum geleitet wird. Bedienen Sie Nutzer aus dem Anbieter und der Region Ihrer Wahl. Wenn Sie eine hohe Verfügbarkeit in mehreren Regionen benötigen, führen Sie Projekte in mehreren Regionen durch und platzieren Sie eine CDN- oder DNS-Routing-Schicht davor.
Drittens wird die Kostenoptimierung in einer Multicloud-Umgebung komplexer. Verschiedene Hyperscaler bieten unterschiedliche Preismodelle für Rechenleistung, Speicher und Netzwerke an. Eine intelligente Platzierung der Workloads kann die Betriebskosten erheblich senken und gleichzeitig die Leistungsanforderungen erfüllen.
Upsun bietet Flexibilität durch horizontale und vertikale Skalierung, sodass Sie für jede Situation den richtigen Ansatz wählen können. In der Konsole wird die automatische Skalierung derzeit durch die durchschnittliche CPU-Auslastung gesteuert. Eine speicherbasierte automatische Skalierung ist in Planung. Bei Traffic-Spitzen fügt die automatische Skalierung in der Konsole automatisch Anwendungsinstanzen hinzu oder entfernt sie gemäß den von Ihnen festgelegten Regeln. Wenn Sie mehr Leistung pro Instanz benötigen, können Sie CPU, RAM und Festplatte für jeden Container anpassen, einschließlich Datenbanken und Caches.
Horizontale Skalierung auf Upsun
Die horizontale Skalierung auf Upsun wird über eine integrierte automatische Skalierungsfunktion gesteuert. Upsun fügt Anwendungsinstanzen hinzu oder entfernt sie, um sie an den aktuellen Bedarf anzupassen. Anstatt Ihre App zu überwachen und bei steigendem Datenverkehr manuell weitere Instanzen hinzuzufügen, verfolgt Upsun die durchschnittliche CPU-Auslastung Ihrer App und passt die Anzahl der Instanzen innerhalb der von Ihnen festgelegten Regeln an.
So funktioniert es: Upsun überwacht die durchschnittliche CPU-Auslastung aller Ihrer Anwendungsinstanzen. Wenn die CPU-Auslastung 5 Minuten lang bei 80 % oder höher bleibt, wird automatisch eine weitere Instanz gestartet, um die Last zu bewältigen. Wenn sich die Situation ändert und die CPU-Auslastung unter 20 % fällt, wartet das System 5 Minuten und entfernt dann die zusätzlichen Instanzen. Die Standardgrenze für Instanzen liegt in der Regel bei 1 bis 8 pro Umgebung, wobei die genauen Werte je nach Region variieren.
Sie können dies direkt in der Konsole einrichten, indem Sie auf „Ressourcen konfigurieren“ und dann unter der Spalte „Autoscaling“ auf „Aktivieren“ klicken. Dort können Sie Folgendes festlegen:
Sobald die automatische Skalierung aktiviert ist, können Sie die Anzahl der Instanzen nicht mehr manuell festlegen. Upsun übernimmt dies innerhalb der von Ihnen festgelegten Grenzen. Sie können jedoch die Menge an CPU, RAM und Festplattenspeicher anpassen, die jede Instanz erhält, aber die Anzahl der Instanzen wird automatisch festgelegt.
Beachten Sie, dass die automatische Skalierung derzeit nur für Anwendungen funktioniert.
Ein kurzes Beispiel: Wenn Ihr Shop in der Regel zwei App-Instanzen ausführt, fügt der Autoscaler Instanzen hinzu, sobald die CPU-Auslastung 5 Minuten lang 80 % überschreitet, und fährt damit fort, bis sich die Nachfrage stabilisiert oder das von Ihnen konfigurierte Maximum erreicht ist. Betrachten Sie „8“ als Standard-Obergrenze und nicht als Garantie, da die Obergrenzen je nach Region variieren.
Der Vorteil dieses Ansatzes liegt in seinem nahtlosen Betrieb. Da die horizontale Skalierung das Hinzufügen oder Entfernen von Instanzen beinhaltet, setzt Upsun die Änderung um, was Build-Minuten in Anspruch nimmt. Jede Skalierungsaktion verbraucht Build-Minuten, da neue oder entfernte Instanzen mit der Skalierungsaktion bereitgestellt werden. Wenn Ihre App häufig skaliert wird, kann dies zu einem erhöhten Verbrauch an Build-Minuten führen. Halten Sie die Bewertungszeiträume sinnvoll, um häufige Änderungen zu vermeiden, und kontrollieren Sie die Kosten, indem Sie zu aggressive Skalierungseinstellungen vermeiden.
Manchmal benötigen Sie keine weiteren Instanzen, sondern müssen lediglich Ihre vorhandenen Instanzen mit mehr Leistung ausstatten. Mit der vertikalen Skalierung führen Sie im Grunde genommen ein Hardware-Upgrade Ihrer vorhandenen App durch: mehr CPU, zusätzlicher RAM oder zusätzlicher Speicherplatz, anstatt weitere Instanzen hochzufahren.
Dieser Ansatz funktioniert besonders gut, wenn Sie mit Datenbanken oder Apps arbeiten, die sich nicht gut auf mehrere Instanzen aufteilen lassen. Bedenken Sie Folgendes: Der Betrieb mehrerer Datenbankinstanzen klingt zunächst großartig, bis Sie feststellen, dass Sie nun alle Daten synchronisieren müssen, was schnell kompliziert werden kann. Es ist viel einfacher, Ihrer einzelnen Datenbankinstanz mehr RAM und CPU-Leistung zuzuweisen.
Upsun bietet vier verschiedene Containerprofile, die Ihnen je nach den Anforderungen Ihrer App verschiedene Kombinationen aus CPU und RAM bieten:
Sie können diese Ressourcen jederzeit über die Konsole oder die CLI anpassen. Durch das Speichern vertikaler Änderungen wird die Umgebung neu bereitgestellt (kurze Ausfallzeit), und jede Instanz erhält die von Ihnen ausgewählte volle CPU- und RAM-Leistung. Dies eignet sich hervorragend für Dienste wie Datenbanken, Caches oder Anwendungen, deren Arbeit sich nicht ohne Weiteres auf mehrere Instanzen aufteilen lässt. Anstatt zu versuchen, mehrere Datenbankinstanzen auszuführen (was aufgrund von Datenkonsistenzproblemen kompliziert werden kann), können Sie Ihrer einzelnen Datenbankinstanz einfach mehr RAM und CPU zuweisen, um die erhöhte Last zu bewältigen.
Sie können innerhalb desselben Projekts vertikale Skalierung für Ihre Datenbank und horizontale Skalierung für Ihre Webanwendung kombinieren. Upsun übernimmt die Ressourcenzuweisung pro Umgebung, sodass Sie Ihrer Produktionsdatenbank mehr Leistung zuweisen können als Ihrer Entwicklungsdatenbank, während die Kosten angemessen bleiben.
Upsun funktioniert anders als herkömmliche Kubernetes-Setups. Während die Cluster-Autoscaler für selbstverwaltete Cluster gelten, übernimmt Upsun die gesamte Skalierung der Infrastruktur automatisch im Hintergrund. Als Benutzer konzentrieren Sie sich auf die horizontale und vertikale Skalierung Ihrer Anwendungen, während Upsun die zugrunde liegende Infrastrukturkapazität für Sie verwaltet.
Um die automatische Skalierung richtig einzusetzen, reicht es nicht aus, einfach nur eine Funktion zu aktivieren. Sie müssen verstehen, wie sich Ihre Anwendung tatsächlich verhält, die richtigen Metriken für die Überwachung auswählen und die Einstellungen kontinuierlich an die tatsächlichen Vorgänge in der Produktion anpassen. Plattformen wie Upsun erleichtern dies erheblich, indem sie die komplexen Infrastrukturaspekte automatisch verwalten, sodass Sie sich auf die Entwicklung großartiger Anwendungen konzentrieren können, anstatt sich mit Skalierungskonfigurationen herumzuschlagen.
Wenn Ihre Anwendungen wachsen, sollte Ihr Skalierungsansatz mitwachsen. Die Implementierung einer intelligenten automatischen Skalierung zahlt sich in Form von besserer Leistung, geringeren Kosten und der Fähigkeit aus, sich schnell anzupassen, wenn sich Ihre Geschäftsanforderungen ändern oder neue Möglichkeiten entstehen.
Erfolgreich sind diejenigen Apps, die sich intelligent skalieren lassen, sich automatisch an die Nachfrage anpassen und gleichzeitig Leistung und Kosten im Griff behalten. Mit der richtigen Plattform und dem richtigen Ansatz können Ihre Anwendungen jedes Wachstum bewältigen.