Główna zawartość
Podstawy informatyki - program rozszerzony
Kurs: Podstawy informatyki - program rozszerzony > Rozdział 2
Lekcja 7: Systemy skalowalneSystemy skalowalne
Internet rozpoczął swoje życie jako sieć łącząca uniwersytety i ośrodki badawcze. Gdy stał się dostępny i niedrogi dla konsumentów, jego popularność gwałtownie wzrosła i obecnie korzysta z niego około 4,5 miliarda ludzi.
Na szczęście, protokoły zasilające Internet i sieć zostały zaprojektowane z myślą o skalowalności. Skalowalny system to taki, który może nadal dobrze funkcjonować, nawet gdy doświadcza zwiększonego użycia.
Skalowalność Internetu
Jakie cechy zwiększają skalowalność Internetu?
- Każde urządzenie komputerowe może przesyłać dane przez Internet, jeśli tylko postępuje zgodnie z protokołami. Nie istnieje żaden biurokratyczny proces, który blokowałby urządzenie przed dołączeniem lub uniemożliwiałby programiście nauczenie się, jak działają protokoły.
- System adresowania IPv6 może jednoznacznie przypisać adresy bilion razy większe niż liczba urządzeń podłączonych obecnie do Internetu.
- Routing jest dynamiczny, więc nowe routery mogą w każdej chwili dołączyć do sieci i pomóc w przekazywaniu pakietów danych w Internecie.
Internet został zaprojektowany z myślą o skalowalności, ale żaden system nie jest nieskończenie skalowalny.
Co zagraża skalowalności Internetu?
Albo mówiąc inaczej, co mogłoby pójść nie tak, gdyby każde urządzenie na świecie podłączyło się teraz do Internetu i próbowało pobrać film?
Oto kilka pomysłów:
- Połączenia sieciowe mają ograniczoną przepustowość. Ogromna ilość danych może łatwo przepływać przez połączenia o bardzo wysokiej przepustowości, ale może łatwo obciążyć połączenia o niskiej przepustowości, co prowadzi do opóźnień lub utraty pakietów.
- Routery mają ograniczoną przepustowość (liczba danych, które mogą przesłać w ciągu sekundy). Nowoczesny router konsumencki ma przepustowość około 1 Gb/s, podczas gdy znacznie droższe routery korporacyjne mogą przesyłać do 10 Gb/s. Średni film ma rozmiar od 1 do 10 GB, więc ogólnoświatowe pobieranie może spowodować powstanie wąskiego gardła w routerach.
- Routery bezprzewodowe często mają ograniczenie co do liczby urządzeń, które można do nich podłączyć, zazwyczaj jest to maksymalnie 250 urządzeń. Jeżeli wszyscy próbowaliby korzystać ze wspólnej sieci WiFi w tym samym czasie (np. na uniwersytecie lub w bibliotece), mogłoby się okazać, że po prostu nie mogą się do niej przyłączyć.
🤔 Na podstawie wszystkich informacji, których się dowiedziałeś o Internecie, co jeszcze może wpłynąć na jego skalowalność, w dobry lub zły sposób?
Skalowalność aplikacji internetowych
Aplikacja internetowa działająca w Internecie musi być skalowalna, niezależnie od tego, czy jest to aplikacja przeznaczona na iPhone'a, strona internetowa, czy gra wieloosobowa. Teraz, gdy do Internetu podłączone są miliardy ludzi, każda aplikacja może nagle doświadczyć gwałtownego wzrostu liczby użytkowników. Jeśli aplikacja nie skaluje się tak, aby sprostać zapotrzebowaniu, użytkownicy mogą odczuć wzrost opóźnień lub całkowitą awarię. 😬
Podczas pandemii COVID-19, ludzie na całym świecie zostali poproszeni o pozostanie w domach, aby zmniejszyć liczbę infekcji, a wielu z nich rzuciło się do usług internetowych w poszukiwaniu wirtualnych wersji tego, czego brakowało im osobiście. Z powodu dużej liczby uczniów chcących uczyć się wirtualnie w Khan Academy, nasza strona doświadczyła 250% wzrostu obciążenia serwera.
Tak duże wykorzystanie zaskoczyło nasze systemy, a kilka z nich ledwo radziło sobie z nagłym napływem żądań.
Na przykład nasz system powiadamiania studentów o nowych zadaniach był coraz bardziej zapchany, więc powiadomienia pojawiały się dopiero po kilku minutach (zamiast po kilku sekundach).
Na szczęście nasi inżynierowie szybko zwiększyli pojemność tych systemów, a większość użytkowników nie zauważyła żadnych problemów.
Testy obciążeniowe
Zespoły inżynierskie mogą przygotować się na nagłe wzrosty użytkowania poprzez przeprowadzenie testów obciążeniowych: symulację dużego ruchu w krótkim okresie, aby sprawdzić, czy system nie ugnie się pod obciążeniem. Testy obciążeniowe mogą ujawnić wąskie gardła lub sztywno zakodowane limity w systemie.
Czy kiedykolwiek grałeś w Pokémon Go? To gra mobilna, która ukazała się latem 2016 roku i stała się z miejsca hitem. Twórcy gry przeprowadzili testy obciążeniowe przed wydaniem gry, symulując 5-krotnie największy ruch, jakiego się spodziewali, a serwery gry poradziły sobie z tym doskonale.
Nie docenili oni jednak popularności Pokémon Go. W dniu premiery na ich serwerach odnotowano 50-krotnie większy ruch niż szacowano.
Serwery gry nie były przygotowane na taki poziom skrajnego obciążenia, więc wielu graczy zostało przywitanych rozczarowującym ekranem:
Zespół starał się poprawić skalowalność systemu, w obliczu rosnącego zapotrzebowania ze strony sfrustrowanych użytkowników oraz wielokrotnych ataków DDoS na ich serwery ze strony cyberprzestępców.
Po ponownym skonfigurowaniu architektury serwera, aby była bardziej skalowalna, zespół wypuścił Pokémon Go na cały świat. W ciągu trzech lat od premiery gra została pobrana z mobilnych sklepów z aplikacjami ponad miliard razy.
Zakres skalowalności
System jest skalowalny, gdy ma zdolność do przyjęcia większej ilości użytkowników. Niektóre systemy nie są w ogóle skalowalne i mogą obsłużyć tylko dokładnie taką ilość użytkowników, do jakiej zostały zaprojektowane.
Systemy skalowalne mogą obsługiwać dodatkowe obciążenie, ale ich pojemność jest zróżnicowana. Niektóre systemy mogą być skalowalne tylko do obsługi dwukrotności aktualnego użycia; inne systemy mogą być skalowalne do obsługi 1000x aktualnego użycia.
Kiedy projektujemy systemy o potencjalnie globalnym zasięgu - takie jak sam Internet lub aplikacje działające na jego bazie - musimy zawsze brać pod uwagę skalowalność naszego podejścia.
🙋🏽🙋🏻♀️🙋🏿♂️Czy masz jakieś pytania na ten temat? Chętnie na nie odpowiemy — wystarczy, że zadasz pytanie w poniższym obszarze pytań!
Chcesz dołączyć do dyskusji?
Na razie brak głosów w dyskusji