Skalowalność systemów to nic innego, jak zwiększenie zdolności serwera do sprawnego działania, kiedy rośnie liczba jego użytkowników i objętość danych. System powinien radzić sobie z rosnącą ilością pracy, jaką musi wykonać. Przykładowo – gdy liczba użytkowników nagle wzrośnie z 1 tysiąca do 10 tysięcy, hosting wciąż powinien wytrzymać otrzymane obciążenie. A żeby tak było, należy mu w tym pomóc.
Zasoby skalować możemy zatem zarówno w “pionie” - wertykalnie,
jak i “poziomie” - horyzontalnie.
Pierwsze z nich, skalowanie horyzontalne, polega na dołączaniu dodatkowych serwerów. Do zasobów dokładamy zatem kolejne instancje. Główną zaletą tego rozwiązania jest obniżenie kosztów związanych z powiększaniem skalowalności. Swoje zasoby możemy stale zwiększać w zależności od własnych preferencji – jeśli potrzebujemy większej wydajności, po prostu kupujemy kolejny serwer. Nie musimy inwestować w rozwiązanie, które jest jedynie „zapasowe” i nie będzie używane w naszych serwerowniach.
Oszczędność pieniędzy wydawać się może bardzo atrakcyjna. Skalowanie horyzontalne ma też pewną wadę. Dodając kolejne instancje do serwera głównego, nasz program nie działa już tylko na jednej maszynie, lecz na kilku. By wszystko poprawnie funkcjonowało, należy upewnić się, że uruchamiany system pracuje poprawnie w architekturze wieloserwerowej a jeśli nie to przeprowadzić adaptujące zmiany w oprogramowaniu. Trzeba więc odpowiednio dostosować projekt, co często może być dość trudne a w skrajnych przypadkach niewykonalne.
Skalowanie wertykalne jest znacznie prostszym rozwiązaniem. Sposób ten polega na zwiększaniu możliwości naszego serwera – zwiększanie jego zasobów. Zmiany obejmują zatem tylko jedną instancję. Możemy zatem kupić całkiem nowy sprzęt i zastąpić nim stary lub stopniowo dokupować dodatkowe procesory i zasoby pamięci. Nie wymaga to dużej interwencji programistów. Nawet w przypadku zakupu nowego sprzętu, serwery wystarczy w ostatnim etapie tylko przenieść. Zazwyczaj nie ma potrzeby, by dostosowywać swoją aplikację do nowych zasobów.
Niestety, obok zalet pojawiają się również wady. Niezależnie od tego czy zdecydujemy się na zwiększanie mocy oryginalnego serwera, czy zastąpienie go całkiem nowym, skalowanie wertykalne wiąże się z ograniczonymi możliwościami:
serwer możemy powiększać tylko tyle, na ile pozwala nam sama maszyna – nie możemy przekroczyć zalecanej pojemności,
w większości przypadków rozwiązanie to powoduje przestoje podczas przełączania z maszyny większej na mniejszą,
jest to kosztowne posunięcie — kolejne konfiguracje są coraz droższe, a oprócz serwera aktywnego potrzebujemy też zapasowego, który będzie posiadał takie same możliwości jak ten oryginalny — co wytwarza kolejne koszty.
Wybierając pomiędzy skalowaniem wertykalnym i horyzontalnym, wiele firm decyduje się na stosowanie obu metod jednocześnie. Najpierw stosuje się tę pierwszą, która pozwala na wykorzystanie pełnych możliwości oryginalnego serwera. Gdy to rozwiązanie przestaje być opłacalne, zaczyna się inwestować
w kolejne instancje.
Przed wyborem rodzaju skalowalności warto wziąć pod uwagę swoje potrzeby – zarówno aktualne, jak i przyszłe – a także umiejętności programistów w zespole. Każde rozwiązanie posiada zarówno zalety, jak i wady. Najlepiej, by skalowaniem zajął się profesjonalista, który dokładnie oceni nasze potrzeby i pomoże w zdecydowaniu, która z opcji będzie najkorzystniejsza.