Czym jest Cloud Functions? Jak rozpocząć pracę z tym środowiskiem i co jest nam w stanie zaoferować? W dzisiejszym wpisie przybliżamy podstawy tego rozwiązania, dostępnego w ramach środowiska chmurowego Google Cloud.
Czym jest Cloud Functions?
Cloud Functions jest bezserwerowym środowiskiem służącym do łączenia usług w chmurze oraz wykonywania zadań. Działa w modelu FaaS (Function as a Service) i umożliwia pisanie oraz wdrażanie fragmentów kodu uruchamianych w odpowiedzi na określone zdarzenie emitowane przez Google Cloud. Możliwe jest też uruchomienie zdarzenia spoza platformy, przy użyciu protokołu HTTP i unikalnego adresu URL. Uruchamianie kodu następuje w środowisku wykonawczym Google, dzięki czemu użytkownik nie musi dostarczać ani konfigurować żadnej usługi.
Czym jest środowisko bezserwerowe?
W tym miejscu warto powiedzieć kilka słów o tym, czym środowisko bezserwerowe (serverless) i jaka jest jego funkcja. Jest to infrastruktura, w której uruchamiany jest Twój kod. Dzięki niemu nie musisz przejmować się zarządzaniem maszyną, udostępnianiem, aktualizacją systemu operacyjnego, zarządzaniem siecią czy równoważeniem obciążenia. To wszystko leży po stronie infrastruktury Google, natomiast zasoby skalowane są automatycznie, zgodnie z bieżącymi potrzebami.
Jeżeli Twoja aplikacja cieszy się dużym zainteresowaniem, wzrasta więc ruch, Google przeskaluje infrastrukturę w górę, a gdy obciążenie spadnie, infrastruktura zostanie przeskalowana w dół. Co się stanie w sytuacjach, w których w ogóle nie ma ruchu? W takim wypadku usługa zostanie skalowana do zera, co pozwoli uniknąć niepotrzebnych kosztów, gdyż w chmurze Google płacisz w modelu pay-as-you-use, czyli przy zerowym ruchu nie zapłacisz nic.
Większa zwinność dzięki Cloud Functions
Wracając do Google Cloud Functions – usługa ta zwiększa poziom zwinności poprzez budowanie aplikacji składających się z małych, niezależnych jednostek funkcjonalności, czyli modułów. Każdy z nich koncentruje się na wykonaniu tylko jednej czynności. Dzięki Cloud Functions użytkownicy mogą tworzyć i wdrażać usługi na poziomie pojedynczej funkcji, niekoniecznie z poziomu całej aplikacji, kontenera czy maszyny wirtualnej.
Dostępne są dwie generacje Cloud Functions. Drugą oparto na Cloud Run i Evantarc, co pozwoliło ulepszyć zestaw funkcji. Mimo że Google deklaruje wsparcie dla obu, to sugeruje się korzystanie z drugiej generacji.
Co zapewnia druga generacja Cloud Functions?
Wśród zmian, które pojawiły się w drugiej generacji Cloud Functions warto zwrócić uwagę na:
- Dłuższy czas przetwarzania żądań, dzięki czemu możesz uruchamiać obciążenia takie jak przetwarzanie dużych strumieni danych z Cloud Storage lub BigQuery.
- Większe rozmiary instancji, co pomoże uruchamiać równolegle większe obciążenia, które intensywnie korzystają z mocy obliczeniowej.
- Ulepszoną współzależność, dzięki której możliwa jest jednoczesna obsługa wielu żądań za pomocą jednej instancji funkcji, co wpływa minimalizację opóźnień czy tzw. cold startów.
- Zarządzanie ruchem, które sprawia, że można podzielić go między różne wersje funkcji, czy też przywrócić poprzednią wersję.
- Integrację z Eventarc, czyli natywna obsługa triggerów Eventarc, dzięki której do Cloud Functions mogą trafić wszystkie z ponad dziewięćdziesięciu źródeł zdarzeń obsługiwanych przez Eventarc.
- Szerszą obsługę CloudEvents – wsparcie dostępne jest we wszystkich środowiskach wykonawczych, co zapewnia spójne środowisko programistyczne.
Do pisania Cloud Functions możesz skorzystać z wielu języków oprogramowania wylistowanych tutaj. Środowisko to rozszerza istniejące usługi w chmurze, umożliwiając obsługę wielorakich przypadków w dowolnej logice programowania. Ponieważ Cloud Functions ma dostęp do danych logowania Google Service Account, uwierzytelnianie usług takich jak Cloud Vision oraz wielu innych następuje bezproblemowo. Dodatkowym ułatwieniem integracji jest obsługiwanie i wykorzystanie przez Cloud Functions licznych bibliotek klienckich.
Eventy chmurowe i Triggery
Przedstawiając drugą generację Cloud Functions napomknęliśmy o eventach i triggerach. Czym one są?
Zdarzeniami w chmurze (events) są wszystkie rzeczy dziejące się w Twoim środowisku chmurowym. Będą to więc zarówno zmiany w bazie danych, pliki dodane do systemu pamięci masowej lub też nowa instalacja maszyny wirtualnej. Zdarzenia będą tworzone bez względu na to, czy postanowisz na nie odpowiedzieć. Jeżeli tak, to w celu odpowiedzi potrzebujesz triggera.
Trigger stanowi deklarację zainteresowania określonym wydarzeniem lub zestawem wydarzeń. Wiążąc funkcję z triggerem możesz przechwytywać wydarzenia. Możesz skonfigurować Cloud Functions do odpowiadania na różne scenariusze. Triggerem mogą być żądania HTTP(S) lub zdarzenia.
W jakich zastosowaniach sprawdzi się Cloud Functions?
Korzystając z Cloud Functions nie potrzebujesz własnego serwera lub dedykowanego programisty, aby obsłużyć asynchroniczne obciążenia czy automatyzację w chmurzę. Wystarczy wdrożyć funkcję powiązaną z danym zdarzeniem. Ze względu na precyzję oraz działanie na żądanie, Cloud Functions idealnie nada się do lekkich interfejsów API oraz webhooków. Automatyczne udostępnianie punktów końcowych http sprawia, że nie jest wymagana skomplikowana konfiguracja, tak jak ma to miejsce w przypadku innych usług.
Integracja z API
Dzięki Cloud Functions możesz udostępniać własne mikrousługi za pośrednictwem interfejsów API HTTP. Możliwa jest też integracja z usługami innych firm oferującymi integrację elementów webhook. Pozwoli to szybko rozszerzyć aplikację o zaawansowane funkcje, takie jak np. potwierdzenie po pomyślnej płatności Stripe, wysyłanie wiadomości e-mail, czy odpowiedzi na zdarzenia w postaci wiadomości tekstowych.
Bezserwerowe zaplecze mobilne
Używając Cloud Functions bezpośrednio z Firebase możesz rozszerzyć funkcjonalność aplikacji bez uruchamiania serwera. Dzięki temu możesz odpalić swój kod w odpowiedzi na działania użytkowników, analizy i zdarzenia związane z uwierzytelnianiem, aby zaangażować użytkowników za pomocą powiadomień opartych na zdarzeniach. Co więcej, Pomaga to przenosić zadania intensywnie obciążające procesor i sieć do Google Cloud.
Bezserwerowe zaplecze IoT
Kolejnym ciekawym zastosowaniem Cloud Functions w połączeniu z Cloud IoT Core oraz innymi w pełni zarządzanymi usługami jest tworzenie zaplecza do zbierania, przetwarzania i analizy danych telemetrycznych urządzeń IoT. W tym przypadku Cloud Functions umożliwia stosowanie niestandardowej logiki do każdego zdarzenia w momencie jego nadejścia.
Podsumowanie
Korzystając z Google Cloud Functions stworzysz i wdrożysz usługi na poziomie pojedynczego modułu, a nie całej aplikacji, maszyn wirtualnych czy kontenerów. Dzięki zapewnionej warstwie logiki do łączenia i rozszerzania innych usług w chmurze Google możesz pisać i wdrażać funkcje, które szybko połączysz ze zdarzeniami emitowanymi przez inne usługi chmurowe. Ponieważ usługa działa w modelu bezserwerowym, obniżysz koszty, uwolnisz zasoby, które przydadzą się do rozwoju innowacji, zamiast pozostawiać je w obszarze utrzymania.