Eine skalierbare Architektur wird häufig durch Containerisierung (z. B. Docker) und Orchestratoren (wie Kubernetes) realisiert. Dieser Ansatz ermöglicht es, verschiedene Komponenten der Anwendung zu isolieren, was deren Bereitstellung und Skalierung erleichtert.
Besonderheiten:
Beispielcode (yaml-Manifest für Kubernetes ReplicaSet):
apiVersion: apps/v1 kind: Deployment metadata: name: my-service spec: replicas: 5 selector: matchLabels: app: my-service template: metadata: labels: app: my-service spec: containers: - name: my-service-container image: my-service:latest resources: requests: cpu: "500m" memory: "512Mi" limits: cpu: "1" memory: "1Gi"
Wichtige Merkmale:
Kann ein Container Zugriff auf das Dateisystem eines anderen Containers haben?
Ja, Container können Volumes gemeinsam nutzen. In Kubernetes wird dies über freigegebene PersistentVolumes oder EmptyDir realisiert.
Beispielcode:
volumes: - name: shared-data emptyDir: {}
Was passiert, wenn in Kubernetes nur Pods skaliert werden, ohne die Datenbank zu skalieren?
Die Dienste können langsamer werden, die Datenbank wird zum Engpass. Es ist wichtig, das horizontale oder vertikale Skalieren aller "Flaschenhälse" sicherzustellen.
Kann ein Container betriebsbereit bleiben, wenn der Orchestrierungskluster ausfällt?
Der Container kann weiterhin laufen, aber das Management, der Neustart und das Auto-Scaling werden ohne die Steuerungskomponente (Cluster-Controller) nicht möglich sein.