Spis treści
Wydajność aplikacji mobilnej lub webowej pozostawia wiele do życzenia? Może to wynikać z błędów po stronie infrastruktury. Sprawdź, jak dzięki rozwiązaniom chmurowym możesz zoptymalizować zaplecze swoich usług i zwiększyć ich szybkość.
Lawinowo rośnie liczba danych, jaką przepuszczamy każdego dnia przez nasze telefony i komputery. Coraz częściej oczekujemy dostępu do informacji w czasie rzeczywistym. W takich okolicznościach nawet najlepiej zaprojektowana aplikacja mobilna i webowa może doświadczyć chwilowych problemów z wydajnością. Poza optymalizacją kodu aplikacji, warto zwrócić uwagę na rozwiązania w zakresie infrastruktury, na której utrzymywany jest dany produkt.
Dlaczego wydajność aplikacji ma znaczenie?
O sukcesie aplikacji mobilnych i webowych decyduje szereg czynników, ale jeden z kluczowych stanowi ich wydajność. Według badań prowadzonych w ostatnich latach przez Google, różnica zaledwie dwóch sekund w czasie ładowania aplikacji zwiększa tzw. współczynnik odrzuceń (bounce rate) do aż 32%. Każda kolejna sekunda zwłoki powoduje, że większa liczba użytkowników już do takiej aplikacji nie wróci.
Statystycznie 3 do 4 sekund na pełne załadowanie się aplikacji webowej czy mobilnej jest dla nas akceptowalne. Często nie mamy jednak wiedzy o tym, dlaczego to faktycznie trwa tyle czasu. Widzimy tylko graficzny interfejs użytkownika (graphical user interface, w skrócie GUI). Określa się go również mianem warstwy prezentacyjnej (presentation layer), która jest najbliższej użytkownika końcowego. W architekturze aplikacji jest ona na najwyższym poziomie.
Co się dzieje pod maską, czyli infrastruktura dla aplikacji
Tymczasem pod spodem w samej aplikacji odbywa się szereg procesów związanych z tzw. warstwą logiki (logic layer) oraz warstwą danych (data layer). Pierwsza z nich reaguje na konkretne zachowania użytkownika (np. kliknięcie przycisku na ekranie) oraz definiuje działanie podstawowych funkcji. Druga zaś, stanowi zaplecze do przechowywania informacji niezbędnych do przetwarzania w danym momencie. Stworzenie interakcji między poszczególnymi warstwami to dopiero połowa sukcesu.
Trzeba też pamiętać, że w tle aplikacja mobilna lub webowa często komunikuje się przynajmniej z kilkoma miejscami w internecie. To może być serwer WWW, serwer aplikacji, baza danych (jedna lub kilka), a czasem też osobny serwer dla plików multimedialnych. Jeśli chcesz wysyłać użytkownikowi powiadomienia typu push, również tym zajmuje się osobna usługa. Wszystko zależy od stopnia skomplikowania aplikacji.
Gdy jeszcze dorzucimy do tego funkcję komunikacji między użytkownikami oraz zaawansowaną analitykę szybko okaże się, że dobór architektury aplikacji ma kluczowe znaczenie dla jej wydajności.
Jak zwiększyć wydajność aplikacji mobilnej?
Jeśli aplikacja zyskuje na popularności i chce z niej korzystać większa liczba użytkowników, mogą pojawić się problemy z wydajnością. Przeciążony serwer nie jest w stanie obsłużyć wszystkich zapytań na czas. Musimy zatem zwiększyć możliwości tzw. backendu, czyli zaplecza dla aplikacji. Można tego dokonać na dwa sposoby.
Pierwszy z nich zakłada rozbudowę takiego serwera (m.in. przez dołożenie pamięci operacyjnej lub zwiększenie liczby procesorów). Proces ten określamy jako skalowanie pionowe (wertykalne). Jednak w pewnym momencie możliwości rozbudowy pojedynczej maszyny się skończą. Istnieją limity dokładania pamięci i rozbudowy pojedynczej maszyny. W drugim scenariuszu stawiamy dodatkowe serwery, które zwiększają ogólną pulę dostępnych zasobów. Operację tę nazywamy skalowaniem poziomym (horyzontalnym). Oba rodzaje skalowania można stosować równolegle.
Jeśli zwiększymy liczbę serwerów musimy pomyśleć o rozdzieleniu ruchu na poszczególne maszyny i zbalansowaniu obciążenia. Tym zajmuje się load balancer. Nie tylko pozwala on przekierować ruch na serwer bliższy lokalizacji użytkownika aplikacji, ale pilnować też określonego poziomu obciążenia, po przekroczeniu którego należy wykorzystać inne maszyny. Load balancing może działać lokalnie w ramach jednej strefy geograficznej lub globalnie. Przyda się w sytuacji gdy jedna z maszyn ulegnie awarii. Load balancer automatycznie przełączy ruch na pozostałe serwery w sieci.
Globalną dystrybucją danych, aby były one bliżej użytkownika zajmuje się usługa CDN (Content Delivery Network). To rozproszona po całym świecie sieć serwerów przechowujących kopie najczęściej wykorzystywanych elementów aplikacji. Szczególnie chodzi tu o duże pliki multimedialne, których każdorazowe przesyłanie przez sieć mogłoby zająć więcej czasu.
Usługę CDN można potraktować jako odpowiednik pamięci cache w przeglądarce internetowej, dzięki której najczęściej odwiedzane strony WWW ładują się szybciej. Przeglądarka nie musi bowiem pobierać całej strony za każdym razem z odległego o setki lub tysiące kilometrów serwera. Może pobrać szybciej kopię plików z serwera położonego najbliżej urządzenia mobilnego lub komputera.
Dlaczego warto postawić na infrastrukturę Google Cloud?
Rosnąca liczba elementów tej backendowej układanki może przerażać, ale mamy na to sensowne rozwiązanie. Infrastruktura chmurowa Google Cloud pomoże spiąć wszystko w jedną sensowną całość, zachowując najwyższą możliwą wydajność. Google Cloud Platform to niemal 200 gotowych usług chmurowych zaprojektowanych pod kątem różnych zastosowań.
Przede wszystkim uwalnia twórców aplikacji mobilnych i webowych od dbania o kondycję infrastruktury i pozwala im skupić się na tworzeniu produktu. Oczywiście, nadal muszą oni stosować się do dobrych praktyk z zakresu administracji i kontroli dostępu. Piszemy o tym szerzej w artykule: Shared responsibility model – za co odpowiada dostawca, a za co użytkownik chmury?
Na Google Cloud Platform (w skrócie GCP) składa się rozproszona po całym świecie sieć centrów danych, na bazie których dostępny jest szeroki wachlarz gotowych produktów – w tym maszyn wirtualnych, baz danych (SQL i NoSQL), platform do tworzenia i wdrażania aplikacji, usług balansowania ruchu, serwerów CDN czy narzędzi do zarządzania ruchem w sieci. Dzięki Google Cloud Platform możesz też przeprowadzić testy wydajnościowe i testy obciążeniowe swoich aplikacji.
Usługi wchodzące w skład GCP – Cloud Load Balancing oraz Cloud CDN – przejmą na siebie ciężar rozłożenia ruchu pomiędzy maszynami w jednym rejonie oraz w sieci rozproszonej geograficznie. Google rozwija własną sieć światłowodową, łączącą wszystkie centra danych. Użytkownikom Google Cloud daje do wyboru dwie opcje transmitowania zasobów: z wykorzystaniem sieci Google (Premium Tier) i publicznej sieci (Standard Tier).
Wspomniane wcześniej skalowanie aplikacji webowej lub mobilnej nie wymaga modernizacji czy dokupowania fizycznych serwerów. Opieką nad infrastrukturą zajmuje się dostawca chmury, w tym wypadku Google.
Jeśli Twój produkt wymaga więcej zasobów, to po uprzednim przeprowadzeniu odpowiedniej konfiguracji, ustawieniu limitów i sposobu skalowania usług, otrzyma je natychmiast i bez zakłóceń w pracy aplikacji (upscaling). Jeśli ruch spadnie chmura sama dokona skalowania w dół (downscaling), żeby zminimalizować koszty usługi. Kolejną zaletą tego rozwiązania jest system rozliczeń bazujący na realnym zużyciu zasobów (w wielu usługach GCP płacisz tylko za to, co faktycznie wykorzystasz).
Rachunki za chmurę możesz obniżyć za sprawą Committed use Discount (w skrócie CUD). To jeden ze sposobów na zmniejszenie kosztów za stałe korzystanie z mocy obliczeniowej i pamięci maszyn wirtualnych Google Cloud Platform. Bardzo dobrze sprawdza się w projektach, które korzystają z usług GCP przez dłuższy czas.
Region Google Cloud w Warszawie – dlaczego to ważne?
W tym kontekście warto też wspomnieć o nowym regionie Google Cloud, który niedawno został uruchomiony w Warszawie. Dzięki temu zyskujesz jeszcze szybszy dostęp do infrastruktury Google na terenie Europy Środkowo-Wschodniej. Eliminujesz potencjalne problemy z wydajnością aplikacji utrzymywanych w środowisku chmurowym, które mogą wynikać z dystansu między użytkownikiem i infrastrukturą.
Region – w języku Google Cloud – to obszar geograficzny, który składa się z trzech lub więcej zon. Zona to strefa, którą użytkownik Google Cloud Platform wskazuje jako tę, w której będą uruchamiane zasoby danej usługi do obsłużenia jego aplikacji.
Region Google Cloud w Warszawie obsługuje kluczowe usługi GCP, między innymi: Compute Engine (maszyny wirtualne), Cloud Bigtable (bazę danych NoSQL), Cloud Spanner (rozproszoną bazę danych SQL) czy BigQuery (usługę hurtowni danych dedykowaną analityce Big Data).
Chcesz wiedzieć więcej o korzyściach dla Twojego biznesu z otwarcia regionu Google Cloud w Warszawie? Wszystkiego dowiesz się z naszego artykułu: Region Google Cloud w Warszawie – co to oznacza dla Europy Środkowo-Wschodniej?
Jak chmura Google pomaga tworzyć aplikacje?
Chmura Google to nie tylko stabilna infrastruktura. W GCP znajdziesz szereg usług zaprojektowanych z myślą o developerach aplikacji webowych i mobilnych.
Przykładem takiego środowiska jest App Engine. To bezserwerowa, w pełni zarządzana platforma developerska do wdrażania i hostowania aplikacji webowych oraz backendów aplikacji mobilnych stworzonych w niemal dowolnej technologii.
Jeśli wolisz pracować na kontenerach, GCP ma dla Ciebie usługę Cloud Run. Umożliwia ona szybkie tworzenie i wdrażanie aplikacji w kontenerach. W zapanowaniu nad większą liczbą kontenerów pomoże Google Kubernetes Engine (GKE), czyli środowisko do orkiestracji (zarządzania). Osoby zajmujące się tworzeniem gier mobilnych mają do dyspozycji platformę Firebase. Wszystkie powyższe usługi są dostępne w regionie Google Cloud w Warszawie.
Nie wiesz jak się za to wszystko zabrać? Dowiedz się, jak dzięki App Engine możesz skupić się na kodzie aplikacji, a obsługę infrastruktury zostawić Google.
Pobierz za darmo naszego ebooka: App Engine – platforma developerska w chmurze