Koncepcja “serverless computing” istnieje już od ponad dekady, a jej popularność rośnie dzięki usługom takim jak AWS Lambda, która debiutowała w 2014 roku, czy Azure Functions. Kilka lat w branży tak dynamicznej, jak IT, pozwala mówić o serverless jako o sprawdzonym i dojrzałym rozwiązaniu. Serverless jednak nadal budzi sporo wątpliwości. Szczególnie wśród tych środowisk, które właśnie zaczynają korzystanie z usług chmurowych lub dopiero planują migrację do chmury swoich systemów. Na najważniejsze pytania dotyczące tego rozwiązania spróbujemy odpowiedzieć w niniejszym artykule.
Co teraz z zarządzaniem infrastrukturą serwerową?
Wprowadzenie terminu serverless prowokuje pytanie – czy moje rozwiązanie nie potrzebuje już serwerów? Oczywiście, nadal będziemy z nich korzystać, ale znacząco zmienia się sposób, w jaki to robimy oraz zakres odpowiedzialności. Pierwszą istotną zmianą jest to, że nie musimy już zarządzać infrastrukturą w naszym rozwiązaniu. Przygotowanie serwerów, instalacje i aktualizacje systemów operacyjnych, a także zapewnienie wysokiej dostępności, czy automatycznej skalowalności – za to wszystko odpowiada dostawca usługi. Na przykład Amazon, Microsoft, czy Google. Pozwala to skupić się przede wszystkim na projekcie i implementacji wymagań biznesowych. Natomiast ingerowanie w infrastrukturę ograniczyć do konfiguracji jej parametrów, na przykład skalowalności.
Jakie są koszty początkowe?
Kolejnym istotnym elementem jest brak konieczności ponoszenia kosztów z góry. Usługi serverless zakładają płacenie za faktycznie wykorzystywane zasoby, czyli tylko za to, kiedy nasza funkcjonalność działała. Dobrze zaprojektowana architektura może więc pomóc w ograniczeniu kosztów operacyjnych. Należy jednak przy tym pamiętać, że system może potrzebować innych usług chmurowych. Dlatego do bardziej wiarygodnej weryfikacji kosztów warto używać kalkulatorów udostępnianych przez dostawców chmury.
Serverless computing nie tylko dla startupów?
Można spotkać się z opiniami, że takie rozwiązania są dobre dla projektów cloud native, startupów czy projektów, które dopiero zaczynają. Oczywiście, łatwiej projektuje się rozwiązanie od zera, a dodatkowo ponoszenie kosztów jedynie za wykorzystane zasoby pozwala takim projektom na łatwiejszy start. Przypadków użycia jest jednak znacznie więcej.

Czy serverless computing nadaje się dla mikro usług?
Serverless idealnie wpisuje się w projekty oparte o architekturę mikro usług (microservices). Czyli zbiór małych, autonomicznych usług, implementujących wąski obszar logiki biznesowej. Z powodzeniem mikroserwisy takie można wdrażać jako Function-as-a-Service (FaaS). Dziś każdy liczący się na rynku dostawca chmury ma dostępne w swoim portfolio usługi we wspomnianym modelu. Stąd między innymi AWS Lambda, Azure Functions, Google Cloud Functions, czy IBM Cloud Functions. Warto również wspomnieć o usługach umożliwiających uruchamianie kontenerów bez potrzeby zarządzania serwerami, takich jak Azure Container Instances, czy AWS Fargate. Pozwala to skupić się przede wszystkim na tworzeniu aplikacji. Bez potrzeby zarządzania infrastrukturą, w ramach której ona działa, a ponadto poprawia bezpieczeństwo, zapewniając izolację.
Model oparty na zdarzeniach
Kolejnym przykładem zastosowania rozwiązania serverless jest architektura oparta na zdarzeniach (event-driven architecture). Często jest ona wykorzystywana w systemach komunikujących się z urządzeniami w ramach technologii IoT, których popularność również od dłuższego czasu notuje trend wzrostowy. Niezależnie czy dopiero zaczynamy projekt i dodajemy nowe funkcjonalności, czy też chcemy przerobić istniejącą, monolityczną aplikację na łatwą w utrzymaniu, skalowalną architekturę, warto rozważyć rozwiązania serverless z uwagi na potencjalne zyski.
Bezserwerowe bazy danych
Usługi serverless nie kończą się jednak na wspomnianych środowiskach uruchomieniowych. Do dyspozycji mamy również bazy danych działające serverless, eliminując potrzebę dostarczania i skalowania wirtualnego lub fizycznego sprzętu bazodanowego. Gotowe rozwiązania znajdziemy u większości najbardziej znanych dostawców chmury, takie jak Azure Data Lake, Google Cloud Store, czy Amazon Aurora Serverless.

Uzależnienie od dostawcy usługi
Odpowiadając na najważniejsze pytania, dużo powiedzieliśmy o benefitach rozwiązania serverless. Wspomnieliśmy o optymalizacji kosztowej, łatwym skalowaniu, braku konieczności zajmowania się infrastrukturą, co może przełożyć się na szybsze dostarczanie produktów do klientów. Za tym wszystkim stoją jednak także trudności, z którymi musimy się zmierzyć. Jedną z nich jest z pewnością “vendor lock-in”, czyli uzależnienie od dostawcy. Powstało kilka strategii, które pomagają zniwelować ten problem, ale warto mieć go na uwadze, przed podjęciem ostatecznej decyzji. Kod źródłowy, czy bazę danych, w większości przypadków stosunkowo łatwo przetransferować.
Automatyzacja usługi
Kolejną trudność może stanowić przeniesienie konfiguracji, czy automatyzacja naszych usług chmurowych. Dostawcy usług chmurowych wspierają różne technologie i typy zdarzeń – o te najpopularniejsze nie musimy się martwić, natomiast niszowe rozwiązania będzie z pewnością trudniej przenieść do chmury. Może się okazać, że aby to zrobić, potrzebujemy nie tylko czasu, ale też nowych kompetencji w naszym zespole. W takim przypadku warto korzystać z usług firm, które posiadają doświadczenie w projektowaniu usług chmurowych oraz dysponują specjalistami w tej dziedzinie. TT PSC jako partner pomoże nie tylko zaprojektować system, ale również zasugeruje odpowiednie usługi i dostawcę chmury, adekwatnie do wymagań klienta. Dlatego też zachęcam do zapoznania się z portfolio naszych działów Cloud, Managed Services, czy też Outsourcing Programistów lub Outsourcing Zespołu IT. Pozwoli to niewątpliwe usprawnić proces wdrożenia systemu typu serverless.

Wyzwania
W przypadku przenoszenia istniejącego rozwiązania do architektury wykorzystującej serverless, również musimy skonfrontować się z pewnymi wyzwaniami. Sam transfer i podzielenie kodu na funkcje w chmurze nie wystarczy. Zmieniają się choćby sposoby integracji, możliwości związane z zapewnieniem bezpieczeństwa aplikacji, czy dostępne usługi. Najczęściej musimy przeprojektować architekturę naszego systemu, a pewne elementy będą musiały być przepisane, bądź zastąpione innymi rozwiązaniami, co może skomplikować dodatkowo działania w początkowej fazie. Może się również zdarzyć, szczególnie w przypadku aplikacji monolitycznych, że przeniesienie projektu do chmury będzie się wiązało z całkowitym jej przepisaniem w nowej architekturze. Przy migracji projektów często kluczowe okazuje się doświadczenie, dlatego wsparcie zespołów działu Software Development Services jest cenione przez naszych klientów. Dzięki temu ryzyko potencjalnych problemów jest znacznie mniejsze, a reakcja na ewentualną niepoprawność dużo szybsza.
Podsumowanie
Reasumując, “serverless computing” nie bez powodu zyskuje na popularności i często staje się pierwszym wyborem przy projektowaniu systemów informatycznych. W ciągu ostatnich paru lat rozwiązania serverless computing zyskały miano rozwiązań dojrzałych i niezawodnych. Ich stały rozwój i pojawianie się nowych usług, wyznacza jeden z głównych trendów, jakim kierują się twórcy oprogramowania. Dziś usługi serverless są dostępne u wszystkich największych dostawców chmury, co pozwala na znalezienie oferty najbardziej odpowiadającej naszym wymaganiom. Nie zapominajmy jednak, że wdrożenie tego rozwiązania wiąże się również z konkretnymi trudnościami. Warto rozważyć pomoc sprawdzonego, certyfikowanego partnera, który usprawni cały proces. TT PSC z powodzeniem przeprowadziło wiele wdrożeń chmurowych dla klientów z różnych gałęzi przemysłu, wykorzystując różne platformy. To pozwala nam utwierdzić się w przekonaniu, że długoterminowe korzyści rozwiązania serverless są warte rozważenia podczas projektowania systemów informatycznych w naszej organizacji.
Więcej o możliwościach i zastosowaniach rozwiązań chmurowych dowiesz się tutaj.