Poziome skalowanie polega na dodawaniu nowych instancji aplikacji (np. nowych serwerów lub kontenerów), aby rozłożyć obciążenie pomiędzy nimi. Pionowe skalowanie to zwiększanie zasobów na jednym serwerze (dodawanie CPU, RAM, dysków).
Przy wyborze podejścia bierze się pod uwagę następujące kryteria:
Przykład poziomego skalowania przez Kubernetes:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 5 # liczba podów – poziome skalowanie selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: myimage:v1
Kluczowe cechy:
Poziome skalowanie jest zawsze lepsze niż pionowe?
Nie. Dla określonych zadań (np. dla monolitycznych lub stateful serwisów) pionowe skalowanie może być prostsze i bardziej efektywne.
Czy do poziomego skalowania aplikacja nie wymaga żadnych poprawek?
Nie. Aplikacja musi być stateless, wspierać dzielenie sesji (np. przy użyciu zewnętrznego cache'u) i poprawnie reagować na skalowanie.
Czy skalowanie bazy danych zawsze odbywa się poziomo?
Nie. Nie wszystkie bazy danych łatwo skalują się poziomo. Klasyczne relacyjne bazy danych często skalują się pionowo (scale-up), albo stosują sharding/replikację.