
Wenn Plattformanbieter von automatischer Skalierung sprechen, meinen sie damit meist eines: die automatische Skalierung von Anwendungen, also das Hinzufügen oder Entfernen von Web-Instanzen je nach Datenverkehr. Das Prinzip ist allgemein bekannt: Man definiert eine Metrik, legt einen Schwellenwert fest und lässt die Plattform entsprechend reagieren.
Die meisten Plattformen behandeln die Datenbankkapazität jedoch nach wie vor als separates, meist manuell zu lösendes Problem. Teams planen entweder im Voraus für die schlimmste Stunde des schlimmsten Tages, passen ihre Pläne anhand eines Kalenders an oder basteln ihre eigene Skalierungslogik auf Kubernetes oder RDS zusammen. Das Ergebnis ist in jedem Fall dasselbe: Kapazität, die nicht zum Bedarf passt, und Betriebsaufwand, der sich nicht lohnt.
Der Begriff wird oft recht locker verwendet. So nutzen wir ihn bei Upsun:
Full-Stack-Autoscaling: Jede Ebene deines Stacks skaliert sich je nach Bedarf von selbst, nativ und auf einer einzigen Plattform: Anwendungen, Worker und verwaltete Datenbanken.
Konkret skalieren drei Dinge horizontal auf derselben Upsun-Primitiv:
Alle drei reagieren auf dieselben Signale: die durchschnittliche CPU- und Speicherauslastung über alle laufenden Instanzen hinweg. Alle drei folgen derselben Logik: Kapazität hinzufügen, wenn die Auslastung über einem Schwellenwert bleibt, und Kapazität entfernen, wenn sie darunter liegt. Alle drei befinden sich im selben Projekt, auf derselben Rechnung und folgen einem einheitlichen Konzept.
Die automatische Skalierung bei Upsun erfolgt horizontal: Es werden ganze Instanzen eines Dienstes hinzugefügt oder entfernt. Bei Datenbanken bedeutet das, den Lese-Replikat-Pool deines primären PostgreSQL- oder MariaDB-Dienstes zu skalieren. Du konfigurierst einmalig ein Basis-Replikat; die automatische Skalierung passt die Poolgröße von da an entsprechend der Auslastung an.
Die Plattform überwacht die durchschnittliche CPU- und Speicherauslastung deines laufenden Replik-Pools. Wenn die Auslastung während des Bewertungszeitraums über deinem Schwellenwert für die Skalierung nach oben bleibt, wird eine zusätzliche Replik in den Cluster aufgenommen. Wenn sie während des Bewertungszeitraums unter deinem Schwellenwert für die Skalierung nach unten bleibt, wird eine zusätzliche Replik entfernt. Ein Abkühlungsfenster zwischen den Aktionen verhindert, dass der Pool bei kurzen Auslastungsspitzen ständig auf und ab schwankt.
Die Standardeinstellungen geben dir einen Eindruck davon, wie das funktioniert:
Du kannst CPU, Arbeitsspeicher oder beides als Auslöser verwenden und jeden Schwellenwert pro Umgebung anpassen – nicht nur in der Produktivumgebung, sondern auch in der Entwicklung und im Staging.
Zwei technische Details sind wichtig, um realistische Erwartungen zu haben:
Dein Programm ist dafür verantwortlich, Leseabfragen an die Replik weiterzuleiten. Die Verbindungszeichenfolge wird über PLATFORM_RELATIONSHIPS unter dem Namen der Replik-Beziehung (z. B. „database-readonly“) bereitgestellt. Die meisten ORMs und Datenbankbibliotheken unterstützen dieses Muster mit einer separaten Leseverbindung. Es handelt sich um eine Änderung am Programm, nicht an der Infrastruktur.
Es gibt derzeit drei weitere Möglichkeiten, eine automatische Skalierung von Datenbanken zu erreichen. Jede davon ist real, und jede bringt Kompromisse mit sich, die Upsun ausdrücklich zu vermeiden versucht.
Die automatische Skalierung der Lesereplikate von Upsun läuft direkt auf den verwalteten PostgreSQL- und MariaDB-Diensten, die dein Projekt bereits unterstützen. Keine dritte Engine, keine zusätzliche Ebene und kein zusätzlicher Aufbau erforderlich.
Diese Funktion ist bewusst auf einen bestimmten Anwendungsbereich beschränkt. Sie ist für Workloads konzipiert, bei denen das Hinzufügen von Lesekapazität tatsächlich die Datenbank entlastet.
Stell dir eine E-Commerce-Anwendung auf einer verwalteten PostgreSQL-Datenbank vor. An einem normalen Wochentag bewältigen ein oder zwei Replikate die Leseauslastung, wobei die CPU-Auslastung bei etwa 30–40 % liegt.
Am Freitagabend geht eine Kampagne online. Was dann passiert:
Die nächste Rechnung spiegelt die während des Spitzenauslastungszeitraums tatsächlich genutzte Kapazität wider, nicht die im Voraus dafür dimensionierte Kapazität. Die Kalendererinnerung, die manuelle Erhöhung, die Folgeerinnerung zur Rückstufung – all das entfällt.
Das Einrichten der automatischen Skalierung von Lese-Replikaten erfordert zwei Konfigurationsebenen:
In deiner `.upsun/config.yaml`:
In den Dokumentationen zu PostgreSQL und MariaDB wird die Konfiguration ausführlich beschrieben.
Aktiviere die automatische Skalierung für den Replikat-Dienst entweder:
Die Einstellungen entsprechen denen für die automatische Skalierung von Anwendungen und Workern:
Apps, Worker und verwaltete Datenbanken auf einer Plattform, in einer Komponente, auf einer Rechnung. Das ist es, was Full-Stack-Autoskalierung eigentlich bedeutet.
Falls du noch keine Lesereplik konfiguriert hast, bieten diese Ressourcen eine Schritt-für-Schritt-Anleitung zur Dienstdefinition. Mehr zu Konfiguration, Optimierung und verwandten Konzepten:
Falls du noch keine Lese-Replik konfiguriert hast, bieten diese Ressourcen eine Schritt-für-Schritt-Anleitung zur Dienstdefinition. Mehr zu Konfiguration, Optimierung und verwandten Konzepten: