Bez serwera: kolejna faza ewolucji chmury

Serverless computing to nowy sposób udostępniania usług na bazie infrastruktury, którą użytkownik w żaden sposób nie zarządza. Może wręcz zapomnieć o jej istnieniu.

Serverless computing to gorąca technologia, choć o kiepskiej i mylącej nazwie. Przede wszystkim dlatego, że wykorzystujące ją usługi i aplikacje de facto działają na serwerach. Twórcom tego terminu chodziło raczej o podkreślenie, że użytkownicy w żaden sposób nie zarządzają serwerami, na których uruchamiany jest ich kod.

Zasygnalizowana powyżej idea funkcjonowania rozwiązań bezserwerowych właściwie nie brzmi szczególnie innowacyjnie – w sumie również w przypadku rozwiązań public infrastructure as a service (IaaS) zasada jest podobna. Tu również użytkownik końcowy nie musi zaprzątać sobie głowy kwestiami związanymi z fizyczną obsługą sprzętu (dość wspomnieć zasady użytkowania Amazon Web Services czy Microsoft Azure).

Zobacz również:

W przypadku architektury bezserwerowej, czyli serverless computing, ten koncept idzie o krok dalej – kod pisany przez deweloperów uruchamiany jest z wykorzystaniem dokładnie takiej ilości zasobów, jaka jest niezbędna do jego obsługi. Gdy następuje zdefiniowane wcześniej wydarzenie inicjujące kod, platforma bezserwerowa uruchamia zadanie. Użytkownik nie musi informować dostawcy platformy serverless, ile razy zamierza uruchomić dany kod czy funkcję – po prostu płaci odpowiednią, bardzo małą kwotę za każdym razem, gdy kod zostaje uruchomiony. Zdaniem wielu osób dużo bardziej odpowiednią nazwą dla tak funkcjonującego systemu byłoby sformułowanie „funkcje jako usługi” (Functions as a Service – FaaS) lub „event-driven computing”.

W branży wciąż trwa debata, jak istotnym zjawiskiem jest serverless. To rewolucja czy ewolucja? Czy stanie się kluczowym rozwiązaniem do wielu zastosowań, czy niszową technologią przeznaczoną do kilku konkretnych aplikacji? Dobrej odpowiedzi na to pytanie nie ma.

„Z perspektywy infrastruktury, myślimy o tym, jak o rozwiązaniu, w jakim funkcjonują różne poziomy abstrakcji, na których mogą operować deweloperzy” – wyjaśnia Damion Heredia, wiceprezes działu Cloud Product Management w IBM, który zarządza oferowaną przez koncern usługą serverless o nazwie OpenWhisk. Składają się na nią: sprzęt, maszyny wirtualne oraz kontenery. „Chcieliśmy zaoferować rozwiązanie, w którym możliwe jest zupełne wyabstrahowanie się z wszelkich zadań związanych z fizycznym zarządzaniem i w którym użytkownicy mogą uruchamiać swój kod bez zajmowania się infrastrukturą czy zarządzaniem serwerami. To jest właśnie bezserwerowość” – wyjaśnia Heredia.

Tak naprawdę w branży – wśród analityków, promotorów i sceptyków tego rozwiązania – wciąż trwa debata na temat tego, jak istotnym zjawiskiem jest serverless. To rewolucja czy ewolucja? Czy stanie się w przyszłości kluczowym rozwiązaniem do wielu zastosowań, czy raczej niszową technologią przeznaczoną do kilku konkretnych aplikacji? Dobrej odpowiedzi na to pytanie nie ma: nowa technologia dopiero raczkuje, to pierwsze lata jej rozwoju. Ale towarzyszącego jej szumu, ekscytacji i potencjalnych atutów nie sposób ignorować.

Zalety serverless

Za pioniera bezserwerowości uważa się platformę Amazon Web Services i uruchomioną na niej w 2014 r. usługę Lambda. Matt Wood, główny menedżer AWS Strategy, wyjaśnia, że inspiracją do stworzenia Lambda był najbardziej popularny produkt firmy, czyli Simple Storage Service (S3).

„Korelacja pomiędzy S3 i Lamba jest ważną analogią, ułatwiającą zrozumienie idei tego rozwiązania. S3 to rozwiązanie storage operujące na obiektach: dostarczasz obiekt, a usługa go przechowuje. Nie wiesz jak, nie wiesz gdzie – w gruncie rzeczy cię to nie obchodzi, nie musisz się tym zajmować. Nie ma tu konceptu przestrzeni dyskowej, wszystko to nie jest istotne dla użytkownika. Użytkownik nie może stosować over-provisioningu ani under-provisiongu pamięci, storage po prostu jest i tyle” – wyjaśnia Sam Kroonenburg, autor bloga A Cloud Guru Blog.

Matt Wood z AWS tłumaczy, że dokładnie tę samą zasadę zastosowano w Lambda – tyle że nie w stosunku do usług storage, ale zasobów obliczeniowych. „Lambda operuje na funkcjach. Dostarczasz kod funkcji, a Lambda go uruchamia na żądanie. Nie ma tu miejsca na over- czy under-provisionig zasobów, one po prostu są” – mówi.

W tradycyjnym środowisku chmurowym IaaS oferuje wirtualne maszyny, usługi storage, bazy danych, a także wszelkie niezbędne narzędzia zabezpieczające, zarządzające itp. Mając je już zapewnione („zaprovisionowane”), można załadować swoje aplikacje do tych maszyn wirtualnych, a następnie użyć np. loadbalancerów do skalowania ich. Używa się też narzędzi administracyjnych do optymalizowania wielkości poszczególnych instancji i znalezienia porzuconych lub zapomnianych maszyn wirtualnych.

Lambda i inne platformy FaaS oferują zupełnie inny model korzystania z zasobów. Kod jest zapisany w funkcjach – gdy nastąpi predefiniowane wydarzenie, które inicjuje daną funkcję, Lambda ją uruchamia… i tyle. Użytkownik nie musi zarządzać serwerami, planować obciążenia, balansować go, monitorować. Jego funkcja/kod zostaje uruchomiona – i tyle.

Typowe zastosowania

Matt Wood z AWS wyjaśnia, że takie rozwiązanie jest bardzo pomocne w wielu różnych scenariuszach. Można np. stworzyć funkcję, która sprawi, że za każdym razem, gdy do S3 zostanie załadowane zdjęcie, Lambda stworzy jego kopie w różnych rozmiarach, dopasowanych do wyświetlaczy komputerów, tabletów czy smartfonów. Albo taką, która przy każdym wpisaniu do bazy danych nowego rekordu będzie automatycznie przekazywała nowe dane do oprogramowania do analizy, np. Amazon Redshift. To popularna metoda korzystania z nowej technologii – Matt Wood tłumaczy, że wielu użytkowników wiąże Lambdę z usługami AWS właśnie z myślą o realizowaniu zadań związanych z raportowaniem, planowaniem czy modyfikowaniem danych do analizy.

Istnieją obawy związane z migracją rozwiązań FaaS pomiędzy różnymi platformami serverless. Rynek tych usług jest młody, brakuje uniwersalnych rozwiązań – większość narzędzi tworzona jest z myślą o konkretnych platformach i dopasowanych do nich ekosystemów.

„Tworzenie aplikacji z myślą o funkcjonowaniu w modelu serverless wymaga od deweloperów nowego podejścia, bo ów model nakłada na twórców oprogramowania szereg wymagań architektonicznych” mówi Craig Lowery, dyrektor Gartner Research.

Innym popularnym środowiskiem, w którym nowa technologia jest rozpowszechniona, jest internet rzeczy, gdzie reagowanie na predefiniowane wydarzenia w czasie rzeczywistym odbywa się non stop na ogromną skalę. AWS poinformował niedawno, że z funkcji Lambda można korzystać również na urządzeniach IoT, za pośrednictwem platformy Greengrass – pozwala ona na uruchamianie funkcji w warunkach ograniczonej komunikacji, w sytuacjach, gdy dane nie muszą być wysyłane do centralnego serwera w chmurze, a tylko pomiędzy lokalnymi elementami ekosystemu IoT.

Możliwe jest np. skonfigurowanie usługi tak, by za każdym razem, gdy kamera monitoringu wykryje ruch, Lambda inicjowała nagranie klipu i wysłanie go do bazy danych. W tym wariancie nie jest potrzebny działający i czuwający 24/7 serwer w maszynie wirtualnej – kod uruchamiany w jest na bazie zdefiniowanego impulsu (event) i następuje to dopiero wtedy, gdy pojawi się ów impuls. Takie rozwiązanie pozwala na znaczne oszczędności – firma FireEye, użytkownik AWS, twierdzi, że wykorzystanie do takich zastosowań platformy Lambda zamiast EC2 pozwoliło zredukować o 80% wydatki na maszyny wirtualne.

„Serverless jest najprostszym rozwiązaniem outsourcingowym. Pozwala użytkownikowi na opłacenie kogoś, kto zajmie się obsługą serwerów, baz danych, czy nawet logiką aplikacji, zamiast zajmować się tym samemu. Wielka różnica i atut bezserwerowości polega na tym, że naprawdę płacisz tylko za zasoby, których realnie używasz, z dokładnością do 100 ms” – czytamy w obszernym artykule na blogu Martina Fowlera. Nie ma czekania na uruchomienie się serwera czy skonfigurowanie load balancera. Kod jest natychmiast uruchamiany, a zadania realizowane w nieskończoność. Zdaniem Fowlera ten model pozwala deweloperom na szybsze testowanie nowych koncepcji i sprawniejsze wprowadzanie ich na rynek.

Minusy serverless

Oczywiście, platformy serverless nie są rozwiązaniem wszystkich informatycznych problemów tego świata i mają ograniczenia. Wiele z nich związanych jest z tym, że rynek takich usług jest jeszcze niedojrzały. „Zarządzanie rozwiązaniami serverless na dużą skalę jest skomplikowane i trudne. Brakuje narzędzi administracyjnych umożliwiających np. koordynowanie grup funkcji. Dopiero powstaje rynek oprogramowania z zakresu bezpieczeństwa, monitorowania i optymalizowania usług bezserwerowych. Najważniejszy wydaje się jednak fakt, że tworzenie aplikacji z myślą o funkcjonowaniu w modelu serverless wymaga od deweloperów nowego podejścia, bo ów model nakłada na twórców oprogramowania szereg wymagań architektonicznych” – wyjaśnia Craig Lowery, dyrektor Gartner Research.

Istotne jest również to, że funkcje serverless de facto nie mają określonego stanu. Oczywiście można z nich korzystać ponownie i uruchamiać je wielokrotnie, ale nie przechowują informacji o swoim stanie. Kod jest uruchamiany, i to wszystko. Dostawcy FaaS platforms pobierają opłaty w postaci np. ułamka centa za milion uruchamianych funkcji – co pokazuje, jak według nich deweloperzy powinni planować funkcjonowanie swoich usług. Jednak – tłumaczy Lowery – zarządzanie takim ogromem funkcji może być poważnym problemem.

Istnieją również obawy związane z migracją rozwiązań FaaS pomiędzy różnymi platformami serverless – obecnie przeportowanie aplikacji napisanej z myślą o jednej platformie na konkurencyjną jest zadaniem raczej trudnym. Jako że rynek takich usług jest młody, brakuje uniwersalnych rozwiązań – większość narzędzi tworzona jest z myślą o konkretnych platformach i dopasowanych do nich specyficznych ekosystemów. Świetnym przykładem jest właśnie Lambda, tak mocno zintegrowana z innymi produktami AWS (Matt Wood z AWS zwraca jednak uwagę, że platforma obsługuje uniwersalne języki programowania – Node.js, Python oraz Java – więc kod może być wykorzystywany również na innych platformach.

„Ogólnie rzecz ujmując, Serverless/FaaS jest nowym, potężnym rozwinięciem istniejącego paradygmatu informatycznego, opartego na wirtualnych maszynach i kontenerach. Lambda to coś zupełnie nowego. Myślę, że wkrótce zobaczymy mnóstwo udanych aplikacji, bazujących w całości na serverless… Z drugiej strony musimy pamiętać, że to nie jest rozwiązanie absolutnie uniwersalne, odpowiednie do wszystkich zastosowań” – tłumaczy Lowery. Przykładem są choćby bazy danych czy jakiekolwiek inne aplikacje wymagające monitorowania statusu – one nie będą odpowiednio działały w Lambda.

Na rynku coraz gęściej

Jak już wspomnieliśmy, za pioniera segmentu serverless computing uważany jest AWS. Matt Wood z firmy twierdzi wręcz, że Lambda nie jest jedyną jej platformą spełniającą kryteria bezserwerowości – innymi mają być choćby S3, a także NoSQL DynamoDB oraz Aurora. Żaden z tych produktów nie wymaga bowiem od użytkownika wcześniejszego planowania zasobów czy zarządzania infrastrukturą.

Lambda obecnie oferowana jest z milionem darmowych operacji, za kolejne trzeba zapłacić – 20 centów za każdy milion. Opłaty mogą być również pobierane na podstawie czasu poświęconego na realizowanie zadań (stawka wynosi 0,00001667 USD za 1 GB na każdą sekundę, w której używana jest platforma).

Takie same ceny obowiązują w uruchomionej przez Microsoft w listopadzie ub. r. platformie Azure Functions. Google Functions pozostaje wciąż w becie – tutaj pierwsze dwa miliony operacji są za darmo, jednak za kolejne płacimy nieco więcej (choć stawki za czas są nieco niższe niż u konkurencji). W IBM OpenWhisk użytkownik za darmo otrzymuje 400 000 GB/s na miesiąc (a każdy kolejny GB kosztuje miesięcznie 0,000017 USD). Damion Heredia z IBM dodaje jednak, że atutem platformy jego firmy jest fakt, że jest ona open-source’owa – w teorii oznacza to, że klienci mogą uruchamiać kod OpenWhisk, kiedy tylko zechcą. Oprócz dużych graczy na rynku jest również spora grupa start-upów oferujących platformy, komponenty i narzędzia do zarządzania rozwiązaniami serverless. Jednym z bardziej popularnych jest Iron.io, rozwijający platformę bezserwerową bazującą na kontenerach Docker.

„Rynek jest na tyle młody, że trudno wskazać zwycięzców i przegranych. Ale to AWS najdłużej ma w ofercie rozpoznawalny produkt w tej kategorii” – mówi Craig Lowery z Gartnera. „Kluczowe okaże się to, do czego wykorzystane zostaną rozwiązania serverless. FaaS może okazać się np. potężnym narzędziem do łączenia ze sobą różnych rozwiązań z oferty jednego dostawcy. Z drugiej strony w bazujących na eventach zastosowaniach z kategorii internetu rzeczy wiązanie się z chmurą tylko jednego dostawcy będzie rzadkością”.


TOP 200