Brak ograniczeń oprogramowania i sprzętu stanowi istotną wartość, którą powinien dostarczać usługodawca hostingowy, niestety istnieje niewiele metod pozwalających na płynne skalowanie mocy obliczeniowej.
Na początek ważne jest zrozumienie co kryje się pod pojęciem mocy obliczeniowej, w środowiskach hostingowych nie jest to bowiem tylko moc procesorów.
Oprócz mocy CPU najważniejszymi parametrami będą dostępność i wielkość pamięci RAM oraz szybkość pracy podsystemów IO (w szczególności dysków).
Każdy z tych parametrów jest parametrem opisującym fizyczną właściwość sprzętu, czy zatem bez wymiany sprzętu można zapewnić jakąkolwiek skalowalność ?
Wymiana sprzętu [offline]
To jest najłatwiejsza metoda, niestety obarczona długim czasem realizacji oraz przerwą w działaniu serwisu. Dostawca usługi musi zamówić nowe komponenty lub nowy serwer (ewentualnie sięgnąć do magazynu), następnie wyłączyć serwis, wymienić podzespoły i włączyć całość ponownie.
Czas realizacji takiej operacji najczęściej trwa od kilku dni do kilku tygodni,
a w trakcie tej operacji serwis funkcjonuje na niewystarczających zasobach. Co więcej metoda nie gwarantuje sukcesu, po rozbudowie może się okazać, że i tak mocy jest za mało.
Rozbudowa środowiska [offline]
Metoda dość łatwa, ale również czasochłonna. Najczęściej w środowiskach hostingowych taka operacja polega na oddzieleniu bazy danych od aplikacji
i uruchomieniu jej na nowym niezależnym serwerze. Operacja wymaga zamówienia dodatkowego serwera, wyłączenia na jakiś czas serwisu, skopiowania bazy danych oraz zmiany ustawień aplikacji. W tym przypadku przerwa w działaniu serwisu zamknie się w granicach od kilku do kilkudziesięciu minut, ale czas realizacji zamówienia nowego serwera może potrwać kilka lub kilkanaście dni.
Ta metoda ma większe szanse powodzenia niż zwykła wymiana sprzętu, jednak nie da się jej przeprowadzić online oraz bardzo długi jest czas jej realizacji.
Równoważenie obciążenia [online]
To często stosowana metoda w klasycznych środowiskach hostingowych klasy enterprise. Polega na rozbudowaniu środowiska o kolejne serwery, w taki sposób aby przejęły część zadań realizowanych przez już istniejące maszyny.
Można przeprowadzić rozbudowę takiego środowiska całkowicie online, jednak już na etapie projektowania musi ono zostać zaplanowane w ten sposób aby takie operacje były wykonywalne. Ponadto, takie środowisko będzie wymagało dodatkowych urządzeń sterujących ruchem (np. LoadBalancery) i/lub zewnętrznych macierzy dyskowych (ze względu na konieczność współdzielenia danych, głownie dla serwerów bazodanowych).
Ta metoda jest często trudna w realizacji, ale daje niemalże nieograniczone możliwości skalowania. Im więcej serwerów dołożymy, tym większą wydajność uzyskamy. Górnej granicy teoretycznie nie ma.
Wirtualizacja
Ostatnia metoda, łącząca wszystkie poprzednie w jedną całość. Dzięki niej możemy przeprowadzić proces rozbudowy online i powiększyć lub pomniejszyć parametry serwisu na żądanie.
Wirtualizacja wprowadza dodatkową warstwę programową pomiędzy sprzęt
a system operacyjny. Dzięki niej zwirtualizowane systemy operacyjne przestają być zależne od sprzętu i pojawia się możliwość zarządzania nimi tak jak każdą inną aplikacją.
Generalnie aby zwirtualizowany system spełniał warunki skalowalności i bezpieczeństwa, niezbędne jest zachowanie kilku istotnych warunków odnośnie środowiska hostingowego:
1. Platforma wirtualizacyjna musi być zaprojektowana w ten sposób aby udostępniać zasoby obliczeniowe wytworzone nie na jednej fizycznej maszynie ale na szeregu fizycznych serwerów pracujących w jednorodnym klastrze. Wirtualizacja na jednej fizycznej maszynie to nic więcej jak tylko hosting współdzielony ale zrealizowany innymi metodami.
2. Platforma musi udostępniać mechanizmy automatycznego wyrównywania obciążenia pomiędzy członkami klastra.
3. Klastry muszą zostać zbudowane w oparciu o profesjonalnie zbudowaną sieć SAN wraz z przyłączonymi do niej macierzami dyskowi.
4. Macierze dyskowe muszą dysponować dziesiątkami dysków połączonych
w grupy dyskowe.
5. Wielkość klastrów oraz ilość macierzy i półek dyskowych musi być adekwatna do ilości wirtualnych maszyn w nich pracujących. Najczęściej będzie to co najmniej kilkanaście fizycznych serwerów wyposażonych w nie mniej niż 16GB RAM’u każdy.
6. Oprogramowania użyte do wirtualizacji powinno być doskonale przetestowane oraz oferować support producenta w razie konieczności.
K2 w tym zakresie w całości zbudowało systemy wirtualizacyjne oparte wyłącznie na VMWare Infrastructure. Obecnie w naszych klastrach pracuje kilkadziesiąt fizycznych maszyn, gdzie łączna wielkość dostępnej pamięci operacyjnej osiąga 500GB.
- Dopiero w taki sposób skonstruowane środowiska pozwalają na zwiększanie parametrów hostowanych systemów bez żadnej przerwy oraz w czasie mniejszym niż 15 minut od zgłoszenia.
Jednocześnie w zwirtualizowanym środowisku można wprowadzić równoważenie obciążenia na dokładnie takich samych zasadach jak w przypadku środowisk fizycznych. Różnica polega na tym, że ruch kierowany przez LoadBalancery będzie trafiał na różne zwirtualizowane systemy zamiast na różne fizyczne serwery.