Świat rozwija się w zawrotnym tempie, a technologie, które jeszcze kilka lat temu wydawały się nowinką, dziś są codziennością. Strony internetowe i aplikacje muszą sprostać ogromnym wymaganiom użytkowników, którzy oczekują płynnego działania i natychmiastowej reakcji na swoje potrzeby. Szybkość ładowania, bezpieczeństwo danych oraz intuicyjny interfejs to fundamenty, które decydują o tym, czy użytkownik zostanie na stronie, czy od razu ją opuści.
Internet nie stoi w miejscu, rozwija się szybciej niż kiedykolwiek dotąd. Każdego dnia miliony osób korzysta ze stron i aplikacji internetowych – w tym również Ty i ja. Robimy zakupy, dokonujemy płatności, oglądamy filmy lub oddajemy się cyfrowej rozrywce, na przykład hazardowi online, odwiedzając Spin City casino lub inne tego typu platformy. Internautów jest coraz więcej, dlatego dziś na wagę złota jest dostępność i szybkość działania. Od tego, czy aplikacja webowa da radę bezproblemowo działać, gdy w jednym momencie będzie korzystać z niej miliony osób, zależy to, czy ludzie będą z niej regularnie korzystać. Krótko mówiąc, skalowalność jest na wagę złota.
Skalowalność – czym tak naprawdę jest?
Skalowalność to zdolność systemu do sprawnego rozwoju wraz ze wzrostem liczby użytkowników, tak aby spełniać ich oczekiwania. Na początku aplikacja może obsługiwać np. 100 osób, a później 1000, 10 000, 20 000 i więcej, bez znaczącego spadku wydajności lub, co gorsza, całkowitego zawieszenia. Chodzi o to, aby infrastruktura była przygotowana na rosnący ruch.
W praktyce wiele firm o tym zapomina – gdy nagle odwiedza stronę dużo użytkowników, serwery przeciążają się, strona zwalnia lub przestaje działać, a klienci bezpowrotnie odchodzą. Dobrym przykładem są sklepy internetowe, których promocje trafiają na serwis Pepper – nagle tysiące ludzi chcą kupić produkt w okazyjnej cenie, a jeśli strona nie jest skalowalna, w kilka sekund pada i reputacja zostaje na stałe zniszczona.
Skalowalność polega więc na projektowaniu aplikacji i stron tak, aby mogły przyjąć nagły wzrost użytkowników bez utraty jakości usług.
Dwa podejścia do skalowalności – w górę i wszerz
Jeśli chcesz, aby Twoja aplikacja miała odpowiednią „moc” i podołała zwiększonemu zainteresowaniu, do dyspozycji masz dwa główny sposoby skalowalności:
- Skalowanie w górę (vertical) – w tym przypadku inwestujesz w nowe serwery, lepszy sprzęt. Zwiększasz pamięć RAM, miejsce na dysku, zmieniasz procesor. To dobre, szybkie rozwiązania na teraz, gdy spodziewasz się nagłego wzrostu ruchu. Podejście to jednak ma jeden problem. Mianowicie, każdy serwer ma jakiś górny limit, nie da rady ulepszać go w nieskończoność.
- Skalowanie wszerz (horizontal) – skalując wszerz, dodajesz do swojej infrastruktury więcej serwerów, które ze sobą współpracują. To długoterminowe rozwiązanie, które sprawia, że system staje się odporny na przeciążenia. Jest w stanie łatwiej obsłużyć dużą liczbę użytkowników.
Które podejście jest lepsze? Żadne, bo najlepiej łączyć oba. Najlepszym podejściem będzie zwiększanie mocy pojedynczego serwera, przy jednoczesnym rozszerzaniu infrastruktury o kolejne, nowe maszyny.
Najważniejsze rozwiązania w zakresie dostępności
Niektóre serwisy takie jak Amazon, Allegro czy Netflix, pomimo non stop wielkiego ruchu rzadko miewają przestoje – są zawsze dostępne i działają szybko. Jest to możliwe dzięki następującym rozwiązaniom:
- Load balancing – to technologia równoważenia obciążenia, która „dyryguje” ruchem na stronie. Rozdziela poszczególnych użytkowników pomiędzy dostępnymi serwerami. Dzięki temu żaden nie jest przeciążony, a aplikacja nie łapie zadyszki nawet przy ponadprzeciętnym ruchu.
- Cache – technologia, która przechowuje najczęściej wykorzystywane przez użytkownika dane, na przykład w jego przeglądarce. Dzięki temu użytkownik, wchodząc na stronę po raz kolejny, nie musi czekać, aż wszystko się załaduje. To znacząco przyspiesza pracę strony.
- Monitoring w czasie rzeczywistym – aplikacja powinna wysyłać sygnał natychmiast, gdy wykryje błąd, anomalię, potencjał problemów z dostępnością. To sprawia, że można natychmiast zareagować, żeby użytkownicy w ogóle tego nie odczuli.
- Kopie zapasowe i redundancja – awarie zdarzają się nawet na Amazonie i Allegro, ale my tego nie odczuwamy, bo dzięki kopiom zapasowym i redundancji, która sprawia, że gdy jeden z serwerów padnie, inny natychmiast przejmuje jego zadania, największe serwisy błyskawicznie wracają do normalnego funkcjonowania.
Współczesne technologie skalowalności
Obecnie na rynku jest mnóstwo narzędzi, które ułatwiają skalowanie. Numerem jeden w tej dziedzinie jest chmura obliczeniowa, a przede wszystkim AWS, Google Cloud i Azure. Dzięki tym rozwiązaniom nie musisz od razu kupować wielu drogich serwerów, tylko płacisz adekwatnie do aktualnego ruchu. Systemy te mają wbudowane wspomniane wyżej mechanizmy i automatycznie dostosowują się do bieżącego stanu rzeczy.
Błędy, których nie możesz popełnić
Skalowalność jest ważna, jednak tworząc dziś aplikację webową, nie można od razu rzucać się na głęboką wodę. Oto kluczowe błędy, których lepiej unikać:
- Brak planu – nie możesz reagować dopiero po problemie. Staraj się przewidzieć wzrost ruchu i przygotuj system odpowiednio wcześniej.
- Zbyt dużo funkcji na start – w rowerze z wieloma przerzutkami szybciej spadnie łańcuch niż w rowerze bez przerzutek. Tak samo jest z awariami w aplikacjach, im prostszy system, tym mniej potencjalnych awarii. Funkcje należy dodawać stopniowo.
- Brak regularnych testów obciążeniowych – jeśli nie robisz testów, nie wiesz, czy system wytrzyma tysiące odwiedzających na raz.
Tworzenie aplikacji internetowych, które obsłużą duży ruch, jest w zasadzie proste – wystarczy mieć plan i technologie zapewniające skalowalność i dostępność. Bez tego ani rusz, bo nawet najładniejsza wizualnie aplikacja nie utrzyma się na rynku, jeśli nie będzie niezawodna, dostępna cały czas. Zasada jest prosta: aplikacje należy tworzyć tak, jakby jutro miało wejść sto razy więcej osób niż dziś.