Jak zapewnić skalowalność chmury w 2023 r

Opublikowany: 2023-01-11

Treść

  1. Co to jest skalowalność?
    • Dlaczego musimy zwracać szczególną uwagę na skalowalność?
  2. Rodzaje skalowania
    • Skalowalność pionowa — skalowanie w górę
    • Skalowanie w poziomie — skalowanie w poziomie
    • Skalowanie diagonalne
  3. Jak zapewnić maksymalną skalowalność
    • Przeprowadź równoważenie obciążenia
    • Przejdź do automatycznej skalowalności usług sieciowych
    • Kontenery mikrousług, klastryzacja
    • Zaimplementuj buforowanie
    • Korzystaj z usług CDN
  4. Jak rozwiązujemy problemy ze skalowaniem?
  5. Wniosek
Treść

Wraz ze wzrostem obciążenia systemów komputerowych, dostosowują się one i stają się bardziej złożone pod względem podstawowej architektury. Dodawane są nowe narzędzia programowe i integracja w celu optymalizacji wydajności, zwiększa się pojemność serwerów itp.

Wszystkie te procesy optymalizacji systemów definiuje jedno pojęcie – skalowanie – jedna z kluczowych specjalizacji ekspertów DevOps. Czym jest skalowalność i co ważniejsze, jak ją zapewnić w przypadku Twojej konkretnej firmy, której większość mocy operacyjnych jest skoncentrowana w chmurze? Zagłębmy się w temat.

Skalowalność w chmurze Źródło obrazu: Static.bluepiit

Co to jest skalowalność?

Jaka jest ostateczna definicja skalowalności? Zasadniczo jest to zdolność do zwiększania wydajności systemu w najbardziej racjonalny sposób. W praktyce najczęściej osiąga się to poprzez sumowanie zasobów obliczeniowych, zarówno sprzętowych, jak i programowych. Przepisanie istniejącego kodu jest jednak w większości przypadków dość drastycznym rozwiązaniem, dlatego w 9 na 10 przypadków firmy poprzestają na zwielokrotnieniu liczby serwerów lub zwiększeniu możliwości istniejącego systemu serwerowego.

Zauważ, że potrzeba skalowania pojawia się nie tylko wtedy, gdy ogólna wydajność systemu staje się opóźniona i niewystarczająca. Istniejąca i działająca architektura może działać dobrze, ale opóźnienia mogą nadal utrudniać procesy ze względu na szybki wzrost ruchu użytkowników.

Jeśli chcesz sprawdzić, jak wydajnie działają twoje protokoły sieciowe i dostępne zasoby serwera WWW, możesz użyć dowolnego dostępnego narzędzia do testowania obciążenia (na przykład siege), które będzie emulować sztuczny napływ użytkowników do twojego serwera z mnóstwem żądań. Wystarczy śledzić dwa kluczowe parametry: n — określa całkowitą liczbę żądań, a c — wskazuje liczbę jednoczesnych żądań.

W rezultacie otrzymujesz odczyt RPS (żądań na sekundę), który pokazuje, ile żądań Twój system serwera jest w stanie obsłużyć w tej chwili. Jest to odzwierciedlenie maksymalnej liczby użytkowników, którzy próbując jednocześnie wejść w interakcję z serwerem, prawdopodobnie spowodują awarię systemu. Ta procedura testowania ostatecznie pokazuje, czego można się spodziewać i jak ważne jest ustanowienie architektury podatnej na skalowalność.

Chociaż z drugiej strony pomyśl o tym przez chwilę. Być może bardziej opłacalne będzie dostosowanie niektórych konfiguracji serwerów i zoptymalizowanie procedur wypłaty gotówki w konkretnym przypadku. W ten sposób możesz bezpiecznie odłożyć skalowanie do lepszych czasów.

Dlaczego musimy zwracać szczególną uwagę na skalowalność?

Gdy firma zacznie się rozwijać, musi być tak elastyczna i zaradna, jak to tylko możliwe. Startupy muszą być w stanie szybko dostosowywać się do zmieniających się trendów i warunków rynkowych, aby być popularnym i konkurencyjnym. Gdy Twoja aplikacja jest skalowalna, przyspieszy Twój rozwój, poprawi wrażenia użytkowników i dotrze do większej liczby odbiorców. Zasadniczo skalowalność pozwala lepiej zarządzać aplikacją i dostosowywać ją do nowych wymagań. Budując strategię rozwoju dla swojej firmy, zbudowanie skalowalnej aplikacji powinno być jednym z pierwszych priorytetów.

Rodzaje skalowania

Główne i najczęstsze rodzaje procedur skalowania obejmują:

Skalowalność pionowa — skalowanie w górę

Skalowanie pionowe Źródło obrazu: Dzone

Skalowanie wertykalne ma miejsce, gdy zwiększa się ogólna moc biznesowa poprzez zwiększenie wydajności wewnętrznych zasobów serwera — procesorów, pamięci, dysków i pojemności sieci. Serwer w swojej podstawowej formie pozostaje bez zmian.

Skalowanie w poziomie — skalowanie w poziomie

Skalowanie w poziomie Źródło obrazu: Dzone

W terenie odbywa się prawdziwe stoisko — skalowanie w górę vs skalowanie w dół. Co lepsze?

W szczególności, ze względu na coraz większe obciążenie i ruch cyfrowy, skalowanie pionowe prędzej czy później napotka ograniczenia w postaci specyfikacji technicznych serwerów. Tutaj do gry wchodzi skalowanie poziome. Podstawowe znaczenie tego terminu określa, że ​​moce obliczeniowe są zwiększane poprzez dodawanie identycznych węzłów na istniejących. Skalowanie poziome najczęściej ustalane jest wtedy, gdy istnieje dostosowana infrastruktura serwerowa (szczególny przypadek – data center) oraz ustalony schemat interakcji pomiędzy serwerami.

Skalowanie diagonalne

To stosunkowo nowe określenie, które wymyślił John Allspaw – autor i współzałożyciel firmy Adaptive Capacity Labs. W ten sposób skalowanie diagonalne łączy w sobie to, co najlepsze z dwóch światów i definiuje skalowanie pionowe węzłów skalowanych poziomo, które są już zaimplementowane w istniejącej infrastrukturze serwerowej.

Jak zapewnić maksymalną skalowalność

A teraz kilka praktycznych wskazówek, które pomogą Ci przeprowadzić procedurę skalowalności chmury obliczeniowej jak najdokładniej, przy minimalnych kosztach.

Przeprowadź równoważenie obciążenia

Równoważenie obciążenia oznacza zestaw wysiłków związanych z dystrybucją procesów sieci obliczeniowej między kilka zasobów sprzętowo-programowych (dyski, procesory lub oddzielne serwery), które są skoncentrowane w jednym gnieździe lub klastrze. Głównym celem jest tutaj optymalizacja nakładów na moce obliczeniowe, zwiększenie wydajności sieci, zmniejszenie nakładów czasowych podczas przetwarzania żądań sieciowych, a także zmniejszenie szans na to, że dany serwer odpowie na atak DDoS w jakimś cudownym momencie.

Co więcej, rozłożenie obciążenia na kilka węzłów (zamiast pełnego wykorzystania jednego węzła) zwiększa dostępność usług świadczonych przez Twoją firmę. W szczególności, mając pod ręką pewną nadmierną liczbę serwerów, nawet jeśli jakaś jednostka robocza ulegnie awarii, masz gotową automatyczną wymianę.

Procedura równoważenia realizowana jest za pomocą całego zestawu algorytmów i metod, z których każda odpowiada następującym warstwom modelu OSI: Sieć, Transport i Aplikacja. W praktyce wymagają one zastosowania kilku serwerów fizycznych wraz ze specjalistycznym oprogramowaniem podobnym do serwera WWW Nginx.

Przejdź do automatycznej skalowalności usług sieciowych

Autoskalowanie to specjalne podejście do dynamicznego skalowania w kontekście usług chmurowych (tj. skalowania polegającego na dostosowywaniu mocy obliczeniowych do obciążenia sieci). W szczególności użytkownicy usług, które zawierają procedury autoskalowania (z których najbardziej znane to Amazon Web Service, Google Cloud Platform i Microsoft Azure) otrzymują w razie potrzeby dodatkowe maszyny wirtualne (które mogą być automatycznie wykluczone z klastra lub kontenera w miarę ustabilizowania się ruchu i intensywności żądań).

Dzięki takiemu podejściu firmy uzyskują lepszą dostępność, większą zdolność operacyjną w przypadku awarii, a także możliwości ostatecznych oszczędności budżetowych. Korzystając z takich usług, wykorzystujesz tyle mocy serwera, ile potrzebujesz w danym momencie. Jest to całkiem zwycięska opcja w przeciwieństwie do skalowania fizycznego, gdy trzeba kupić i dalej konserwować drogi sprzęt.

Zauważ, że automatyczna skalowalność chmury zawsze idzie w parze z rozwiązaniami do równoważenia obciążenia.

Kontenery mikrousług, klastryzacja

Możesz zastosować efektywne pod względem zasobów procedury zwiększające wydajność, które opakowują usługi w kontenery, a następnie gromadzą te kontenery w klastry. Po klastryzacji następuje zdefiniowanie skryptów, które albo dodają brakujące zasoby (instancje), jeśli zajdzie taka potrzeba, albo minimalizują poświęcenie zasobów, aby uniknąć nadmiaru.

Zaimplementuj buforowanie

Podczas skalowania poziomego nie można zaimplementować prostego buforowania pamięci dla kilku węzłów jednocześnie, dlatego należy to zoptymalizować. W szczególności takie magazyny jak Memcached czy Redis mogą być wykorzystane do połączonej dystrybucji danych z pamięci podręcznej pomiędzy iteracjami aplikacji. Narzędzia te działają według różnych algorytmów, dzięki czemu zmniejsza się ilość danych buforowanych. Magazyny pamięci podręcznej są również dobrze chronione przed błędami replikacji i przechowywania danych.

Korzystając z pamięci podręcznej, ważne jest, aby zapobiec sytuacjom, w których różne iteracje aplikacji jednocześnie żądają danych z pamięci podręcznej. W tym celu należy zaktualizować dane buforowania poza przepływem wydajności aplikacji i używać ich bezpośrednio w aplikacji.

Jako takie, przy odpowiednim podejściu, buforowanie może pomóc Twoim systemom uzyskać zdolność skalowania chmury do obsługi intensywnych obciążeń i osiągnięcia optymalnej wydajności.

Korzystaj z usług CDN

CDN to sieć fizycznie oddalonych komputerów, które przesyłają treści użytkownikom usługi. Innymi słowy, jest to rozproszone przechowywanie i wykorzystanie pamięci podręcznej. Zwykle zwrócenie się do CDN jest najbardziej odpowiednie, gdy usługa internetowa, strona internetowa lub pełnowymiarowa aplikacja jest skierowana do odbiorców rozproszonych po terytorium wielu krajów. Ceny CDN zależą bezpośrednio od natężenia ruchu przechodzącego przez usługę.

Alternatywnie, CDN może być rozwiązaniem nieopłacalnym, jeśli Twoja TA, pomimo szerokiego zasięgu terytorialnego, posiada lokalizacje z koncentracją określonych użytkowników. To znaczy, załóżmy, że około 60% twojej TA ma siedzibę w USA, 30% w Londynie, a pozostałe 10% jest rozproszone po całej planecie. W takim przypadku korzystanie z CDN będzie racjonalną decyzją tylko dla tych ostatnich 10% (podczas gdy inne lokalizacje będą wymagały instalacji nowych serwerów).

Jak rozwiązujemy problemy ze skalowaniem?

Obecnie jednymi z naszych najjaśniejszych przykładów skalowania przeprowadzonych przez wewnętrznych ekspertów jest budowanie architektury o wysokiej skalowalności dla takich publicznych pamięci masowych w chmurze, jak AWS, Microsoft Azure, Google Cloud i Digital Ocean. Wykorzystujemy zautomatyzowane skrypty wdrażania środowiska przy pomocy Terraform - systemu nowej generacji do tworzenia, zarządzania i konfiguracji infrastruktury chmurowej. Nasze klastry serwerów opieramy na samoskalującym się oprogramowaniu Kubernetes i technologii wspomagającej konteneryzację Docker.

Wniosek

skalowalność w środowisku chmury obliczeniowej Źródło obrazu: CDN.Lynda

Wykorzystując skalowalność w środowisku przetwarzania w chmurze za pomocą powyższych i innych metod, możesz rozwijać się szybciej i łatwiej oraz zachować elastyczność przez cały czas. Jeśli do skalowania dążysz tylko i wyłącznie w pełni świadomie, zdecydowanie powinieneś zwrócić się do ekspertów. Pozwól nam znaleźć specjalistów DevOps, którzy zapewnią najbardziej optymalną infrastrukturę serwerową dla Twojego biznesu, przystosowaną do obsługi obciążeń o dowolnej intensywności.