Powrót do bloga
Technology

Rodzaje skalowalności systemów architektury hostingowej skalowalność horyzontalna i wertykalna

Autor Kamil Zawadzki Managing Partner
Przeciążenie systemów to jeden z najmniej przyjemnych elementów pracy programisty. Liczba użytkowników niespodziewanie wzrasta, a hostingi odmawiają współpracy. Aby zapobiec takiej sytuacji, należy zadbać o odpowiednią skalowalność systemów architektury hostingowej. Musimy więc wybrać pomiędzy dwoma rodzajami skalowalności – horyzontalnym lub wertykalnym. Na które z nich się zdecydować?

Czym jest skalowalność?

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.

Skalowanie horyzontalne (poziome)

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 (pionowe)

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:


Co wybrać?

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.

Kamil Zawadzki
Managing Partner
Dynamiczny lider z rozległą wiedzą techniczną w dziedzinie programowania. Jest zwolennikiem architektury SOLID i prostych rozwiązań (KISS), zawsze dopasowując swoje podejście do potrzeb biznesowych.
Udostępnij

Pomożemy Ci osiągnąć cele biznesowe

Pomożemy Ci osiągnąć cele biznesowe

Porozmawiajmy o Twoich wyzwaniach
Podobne artykuły

Czym są “user stories” i dlaczego warto w nie inwestować?
User Stories są kluczowe dla tworzenia oprogramowania, ponieważ jasno definiują potrzeby użytkown...
Cykl życia produktu: jak sprawdzić, na jakim etapie jest mój produkt?
Każdy produkt ma swój własny cykl życia, od narodzin pomysłu, poprzez fazę rozwoju i dojrzewania,...
Co to jest cache i jak skutecznie odświeżyć stronę?
...