Support 24/7: +48 61 646 07 77
Z artykułu dowiesz się:
Cytując Wikipedię:
„W informatyce skalowalność oznacza zdolność oprogramowania lub systemów informatycznych do sprawnego działania w warunkach stale rosnącej liczby użytkowników lub zwiększającej się objętości przetwarzanych danych, co wiąże się ze zwiększeniem zapotrzebowania na zasoby sprzętowe lub zasoby programu”.
Skalowanie infrastruktury to zapewnienie odpowiednich zasobów pozwalających na uzyskanie oczekiwanej skalowalności systemu (aplikacji).
Aby rozpocząć skalowanie infrastruktury, musisz oszacować oczekiwane obciążenie systemu. Przykładowymi miernikami mogą być: liczba użytkowników lub liczba transakcji na godzinę. Możesz się oprzeć na:
• danych historycznych ze swojej aplikacji,
• systemach typu Google Analytics,
• danych przekazanych przez marketing (zwykle kampanie marketingowe mają założony określony stopień konwersji, na którego podstawie można oszacować np. ilość użytkowników)
Niestety, nie da się precyzyjnie określić oczekiwanej skalowalności systemu. Trzeba się kierować zdrowym rozsądkiem. Wziąć pod uwagę zarówno kryteria techniczne, jak i ekonomiczne.
Z mojego doświadczenia wynika, że tylko w przypadku naprawdę niewielkich sklepów i dużego zapasu zasobów. Tak czy inaczej, warto taką analizę przeprowadzać już na samym początku, ponieważ może to pomóc w dalszym rozwoju.
Skoro już zostało określone oczekiwane obciążenie systemu, to czas odpowiedzieć na pytanie: jakiej infrastruktury tak naprawdę potrzebujesz.
Jeśli określone obciążenie systemu występowało już kiedyś w przeszłości i zostało obsłużone, to można zgadywać, że właśnie taka infrastruktura będzie dla Ciebie optymalna.
Dlatego, że rzadko kiedy aplikacja działająca dzisiaj i aplikacja działająca np. 3 miesiące temu to ten sam system. E‑commerce rozwija się dynamicznie. Stale dochodzą nowe moduły i integracje.
W związku z tym dzisiaj mogą wystąpić problemy, których nie było 3 miesiące temu. Odwrotne sytuacje, kiedy aplikacja działa lepiej niż 3 miesiące wcześniej, występują bardzo rzadko.
Rozwiązaniem są testy obciążeniowe. Najlepiej byłoby, gdyby przeprowadzane były one przez prawdziwych użytkowników. Wtedy będziesz w stanie najlepiej zasymulować realne obciążenie systemu. Tego typu testy będą jednak niestety trudne do przeprowadzenia i mogą być kosztowne.
Drugą opcją będzie użycie narzędzi do testowania, które symulują działanie użytkowników. Mogą to być np. rozwiązania typu Gatling lub Locust. W tym wypadku najczęściej to programista tworzy mechanizm symulujący obciążenie systemu, a administrator obserwuje, diagnozuje wydajność i szuka wąskich gardeł (bottlenecks).
Wynikiem testów obciążeniowych powinny być konkretne wskazówki dotyczące rozbudowy infrastruktury. Możliwe, że konieczna będzie również zmiana architektury aplikacji, ponieważ czasami wąskim gardłem nie jest sprzęt, ale sam kod albo konstrukcja procesu zakupowego.
Na pewno warto zaplanować start przygotowań do Black Friday i testy obciążeniowe odpowiednio wcześnie. To pozwoli uniknąć stresu, tym bardziej, że zarówno rozbudowa infrastruktury, jak i zmiany w architekturze aplikacji mogą być czasochłonne.
Dla uproszczenia załóżmy, że Twoja infrastruktura składa się z jednej instancji serwera, która ma 4 CPU, 32 GB RAM, 500 GB SSD. Testy wykazały, że obciążenie rośnie liniowo. Spodziewasz się 2 razy większego ruchu. W związku z tym chcesz przeskalować infrastrukturę.
Oznacza dodawanie zasobów do istniejących serwerów/instancji. W Twoim przypadku można dodać do instancji 2 razy więcej CPU, RAM i SSD.
Zalety:
Wady:
Oznacza dodawanie kolejnych instancji obok już istniejących. Trzymając się wspomnianego przykładu: musisz dodać obok nową instancję o identycznych parametrach.
Zalety:
Wady:
W praktyce stosuje się mix tych rozwiązań, ponieważ czasem dana instancja ma zbyt małe parametry i żeby całość miała sens, trzeba skalować zarówno poziomo, jak i pionowo.
Tym niemniej, dla większych środowisk skalowanie poziome jest praktycznie koniecznością. Powodami są: minimalizowanie ilości pojedynczych punktów awarii oraz kwestie ekonomiczne (dostawianie kolejnych instancji jest tańsze i łatwiejsze w zarządzaniu).
Skalowanie poziome ma oczywiście pewien, czasem spory, próg wejścia (konieczność dostosowania architektury), ale ostatecznie jego zastosowanie może przynieść znaczące korzyści w przyszłości.
Jeśli podchodzisz poważnie do kwestii Black Friday, to po przeprowadzeniu testów obciążeniowych i wyskalowaniu infrastruktury zdecydowanie nie wprowadzaj żadnych znaczących zmian w aplikacji (i infrastrukturze), ponieważ może się okazać, że cały włożony wysiłek pójdzie na marne.
Kluczowe jest również oparcie skalowania na wynikach testów obciążeniowych lub (przynajmniej) analizie historycznych wykresów obciążenia. Dzięki temu można dołożyć zasoby tam, gdzie są rzeczywiście potrzebne.
Nie można zakładać, że jeśli np. masz 2 razy więcej użytkowników, to obciążenie systemu będzie 2 razy większe. Obciążenie może rosnąć liniowo, ale nie musi, a powody takiego zachowania mogą być różne. Twoje wątpliwości powinny, przynajmniej częściowo, rozwiać testy obciążeniowe.
Niezależnie, czy mówimy tutaj o zasobach Public Cloud, Private Cloud czy Hybrid Cloud, w każdym przypadku mamy element wspólny: ich zasoby nie są nieskończone.
Nawet najwięksi dostawcy Public Cloud (AWS i GCP) mają problemy z dostępnością zasobów w momencie największego zapotrzebowania.
Dlatego jedyną możliwością zagwarantowania dostępności zasobów jest ich zarezerwowanie. A za rezerwację oraz dostępność zasobów od ręki się… płaci. I tu wracamy do punktu wyjścia, czyli oszacowania naszego zapotrzebowania.
Dobre przygotowanie zarówno infrastruktury, jak i aplikacji na Black Friday:
Od zawsze staramy się pomagać naszym Partnerom w przygotowaniach do akcji promocyjnych, w tym również do Black Friday:
1) Aby rozpocząć skalowanie infrastruktury, musisz oszacować oczekiwane obciążenie systemu.
2) Rozpoczynając skalowanie, oprzyj się na danych historycznych ze swojej aplikacji, systemach typu Google Analytics, danych przekazanych przez marketing.
3) Wykonaj testy obciążeniowe i znajdź wąskie gardła. Zaplanuj je odpowiednio wcześnie.
4) Wykonaj skalowanie pionowe, poziome lub mix obu rozwiązań.
5) Pamiętaj, że nawet najwięksi dostawcy Public Cloud (AWS i GCP) mają problemy z dostępnością zasobów w momencie największego zapotrzebowania. Jedyną możliwością zagwarantowania dostępności zasobów jest ich zarezerwowanie.
6) Dobre przygotowanie zarówno infrastruktury, jak i aplikacji na Black Friday pozwoli Ci uniknąć strat finansowych, będzie korzystne wizerunkowo i przekona klientów do dokonania zakupów.