Serverless computing. Mniej administratorów, więcej programistów?

Już dostępne usługi serverless/FAS oraz wybiegająca w przyszłość koncepcja NoOps to dobre przykłady rozwoju technologii ściśle związanej z automatyzacją zarządzania systemami IT. Może to doprowadzić do sytuacji, że w ciągu kilkunastu lat większość administratorów straci pracę, a w firmowych zespołach IT pozostaną tylko deweloperzy tworzący nowe oprogramowanie i usługi.

Serverless computing to idea, której praktyczna realizacja pojawiła się na rynku pięć lat temu, gdy Amazon wprowadził usługi AWS Lambda. Jest kojarzona głównie z chmurą, choć technologia serverless może być wykorzystana również on-premise, w firmowych centrach danych. Prekursorem koncepcji systemu serverless działającego w chmurze są usługi Infrastructure as a Service. W ich przypadku podstawowe zasoby, serwery, pamięci masowe i infrastruktura sieciowa są zarządzane przez dostawcę usług, który zapewnia skalowalność na żądanie.

Serverless jest rozwinięciem tej koncepcji. Inaczej niż w przypadku IaaS, kiedy użytkownik wynajmuje i płaci za określone w umowie zasoby, nawet jeśli nie są one w danej chwili potrzebne, w modelu serverless aplikacje są uruchamiane i wykonywane przy wykorzystaniu tylko takich zasobów pamięci i mocy obliczeniowej, które są niezbędne do realizacji wymaganych funkcji. Aplikacje są uruchamiane na żądanie, to znaczy wtedy, gdy pojawią się dane, które mają zostać przetworzone. Proces uruchamiania jest zautomatyzowany. Gdy nie ma danych, aplikacja jest bezczynna i nie wykorzystuje zasobów.

Nie trzeba wcześniej kupować określonej mocy obliczeniowej i pojemności pamięci oraz płacić, nawet jeśli nie jest ona wykorzystana, bo to dostawca usług zajmuje się zarządzaniem zasobami, ich zwalnianiem i przydzielaniem do zadań – słowem, ich optymalizacją i efektywnym wykorzystaniem. Użytkownik płaci jedynie za wykonanie jakiejś funkcji lub zadania i nie musi uzgadniać z dostawcą usług, jak często będą one wywoływane. Dlatego też synonimem dla określenia chmurowego systemu typu serverless jest usługa FaaS, czyli Functions as a Service.

Z technicznego punktu widzenia usługi IaaS lub PaaS (Platform as a Service) też nie wymagają od użytkowników zarządzania fizycznymi serwerami. W dalszym ciągu użytkownik musi jednak zainstalować system operacyjny, skonfigurować wirtualne serwery i system sieciowy, zainstalować i dbać o aktualizację aplikacji oraz monitorować działanie systemu. Przy PaaS pracy jest trochę mniej, ale w dalszym ciągu użytkownik musi zdecydować, jaka liczba wirtualnych serwerów jest mu potrzebna, jak zoptymalizować ich wykorzystanie, i sam martwić się o skalowanie systemu.

FaaS idzie dalej. Użytkownik musi tylko przygotować aplikacje, a działanie serwerów i infrastruktury w ogóle go nie interesuje.

Obecnie nie ma jednak jednolitej definicji systemu serverless lub FaaS i ich funkcje mogą się różnić zależnie od dostawcy. Dotyczy to zarówno usług chmurowych, jak i rozwiązań przeznaczonych do instalacji w firmowym centrum danych. Wśród głównych dostępnych obecnie na rynku usług typu FaaS można wymienić: AWS Lambda, Azure Functions i Google Cloud Functions.

Usługi serverless można uruchomić on-premise, w firmowym centrum danych. Oznacza to oczywiście, że trzeba zbudować i utrzymywać odpowiednią infrastrukturę. Wśród dostawców tego typu rozwiązań należy wymienić Microsoft (Azure Stack) lub IBM (OpenWhisk). Rynek się szybko zmienia i jest coraz więcej innych firm, które oferują tego typu rozwiązania.

Serverless computing. Wady technologii

Decyzja o wyborze usług serverless lub rezygnacji z nich to kwestia doboru odpowiedniego narzędzia do rozwiązania problemu. Technologia bezserwerowa nie jest lekarstwem na wszystko, a po prostu kolejnym wartym rozważenia narzędziem, które może być wykorzystane przez przedsiębiorstwa.

Jeśli firma zdecyduje się na migrację części lub wszystkich aplikacji i danych na platformę serverless, musi pamiętać o wadach takiego rozwiązania.

Typowe wady w standardowej wersji usług FaaS to mniejsza wydajność obliczeniowa i ograniczenia dostępnej pojemności pamięci oraz objętości uruchamianego kodu w porównaniu do systemu wykorzystującego serwery lokalne lub usługi IaaS. Oprócz tego przeniesienie odpowiedzialności za zarządzanie serwerami na dostawcę usługi oznacza, że to on jest odpowiedzialny za powiązane funkcje bezpieczeństwa i monitorowania pracy serwerów.

Aby kontrolować koszty, dostawcy określają maksymalny czas wykonania funkcji. Obecnie jest to pięć minut dla AWS Lambda i Azure Functions. Ograniczenie czasu ma wadę, bo dla niektórych procesów, takich jak aktualizacja bazy danych, może być trudne do zaakceptowania. Podobnie jest z aplikacjami, które muszą wykonać wiele połączeń z innymi usługami, aby zwrócić wynik. W niektórych przypadkach operacje takie mogą trwać dłużej niż pięć minut.

Kod nie powinien też być zbyt skomplikowany. Istnieją ograniczenia zależne od dostawcy. Każdy host ma maksymalny rozmiar na objętość przesyłanego kodu (na przykład 50 MB dla AWS Lambda). Określony jest maksymalny czas wykonania funkcji, np. w AWS Lambda jest to pięć minut, a każda funkcja aplikacji jest ograniczona przez ilość dostępnej pamięci i moc procesora.

Serverless computing. Czy przyszłość to NoOps

Popularyzacja usług chmurowych oraz technologie sztucznej inteligencji i uczenia maszynowego przyspieszają rozwój automatyzacji procesów zarządzania. Czy administratorzy zaczną tracić pracę? Nie, przynajmniej nie w ciągu najbliższych kilku czy kilkunastu lat.

Tradycyjnie w przedsiębiorstwie zespół programistów odpowiedzialny jest za zbieranie wymagań biznesowych dotyczących oprogramowania i pisanie kodu. Testują oni swój program w izolowanym środowisku programistycznym w celu zapewnienia jakości i, jeśli wymagania są spełnione, przekazują kod zespołowi operacyjnemu, który wdraża oraz utrzymuje program od tego momentu.

Wraz z technologią serverless pojawiła się koncepcja NoOps. Zakłada ona, że wszystkie zadania operacyjne zostaną zautomatyzowane. Dewelopera nie będzie interesować, na jakiej platformie sprzętowej i programowej tworzone aplikacje lub usługi będą uruchamiane.

Według analityków Forrestera głównym celem NoOps jest całkowita automatyzacja wdrażania, monitorowania aplikacji i zarządzania aplikacjami oraz infrastrukturą, na której te aplikacje działają. Inteligentne wykorzystanie zasobów – sprzętu, oprogramowania i ludzi – ma pozwolić na zmniejszenie ich marnotrawstwa i związanych z tym kosztów.

Może się wydawać, że autonomicznie systemy IT nowej generacji spowodują, iż administratorzy staną się niepotrzebni. Jednak tak nie jest. Na przykład wciąż ktoś będzie musiał skonfigurować system sieciowy, aby zapewnić programistom możliwość sprawdzenia, kompilacji i ostatecznego wdrożenia kodu czyli przeniesienie oprogramowania ze stacji roboczej dewelopera do chmury. Dodatkowo niezbędne jest połączenie aplikacji działającej w chmurze z odpowiednimi danymi.

Administratorzy nie będą musieli zajmować się planowaniem niezbędnej mocy obliczeniowej lub pojemności pamięci, wdrażaniem aplikacji, skalowaniem systemu, instalacją aktualizacji itd. I to jest właśnie NoOps.


TOP 200