Skalowalna architektura jest często realizowana za pomocą konteneryzacji (np. Docker) i orkiestratorów (np. Kubernetes). Takie podejście pozwala na izolowanie różnych komponentów aplikacji, co ułatwia ich wdrażanie i skalowanie.
Zasady:
Przykład kodu (manifest yaml dla 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"
Kluczowe cechy:
Czy kontener może mieć wspólny dostęp do systemu plików z innym kontenerem?
Tak, kontenery mogą wspólnie korzystać z wolumenów (volumes). W Kubernetes odbywa się to przez dzielone PersistentVolume lub EmptyDir.
Przykład kodu:
volumes: - name: shared-data emptyDir: {}
Co się stanie, jeśli w Kubernetes skalujemy tylko pody bez skalowania bazy danych?
Usługi mogą zacząć zwalniać, baza będzie wąskim gardłem. Ważne jest aby zapewnić poziome lub pionowe skalowanie wszystkich "wąskich gardeł".
Czy kontener może pozostać aktywny przy awarii klastra orkiestracji?
Kontener może pozostać uruchomiony, ale zarządzanie, ponowne uruchamianie i automatyczne skalowanie będą niemożliwe bez komponentu zarządzającego (kontrolera klastra).