Co kilka lat, w świecie IT, pojawia się nowe, przełomowe rozwiązanie. Aktualnie, wszystkie oczy są skupione na Machine Learning(ML) oraz Sztucznej Inteligencji(AI). Wcześniej były to kontenery, do których istnienia, chyba już wszyscy zdążyli przywyknąć. Jak się okazuje, to co kilka lat temu było absolutną nowością, dziś jest rutyną.
Pomimo że konteneryzacja, rozwiązała wiele ważnych problemów, jako innowacja, nie była za bardzo odkrywcza. Co więcej, z perspektywy zarządzania zespołem, tylko pogłębiła odwieczny podział na administratorów i programistów.
Miała jednak swoje zalety. Bez wątpienia, w porównaniu do poprzednich rozwiązań, zmniejszyła tarcia między zespołami, ułatwiając ich współpracę. W efekcie procesy CI/CD stały się bardziej powtarzalne i efektywne. Oznaczało to również, mniej problemów podczas publikacji zmian i krótszy czas potrzebny do wdrożenia produktu na rynek.
Co robią kontenery? Upraszczając, zamykają Twój stary software w ustandaryzowaną paczkę, która jest łatwiejsza do obsługi przez adminów. Jest to szczególnie istotne w kontekście zarządzania zależnościami oraz ustawieniami środowiska. Jednak nie ma nic za darmo i usprawnienia te mają swoją cenę. Często wiążą się z bardziej skomplikowanym procesem budowy aplikacji i pełną wyzwań administracją specjalistycznych systemów do orkiestracji kontenerów. Ponadto nie uda się ich wdrożyć bez wysoko wykwalifikowanego zespołu.
A co, jeśli jest na to lepszy sposób?
W 2014 roku AWS zaprezentował nową usługę chmurową, która zrewolucjonizowała sposób, w jaki myślimy o dostarczaniu oprogramowania. AWS Lambda – w modelu Function as a Service (FaaS) – wraz z wieloma innymi natywnymi dla chmury usługami, rozpoczęły coś, co dziś nazywamy serverless.
Czym jest to całe serverless?
Technopedia definiuje serverless computing jako kategorię rozwiązań, w których Klient nie musi mieć serwerów –aby uruchamiać swój kod, ale uzyskuje do nich dostęp wtedy, kiedy są mu potrzebne. Dostawca chmury uruchamia i zatrzymuje usługę w modelu PaaS, w odpowiedzi na określone requesty i w zależności od ich ilości nalicza opłaty.
Dlaczego mam się tym przejmować?
Bardzo możliwe, że AWS Lambda i serverless są najbardziej znane ze względu na swój model rozliczeniowy, który nazywa się Pay As You Go. W architekturze serverless, nie ponosisz kosztów nieużywanych zasobów. Rozliczasz się tylko za to, co jest aktywnie wykorzystywane (np. obsługę zapytań od użytkowników). Płacisz również za usługę storage, której używasz do przechowywania swoich plików (Amazon S3, DynamodDB oraz bazy danych Aurora).
Specyfika tego modelu pozwala znacząco ograniczyć wydatki. Zwłaszcza w sytuacji, kiedy jest on zastosowany w odniesieniu do konkretnego problemu. Wytłumaczmy to na przykładzie aplikacji biznesowej, która jest używana tylko podczas biurowych godzin pracy. W tradycyjnych architekturach (używających serwerów lub kontenerów), generuje ona koszty, nawet jeśli aktualnie jest nieużywana. Jeśli uśrednimy, że biura pracują przez 8 godzin dziennie (od 8 do 16), daje nam to 14 godzin, podczas których, aplikacja pozostaje bezczynna. Do tego dochodzą również weekendy. Prosta matematyka pokazuje, że to rozwiązanie, na przestrzeni tygodnia, jest wykorzystywane tylko w 30%. W Serverless jest inaczej. Płacisz tylko za to, czego rzeczywiście używasz. Tym samym w tym modelu efektywność czasu pracy, zawsze wynosi 100%.
Co więcej, serverless prawie dosłownie oznacza „martw się mniej o serwery”(eng.”worry about servers less„). Bez względu na wybrane rozwiązanie, aby nasza aplikacja działała, dostawca chmury musi używać serwerów i kontenerów pracujących w tle. Jednak, w odróżnieniu od ich innych rozwiązań, przy serverless, my – Klienci – nie musimy się o to martwić.
Językowo serverless jest jak wireless. Podobnie jak Twoje domowe WiFi, aby działać musi być podłączone do sieci dostawcy Internetu, przewodem lub światłowodem . Natomiast Ty się tym nie przejmujesz, po prostu cieszysz się bezprzewodowym Internetem na swoim laptopie lub telefonie.
Nieobecność serwerów i tradycyjnej architektury sieciowej ma ogromne znaczenie w szybszym i tańszym dostarczaniu oprogramowania. Oszczędza ogromną ilość czasu pracy programistów i projektantów, co w konsekwencji prowadzi do skrócenia czasu potrzebnego na wdrożenie produktu na rynek (co jest zawsze mile widziane przez interesariuszy biznesowych).
Co więcej, w odróżnieniu od tradycyjnej architektury, serverless jest natywnie wysokodostępne i skalowalne. Oznacza to, że rozwiązania wymagające wyżej wymienionych właściwości mogą być dostarczane szybciej i taniej, ponieważ dostawca usług w chmurze automatyzuje wszystkie trudne procesy. Nie ma już potrzeby tworzenia klastrów ani grup autoskalujących na własną rękę.
Po wdrożeniu oprogramowania, serverless pozwala również oszczędzić czas potrzebny na jego utrzymanie. Dzieje się tak, ponieważ dostawca chmury wykonuje za Ciebie żmudne zadania, jak paczowanie serwerów lub aktualizacje zabezpieczeń. Co ciekawe w wielu przypadkach, rola admina w takim projekcie jest zupełnie niepotrzebna, ponieważ serverless nie wymaga tak wielu zasobów sieciowych, jak tradycjne maszyny wirtualne w chmurze.
Co nie jest bez znaczenia, rozwiązania serverless potrafią być znacznie bezpieczniejsze, niż aplikacje monolityczne. Aplikacja napisana w architekturze monolitycznej, aby działać, potrzebuje wszystkich niezbędnych uprawnień oraz poznać nasze potencjalne sekrety (np. hasło do bazy danych, itp.). Aplikacje serverless są zbudowane z wielu pojedynczych komponentów (funkcje Lambda), które mają tylko te uprawnienia, których są wymagane do ich prawidłowego działania.
Jak to działa w praktyce? Wyobraź sobie system serverless, jako łódź podwodną złożoną z wielu przedziałów oddzielonych od siebie przegrodami.
W przypadku włamania do funkcji Lambda atakujący uzyskuje dostęp tylko do kilku uprawnień. Uszkodzony okręt podwodny nie tonie, ponieważ został zaprojektowany tak, aby przetrwać zalanie jednego przedziału. W tradycyjnych aplikacjach, pojedyncza luka może otworzyć dostęp do całego systemu, dlatego konsekwencje takiego włamania, są znacznie bardziej dotkliwe.
Podsumowanie
Podsumowując, serverless jest czymś nowym. Przełomem, który zaciera wieloletni bagaż podziału na programistów i administratorów. Przybliża nas do siebie i do prawdziwego znaczenia metodyki DevOps. Dzięki temu developerzy są bliżej środowiska produkcyjnego i mają bardzo znaczący wpływ na to, jak ono wygląda, decydując o sposobie wykorzystania poszczególnych usług.
W świecie serverless powyższe role przenikają się ze sobą. Czy zasadna jest teza, że stanowisko administratora IT powinno zostać zdefiniowane na nowo? A może za kilka lat zupełnie przestanie istnieć? Jeśli okaże się to prawdą, będzie to najbardziej znacząca i niespodziewana zmiana w branży IT w ostatnich latach.
Jeśli szukasz pomocy w zarządzaniu infrastrukturą chmurową lub rozważasz migrację do chmury, skontaktuj się z nami.