SystemarchitekturDevOps Ingenieur

Wie implementiert man horizontale und vertikale Skalierung von Anwendungen und welche Kriterien beeinflussen die Wahl des Ansatzes?

Bestehen Sie Vorstellungsgespräche mit dem Hintsage-KI-Assistenten

Antwort.

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:

  • Möglichkeiten der Anwendung (stateless Anwendungen lassen sich leicht horizontal skalieren);
  • Einschränkungen der Infrastruktur (gibt es die Möglichkeit, schnell Server hinzuzufügen);
  • Wirtschaftliche Aspekte (horizontales Skalieren ist teurer bei vielen Knoten, vertikales stößt an die Grenzen der Hardware).

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:

  • Horizontale Skalierung bietet Ausfallsicherheit und Flexibilität
  • Vertikale Skalierung ist einfacher zu implementieren, ist jedoch an die Grenzen der Hardware gebunden
  • Oft wird eine Hybride umgesetzt: kritische Komponenten werden horizontal skaliert, stateful vertikal

Fangfragen.

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.