Wzorce obciążeń obliczeniowych
- 13 min
Gdyby ruch do zasobu w chmurze, takiego jak maszyna wirtualna (lub zbiór maszyn wirtualnych), albo aplikacji internetowej był stały i nie ulegał zmianie, nie byłoby potrzeby skalowania. Administrator chmury może po prostu udostępnić liczbę instancji, które są potrzebne do obsługi obciążenia. Jednak wzorce ruchu zmieniają się w miarę upływu czasu — czasami w sposób przewidywalny, a czasami nie. W rzeczywistych warunkach administrator musi zdiagnozować obciążenie zarządzanych zasobów i użyć skalowania, aby zagwarantować, że system może sprostać zapotrzebowaniu.
Zanim omówimy sposób skalowania warto wyjaśnić, dlaczego skalowanie odbywa się przez podział niektórych typowych wzorców obciążenia, które są używane przez maszyny wirtualne i inne zasoby w chmurze.
Stały wzrost
Jednym z najpopularniejszych czynników przyspieszających konieczność skalowania jest stały wzrost zapotrzebowania. Rysunek 1 przedstawia ruch do witryny internetowej firmy w okresie 24 miesięcy. Firma rozwija się szybko, a ruch do jej witryny to odzwierciedla. Jeśli założymy, że jeden serwer internetowy może obsłużyć 5000 żądań na jednostkę czasu, firma zaczyna od trzech lub czterech serwerów internetowych, ale wymaga około 20 serwerów 2 lata później, aby sprostać rosnącemu zapotrzebowaniu i nadal obsługiwać klientów.
Rysunek 1. Spójny wzrost.
Stały wzrost znajduje się wśród najłatwiejszych wzorców obciążenia do zrekompensowania, ponieważ zmiana jest stała i stopniowa. Prawdopodobnie można skalować przy użyciu serwerów fizycznych, ponieważ można przewidzieć, kiedy będzie wymagany następny serwer (lub zestaw serwerów) i jest kilka tygodni lub miesięcy na przygotowanie, ale przetwarzanie w chmurze umożliwia przełączenie nowych serwerów wirtualnych w tryb online w ciągu kilku minut. 24-miesięczny trend wskazuje stały i przewidywalny wzrost, ale obciążenia mogą ulegać znacznemu wahaniu w krótszym okresie. Przetwarzanie w chmurze znacznie łatwiej dostosowuje się do mikrotrendów niż skalowanie za pomocą serwerów fizycznych.
Stale występujące wahania obciążeń
Szybka elastyczność oferowana przez przetwarzanie w chmurze jest niezwykle ważna w sytuacji, gdy obciążenia wahają się w nieprzewidywalny sposób w stosunkowo krótkim czasie. Rysunek 2 przedstawia obciążenie witryny internetowej w okresie 24 godzin. Przy założeniu, że jeden serwer może obsłużyć 5000 żądań na jednostkę czasu, wymagana liczba serwerów waha się od 2 do 16 w ciągu dnia. Można obsłużyć ten ruch, utrzymując 16 wirtualnych serwerów internetowych przez cały czas w trybie online, ale dostawcy usług w chmurze naliczają opłaty za maszyny wirtualne nawet wtedy, gdy są one bezczynne. Nadmierna pojemność to nie tylko strata energii, ale również dwa razy większy koszt.
Rysunek 2. Stale zmieniające się obciążenie.
Obciążenia cykliczne
Rysunek 3 przedstawia obciążenie, które zwiększa i zmniejsza się w regularnym i nieco przewidywalnym wzorcu — na przykład zapotrzebowanie rośnie w godzinach pracy oraz spada w godzinach wieczornych i nocnych. W szczytowym momencie to obciążenie wymaga około 20 serwerów do obsługi zapotrzebowania, przy założeniu 5000 żądań na jednostkę czasu na serwer. Rotacja serwerów fizycznych przez całą dobę jest nieuzasadniona, ale w przypadku serwerów wirtualnych można łatwo przeprowadzać i anulować aprowizację zgodnie z harmonogramem, aby upewnić się, że pojemność serwera jest równa zapotrzebowaniu. Serwery fizyczne pozostające w stanie bezczynności albo używane w niewielkim stopniu przez 12 godzin dziennie powodują niepożądane wydatki kapitałowe (CapEx) i niepotrzebne zużycie energii. Serwery wirtualne również wiążą się z kosztami, ale można anulować ich aprowizację, gdy nie są potrzebne, i szybko utworzyć je ponownie, gdy wymaga tego zapotrzebowanie.
Rysunek 3. Cykliczne obciążenie, które powtarza się co 24 godziny.
Nieprzewidywalne wybuchy
Jednym z najtrudniejszych wzorców z perspektywy kosztów i utrzymania jest wzorzec z nieprzewidywalnymi wybuchami (rysunek 4). Jeśli wartości szczytowe są przewidywalne — na przykład witryna internetowa oferująca usługę dostarczania pizzy ma większe obciążenie w weekendy i święta — można zaplanować dodatkową pojemność. Jeśli jednak nie są one przewidywalne, należy przygotować się do ich obsługi w dowolnym momencie.
Rysunek 4. Nieprzewidywalne wzrosty.
Nadmierny koszt (koszt serwerów, które są aprowizowane w celu obsługi obciążeń szczytowych, ale są względnie bezczynne w okresach mniejszego ruchu) może być określany jako obszar między górną krzywą i linią poziomą przechodzącą przez najwyższy punkt. W takim przypadku koszt zapewnienia pojemności 100 000 żądań na jednostkę czasu dla obciążenia na rysunku 4 jest znacznie wyższy niż koszt zapewnienia równoważnej pojemności na rysunku 3.
Jeśli można przewidzieć szczytowe zapotrzebowanie (niekoniecznie okresy, w których występuje) i nie przejmować się kosztami, można zapewnić odpowiednią pojemność przez cały czas przez aprowizowanie wystarczającej liczby serwerów na potrzeby obsługi największych obciążeń. Przetwarzanie w chmurze umożliwia przełączanie zasobów w tryb online, gdy są one potrzebne, i przełączenia ich w tryb offline (i zatrzymanie naliczania opłat za nie), gdy nie są potrzebne. Elastyczność jest wdrażana przez skalowanie zasobów w chmurze. Przeanalizujmy skalowanie dokładniej i sprawdźmy, dlaczego jest to kluczowy czynnik w ekonomii przetwarzania w chmurze.