Horizontale Skalierung besteht darin, neue Instanzen der Anwendung hinzuzufügen (zum Beispiel neue Server oder Container), um die Last zwischen ihnen zu verteilen. Vertikale Skalierung ist die Erhöhung der Ressourcen auf einem Server (Hinzufügen von CPU, RAM, Festplatten).
Bei der Wahl des Ansatzes werden folgende Kriterien berücksichtigt:
Beispiel für horizontale Skalierung mit Kubernetes:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 5 # Anzahl der Pods - horizontale Skalierung selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: myimage:v1
Schlüsselmerkmale:
Ist horizontale Skalierung immer besser als vertikale?
Nein. Für bestimmte Aufgaben (zum Beispiel für monolithische oder stateful Dienste) kann die vertikale Skalierung einfacher und effektiver sein.
Benötigt eine Anwendung für die horizontale Skalierung keine Anpassungen?
Nein. Die Anwendung muss stateless sein, das Session-Sharing unterstützen (zum Beispiel durch einen externen Cache) und korrekt auf die Skalierung reagieren.
Wird die Skalierung von Datenbanken immer horizontal durchgeführt?
Nein. Nicht alle DBMS lassen sich leicht horizontal skalieren. Klassische relationale Datenbanken werden häufig vertikal (scale-up) skaliert oder nutzen Sharding/Replikation.