Co to jest Serverless?

42

Wszyscy dostawcy usług w chmurze sprzedają swoje „bezserwerowe” rozwiązania. Obietnicą jest to, że bezserwerowe zastąpi sposób, w jaki programiści opracowują swoje oprogramowanie, a operacje zarządzają nim w produkcji.

Co to jest „bezserwerowy”? Gdzie można dowiedzieć się więcej na ten temat i jak można go dzisiaj wykorzystać?

Jewgienij
źródło
przetwarzanie bezserwerowe jest „bezserwerowe”, ponieważ „burger z kurczaka” jest wegański, ponieważ osobiście nie spotkałeś kurczaka
Sai Addanki

Odpowiedzi:

43

Artykuł Wikipedii na temat obliczeń bezserwerowych stanowi dobre wprowadzenie do tego tematu:

Obliczenia bezserwerowe, znane również jako funkcja jako usługa (FaaS), to model wykonywania kodu przetwarzania w chmurze, w którym dostawca chmury w pełni zarządza uruchamianiem i zatrzymywaniem platformy kontenerowej funkcji jako usługi (PaaS) niezbędnej do obsługi żądań i żądań są rozliczane według abstrakcyjnej miary zasobów wymaganych do spełnienia żądania, a nie za maszynę wirtualną, za godzinę.

Chodzi o to, że programista nie powinien wcale troszczyć się o infrastrukturę serwera . Dostawca chmury zarządza serwerami fizycznymi, używanym systemem operacyjnym i wszystkimi tradycyjnymi trudnościami związanymi z uruchomieniem serwera.

Obliczenia bezserwerowe zmieniają architekturę z myślenia o tym, co robią maszyny, na funkcje . AWS Lambda to przykład, który przychodzi na myśl - płacisz i uruchamiasz funkcje , nie wspominając o tym, jaki typ infrastruktury fizycznej działa poniżej. Istnieją również konkurencyjne hosty bezserwerowe, takie jak Azure Functions (lub możesz po prostu wyszukać, jeśli nie jesteś zainteresowany żadnym z nich).

Jest wiele zalet niewymagania serwera (choć w niektórych przypadkach musisz pisać nieco inaczej niż do tej pory, ponieważ jest to zupełnie inna architektura):

  • Skalowalność zasadniczo jest bezpłatna - ponieważ po prostu płacisz za uruchomienie funkcji, dostawca chmury może z łatwością poświęcić więcej sprzętu w razie potrzeby do uruchomienia kodu. Możesz także potencjalnie skalować wraz ze wzrostem popytu, zamiast płacić stałą stawkę, niezależnie od tego, czy Twoja aplikacja jest używana raz czy milion razy.

  • Oprogramowanie i sprzęt serwerowy nie muszą już być zarządzane przez programistę - zajmuje się tym dostawca chmury. Jeśli kiedykolwiek używałeś czegoś takiego jak Arch na serwerze, będziesz wiedział, jak łatwo jest usunąć krytyczny pakiet i wszystko zepsuć!

  • Pozwala to programistom skupić się na tym, w czym są dobrzy - w kodzie . Większość programistów prawdopodobnie nie będzie świetna zarówno pod względem infrastruktury serwerów, jak i programowania - bezserwerowy po prostu usuwa jeden problem z równania.

Aurora0001
źródło
„nie powinienem wcale troszczyć się o infrastrukturę serwerową”. To naprawdę Dobra Rzecz, ponieważ z mojego doświadczenia wynika, że ​​zbyt wiele z nich już / nie /, z katastrofalnymi konsekwencjami!
Phill W.
15

Martin Fowler ma dobry przegląd:
https://martinfowler.com/articles/serverless.html

TL; DR
„Bezserwerowy” opisuje tworzenie aplikacji i architekturę, która projektuje aplikacje, w których infrastruktura jest efemeryczna , co oznacza, że ​​zazwyczaj są one oparte na kontenerach i mogą „wchodzić i wychodzić” w oparciu o mechanizm dynamicznego skalowania. Wskazuje to na użycie bezstanowych architektur zależnych od technologii rozproszonych (takich jak magazyny kluczy / wartości).

Dave Swersky
źródło
2
Nie tylko ulotny, ale całkowicie wyabstrahowany. W wielu nowoczesnych konfiguracjach bezserwerowych (takich jak ASS AWS EC2) infrastruktura jest również efemeryczna; instancja EC2 w ASG może zostać zakończona w dowolnym momencie.
Adrian
14

„Bezserwerowy”, jak wiele rzeczy w naszej przestrzeni, staje się przeciążonym terminem. Ale ogólnie oznacza to „Funkcjonalnie, nasza architektura nie zależy od udostępniania lub bieżącej konserwacji serwera”

Pierwsze, co przychodzi mi do głowy, to jednostronna aplikacja javascript, która korzysta z pamięci lokalnej i jest przechowywana na czymś takim jak Amazon S # lub Github Pages (lub dowolna strona statyczna - to tylko typowe przykłady). Wyobraź sobie coś w stylu aplikacji typu „todo” lub „załatwianie spraw”, która działa całkowicie w przeglądarce. Twoja przeglądarka trafia na usługę taką jak S3, aby pobrać kod, a wszystkie przechowywane elementy są przechowywane w pamięci lokalnej w przeglądarce. Nie ma serwera, który utrzymasz w tym celu.

Druga instancja, która jest nieco bardziej skomplikowana (a także ta, która spopularyzowała termin „bez serwera”), korzysta z usługi takiej jak AWS Lambda. Pozwól, że wyjaśnię to, przedstawiając rozwiązany problem:

Wiele razy w mojej karierze rozwiązałem problem biznesowy dla klienta z niewiele więcej niż kodem ruby, który okresowo wyodrębniał, przekształcał i ładował (zwykle napisany jako zadanie rake). Po rozwiązaniu zwykle zautomatyzowałem go za pomocą crona. Potem pojawia się problem: „gdzie mam hostować to, co działa raz na godzinę?” W przypadku niektórych klientów skonfigurowaliśmy serwer w ich istniejącej infrastrukturze. Dla innych stworzyliśmy instancję EC2, mimo że w 99% przypadków była ona bezczynna. W obu przypadkach istnieje serwer, który wymaga obsługi administracyjnej, łatania, monitorowania, aktualizacji itp.

Dzięki Amazon Lambda mogę podjąć to zadanie prowizji i uruchomić je w swojej usłudze jako czystą „funkcję”. Mogę to nawet zaplanować. Ten klient nie potrzebowałby już infrastruktury do tak prostej rzeczy raz na godzinę.

W „bezserwerowym” nadal istnieje serwer, podobnie jak w „chmurze” jest jeszcze komputer. Jest na nim tylko poziom abstrakcji, który bierze na siebie część odpowiedzialności za środowisko.

David Bock
źródło
Moje poparcie dla prawdziwego przykładu pracy raz na godzinę, która zwykle wymagała EC2. Teraz potrzebujesz tylko funkcji Lambda!
HopeKing
10

Wszystkie świetne odpowiedzi już. Przeglądałem wpis na blogu Thinking Serverless - jak nowe podejście zaspokaja potrzeby współczesnego przetwarzania danych w HighScalability, gdzie natknąłem się na to doskonałe wyjaśnienie tego, co oznacza brak serwera:

Wyrażenie „bezserwerowy” nie oznacza, że ​​serwery nie są już zaangażowane. Oznacza to po prostu, że programiści nie muszą już tyle o nich myśleć. Zasoby obliczeniowe są wykorzystywane jako usługi bez konieczności zarządzania fizycznymi możliwościami lub limitami. Dostawcy usług coraz częściej przejmują odpowiedzialność za zarządzanie serwerami, magazynami danych i innymi zasobami infrastruktury… Przejście bez serwera pozwala deweloperom przenieść się z poziomu serwera na poziom zadania. Rozwiązania bezserwerowe pozwalają programistom skoncentrować się na tym, co musi zrobić ich aplikacja lub system, eliminując złożoność infrastruktury zaplecza.

I jeszcze jedna nauka z mojego osobistego doświadczenia w budowaniu infrastruktury bez serwerów:

  • Potokowe serwery danych nie muszą tak naprawdę działać w czasie rzeczywistym. Można budować wydajne, bezserwerowe potoki przetwarzania wsadowego za pomocą mechanizmów ostrzegawczych AWS CloudWatch, które pozwalają monitorować narzędzia i zgłaszać alarmy dla (AWS) Lambda w celu obliczenia.

Na przykład: przechowuj pliki w kolejce AWS SQS. Gdy liczba wiadomości w kolejce osiągnie 10, uruchom zdarzenie dla Lambda.

Dawny33
źródło
6

Oprócz prostego wyjaśnienia definicji terminu „bez serwera”, pochodzenie tego terminu i jego historia dają także pewien wgląd w jego znaczenie. Pojęcie pochodzi z JAWS ram przez Austen Collins , który został później przemianowany jako Serverless . Dowiedziałem się o tym po raz pierwszy w sesji AWS re: Invent 2015 , w której można pomóc w datowaniu koncepcji. Oto, co faktycznie ukształtowało termin Bezserwera, który następnie szybko rozprzestrzenił się na inne systemy chmurowe:

Jiri Klouda
źródło