{"id":33935,"date":"2019-10-31T21:55:27","date_gmt":"2019-10-31T18:55:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/serverless-po-stoechkam\/"},"modified":"2019-10-31T21:55:27","modified_gmt":"2019-10-31T18:55:27","slug":"serverless-po-stoechkam","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/serverless-po-stoechkam","title":{"rendered":"Serverless w segmentach","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Serverless w segmentach\" src=\"\/wp-content\/uploads\/2019\/05\/cea6dc9da0a3a1b0241246cdf3eba900.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nServerless to nie o fizycznym braku serwer\u00f3w. To nie jest \"zab\u00f3jca\" kontener\u00f3w ani chwilowy trend. To nowe podej\u015bcie do budowania system\u00f3w w chmurze. W dzisiejszym artykule zajmiemy si\u0119 architektur\u0105 aplikacji Serverless, zobaczymy, jak\u0105 rol\u0119 pe\u0142ni dostawca us\u0142ug Serverless oraz projekty open-source. Na koniec porozmawiamy o kwestiach zastosowania Serverless.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nChc\u0119 napisa\u0107 cz\u0119\u015b\u0107 serwera aplikacji (nawet sklepu internetowego). Mo\u017ce to by\u0107 czat, serwis do publikacji tre\u015bci lub r\u00f3wnowa\u017cnik obci\u0105\u017cenia. W ka\u017cdym przypadku b\u0119dzie sporo problem\u00f3w do rozwi\u0105zania: trzeba przygotowa\u0107 infrastruktur\u0119, okre\u015bli\u0107 zale\u017cno\u015bci aplikacji, pomy\u015ble\u0107 o systemie operacyjnym hosta. Nast\u0119pnie trzeba b\u0119dzie zaktualizowa\u0107 kilka komponent\u00f3w, kt\u00f3re nie wp\u0142ywaj\u0105 na dzia\u0142anie reszty monolitu. No i nie zapominajmy o skalowaniu pod obci\u0105\u017ceniem.<\/p>\n<p>A co je\u015bli we\u017amiemy efemeryczne kontenery, w kt\u00f3rych wymagane zale\u017cno\u015bci s\u0105 ju\u017c zainstalowane, a same kontenery s\u0105 izolowane od siebie i od systemu operacyjnego hosta? Podzielimy monolit na mikrous\u0142ugi, z kt\u00f3rych ka\u017cd\u0105 mo\u017cna aktualizowa\u0107 i skalowa\u0107 niezale\u017cnie od innych. Umieszczaj\u0105c kod w takim kontenerze, mog\u0119 go uruchamia\u0107 na ka\u017cdej infrastrukturze. Ju\u017c lepiej. <\/p>\n<p>A je\u015bli nie chc\u0119 konfigurowa\u0107 kontener\u00f3w? Nie chc\u0119 my\u015ble\u0107 o skalowaniu aplikacji. Nie chc\u0119 p\u0142aci\u0107 za bezczynno\u015b\u0107 uruchomionych kontener\u00f3w, gdy obci\u0105\u017cenie us\u0142ugi jest minimalne. Chc\u0119 pisa\u0107 kod. Skupi\u0107 si\u0119 na logice biznesowej i wprowadza\u0107 produkty na rynek z pr\u0119dko\u015bci\u0105 \u015bwiat\u0142a. <\/p>\n<p>Takie my\u015bli doprowadzi\u0142y mnie do oblicze\u0144 bezserwerowych. Serverless w tym przypadku oznacza <em>nie fizyczn\u0105 nieobecno\u015b\u0107 serwer\u00f3w, ale brak b\u00f3lu g\u0142owy zwi\u0105zanego z zarz\u0105dzaniem infrastruktur\u0105.<\/em><\/p>\n<p>Idea polega na tym, \u017ce logika aplikacji dzieli si\u0119 na niezale\u017cne funkcje. Maj\u0105 one struktur\u0119 zdarzeniow\u0105. Ka\u017cda z funkcji wykonuje jedno \u201emikrozadanie\u201d. Wszystko, czego wymaga si\u0119 od programisty, to za\u0142adowa\u0107 funkcje do konsoli dostarczonej przez dostawc\u0119 chmury i powi\u0105za\u0107 je z \u017ar\u00f3d\u0142ami zdarze\u0144. Kod b\u0119dzie wykonywany na \u017c\u0105danie w automatycznie przygotowanym kontenerze, a ja zap\u0142ac\u0119 tylko za czas wykonywania. <\/p>\n<p>Zobaczmy, jak teraz b\u0119dzie wygl\u0105da\u0142 proces rozwoju aplikacji.<\/p>\n<h2>Ze strony programisty<\/h2>\n<p>\nWcze\u015bniej zacz\u0119li\u015bmy m\u00f3wi\u0107 o aplikacji dla sklepu internetowego. W tradycyjnym podej\u015bciu g\u0142\u00f3wn\u0105 logik\u0119 systemu realizuje monolityczna aplikacja. A serwer z aplikacj\u0105 dzia\u0142a nieprzerwanie, nawet je\u015bli nie ma obci\u0105\u017cenia.<\/p>\n<p><strong>Aby przej\u015b\u0107 do serverless, dzielimy aplikacj\u0119 na mikrozadania.<\/strong> Dla ka\u017cdej z nich piszemy swoj\u0105 funkcj\u0119. Funkcje s\u0105 niezale\u017cne od siebie i nie przechowuj\u0105 informacji o stanie (stateless). Mog\u0105 by\u0107 nawet napisane w r\u00f3\u017cnych j\u0119zykach. Je\u015bli jedna z nich \u201epadnie\u201d, aplikacja ca\u0142kowicie si\u0119 nie zatrzyma. Architektura aplikacji b\u0119dzie wygl\u0105da\u0107 tak:<\/p>\n<p><img decoding=\"async\" alt=\"Serverless w segmentach\" src=\"\/wp-content\/uploads\/2019\/05\/f62c5c08bbf587766198dbb807123273.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPodzia\u0142 na funkcje w Serverless przypomina prac\u0119 z mikroserwisami. Jednak mikroserwis mo\u017ce wykonywa\u0107 kilka zada\u0144, a funkcja w idealnym przypadku powinna wykonywa\u0107 jedno. Za\u0142\u00f3\u017cmy, \u017ce zadaniem jest zbieranie statystyk i ich wy\u015bwietlanie na \u017c\u0105danie u\u017cytkownika. W podej\u015bciu mikroserwisowym zadanie wykonuje jeden serwis z dwoma punktami dost\u0119pu: do zapisu i odczytu. W obliczeniach bezserwerowych b\u0119d\u0105 to dwie r\u00f3\u017cne funkcje, niezwi\u0105zane ze sob\u0105. Programista oszcz\u0119dza zasoby obliczeniowe, je\u015bli na przyk\u0142ad statystyki s\u0105 aktualizowane cz\u0119\u015bciej, ni\u017c s\u0105 wy\u0142adowywane. <\/p>\n<p>Funkcje Serverless powinny by\u0107 wykonywane w kr\u00f3tkim przedziale czasowym (timeout), kt\u00f3ry okre\u015bla dostawca us\u0142ugi. Na przyk\u0142ad dla AWS timeout wynosi 15 minut. Oznacza to, \u017ce funkcje d\u0142ugoterminowe (long-lived) b\u0119d\u0105 musia\u0142y by\u0107 zmienione zgodnie z wymaganiami \u2013 to jest to, co r\u00f3\u017cni Serverless od innych popularnych dzisiaj technologii (kontenery i Platform as a Service).<\/p>\n<p><strong>Ka\u017cdej funkcji przypisujemy zdarzenie.<\/strong> Zdarzenie to wyzwalacz dzia\u0142ania:<\/p>\n<p><strong>Zdarzenie<\/strong><br \/>\n<strong>Dzia\u0142anie, kt\u00f3re wykonuje funkcja<\/strong><\/p>\n<p>W magazynie za\u0142adowano zdj\u0119cie produktu<br \/>\nSkompresowa\u0107 zdj\u0119cie i za\u0142adowa\u0107 do katalogu<\/p>\n<p>W bazie danych zaktualizowano adres fizycznego sklepu<br \/>\nZa\u0142adowa\u0107 nowe lokalizacje na mapy<\/p>\n<p>Klient p\u0142aci za produkt<br \/>\nRozpocz\u0105\u0107 przetwarzanie p\u0142atno\u015bci<\/p>\n<p>Zdarzeniami mog\u0105 by\u0107 \u017c\u0105dania HTTP, dane strumieniowe, kolejki wiadomo\u015bci itd. \u0179r\u00f3d\u0142a zdarze\u0144 to zmiany lub pojawienie si\u0119 danych. Ponadto funkcje mo\u017cna uruchamia\u0107 na podstawie zegara.<\/p>\n<p>Architektura zosta\u0142a zaplanowana, a aplikacja prawie sta\u0142a si\u0119 bezserwerowa. Nast\u0119pnie przechodzimy do dostawcy us\u0142ugi.<\/p>\n<h2>Ze strony dostawcy<\/h2>\n<p>\nZazwyczaj obliczenia bezserwerowe oferuj\u0105 dostawcy us\u0142ug chmurowych. Nazywa si\u0119 je r\u00f3\u017cnie: Azure Functions, AWS Lambda, Google Cloud Functions, IBM Cloud Functions. <\/p>\n<p>B\u0119dziemy korzysta\u0107 z us\u0142ugi przez konsol\u0119 lub osobisty panel dostawcy. Kod funkcji mo\u017cna za\u0142adowa\u0107 na kilka sposob\u00f3w:<\/p>\n<ul>\n<li>napisa\u0107 kod w wbudowanych edytorach przez konsol\u0119 internetow\u0105,<\/li>\n<li>za\u0142adowa\u0107 archiwum z kodem,<\/li>\n<li>pracowa\u0107 z publicznymi lub prywatnymi repozytoriami git.<\/li>\n<\/ul>\n<p>\nTut konfigurujemy zdarzenia, kt\u00f3re wywo\u0142uj\u0105 funkcj\u0119. W zale\u017cno\u015bci od dostawcy zestawy zdarze\u0144 mog\u0105 si\u0119 r\u00f3\u017cni\u0107.<\/p>\n<p><img decoding=\"async\" alt=\"Serverless w segmentach\" src=\"\/wp-content\/uploads\/2019\/05\/98676fa23a9911aae5758ecdb2cd9a03.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Dostawca zbudowa\u0142 i zautomatyzowa\u0142 system Function as a Service (FaaS) na swojej infrastrukturze:<\/p>\n<ol>\n<li>Kod funkcji trafia do magazynu po stronie dostawcy.<\/li>\n<li>Gdy pojawia si\u0119 zdarzenie, na serwerze automatycznie uruchamiaj\u0105 si\u0119 kontenery z przygotowanym \u015brodowiskiem. Ka\u017cdemu instancji funkcji przypisany jest osobny, izolowany kontener.<\/li>\n<li>Funkcja jest wysy\u0142ana z magazynu do kontenera, obliczana i zwraca wynik.<\/li>\n<li>Liczba r\u00f3wnoleg\u0142ych zdarze\u0144 ro\u015bnie \u2014 ro\u015bnie liczba kontener\u00f3w. System automatycznie si\u0119 skalibruje. Je\u015bli u\u017cytkownicy nie korzystaj\u0105 z funkcji, pozostaje ona nieaktywna.<\/li>\n<li>Dostawca okre\u015bla czas bezczynno\u015bci kontener\u00f3w \u2014 je\u015bli w tym czasie funkcje nie pojawi\u0105 si\u0119 w kontenerze, zostaje on zniszczony.<\/li>\n<\/ol>\n<p>\nW ten spos\u00f3b uzyskujemy Serverless \u00abprosto z pude\u0142ka\u00bb. B\u0119dziemy p\u0142aci\u0107 za us\u0142ug\u0119 w modelu pay-as-you-go i tylko za te funkcje, kt\u00f3re by\u0142y u\u017cywane, oraz tylko za czas ich u\u017cycia.<\/p>\n<p>Aby zaznajomi\u0107 programist\u00f3w z us\u0142ug\u0105, dostawcy oferuj\u0105 do 12 miesi\u0119cy bezp\u0142atnych test\u00f3w, ale ograniczaj\u0105 ca\u0142kowity czas oblicze\u0144, liczb\u0119 zapyta\u0144 w miesi\u0105cu, \u015brodki finansowe lub zu\u017cywane moce.<\/p>\n<p>Podstawow\u0105 zalet\u0105 pracy z dostawc\u0105 jest mo\u017cliwo\u015b\u0107 nie martwienia si\u0119 o infrastruktur\u0119 (serwery, maszyny wirtualne, kontenery). Ze swojej strony dostawca mo\u017ce wdra\u017ca\u0107 FaaS zar\u00f3wno na w\u0142asnych rozwi\u0105zaniach, jak i przy pomocy narz\u0119dzi open-source. O tym porozmawiamy dalej.<\/p>\n<h2>Ze strony open source<\/h2>\n<p>\nW ostatnich kilku latach spo\u0142eczno\u015b\u0107 open-source aktywnie pracuje nad narz\u0119dziami Serverless. W rozw\u00f3j platform bezserwerowych zaanga\u017cowani s\u0105 tak\u017ce najwi\u0119ksze firmy w bran\u017cy:<\/p>\n<ul>\n<li><strong>Google<\/strong> oferuje programistom swoje narz\u0119dzie open-source \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/knative\/\">Knative<\/a><\/noindex>. W jego rozw\u00f3j zaanga\u017cowane by\u0142y IBM, RedHat, Pivotal i SAP;<\/li>\n<li><strong>IBM<\/strong> pracowali nad platform\u0105 Serverless <noindex><a rel=\"nofollow\" href=\"https:\/\/openwhisk.apache.org\/\">OpenWhisk<\/a><\/noindex>, kt\u00f3ra nast\u0119pnie sta\u0142a si\u0119 projektem Apache Foundation;<\/li>\n<li><strong>Microsoft<\/strong> cz\u0119\u015bciowo otworzyli kod platformy <noindex><a rel=\"nofollow\" href=\"https:\/\/azure.microsoft.com\/en-us\/services\/functions\/\">Azure Functions<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nPrace trwaj\u0105 tak\u017ce nad frameworkami serverless. <noindex><a rel=\"nofollow\" href=\"https:\/\/kubeless.io\/\">Kubeless<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/fission.io\/\">Fission<\/a><\/noindex> rozwi\u0105zuj\u0105 si\u0119 wewn\u0105trz wcze\u015bniej przygotowanych klastr\u00f3w Kubernetes, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openfaas.com\/\">OpenFaaS<\/a><\/noindex> dzia\u0142a zar\u00f3wno z Kubernetes, jak i Docker Swarm. Framework pe\u0142ni rol\u0119 swoistego kontrolera \u2013 na \u017c\u0105danie przygotowuje \u015brodowisko wykonawcze wewn\u0105trz klastra, a nast\u0119pnie uruchamia funkcj\u0119.<\/p>\n<p>Frameworki daj\u0105 mo\u017cliwo\u015b\u0107 konfiguracji narz\u0119dzia wed\u0142ug w\u0142asnych potrzeb. Na przyk\u0142ad, w Kubeless deweloper mo\u017ce ustawi\u0107 limit czasu wykonywania funkcji (domy\u015blna warto\u015b\u0107 to 180 sekund). Fission w pr\u00f3bie rozwi\u0105zania problemu zimnego startu proponuje, aby cz\u0119\u015b\u0107 kontener\u00f3w by\u0142a ca\u0142y czas uruchomiona (cho\u0107 wi\u0105\u017ce si\u0119 to z kosztami stanu bezczynnego zasob\u00f3w). OpenFaaS oferuje natomiast zestaw trigger\u00f3w, kt\u00f3re mo\u017cna dostosowa\u0107: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NATs i inne.<\/p>\n<p>Instrukcje dotycz\u0105ce rozpocz\u0119cia pracy mo\u017cna znale\u017a\u0107 w oficjalnej dokumentacji framework\u00f3w. Praca z nimi wymaga nieco wi\u0119kszej wiedzy ni\u017c przy korzystaniu z dostawcy - to przynajmniej umiej\u0119tno\u015b\u0107 uruchomienia klastra Kubernetes za pomoc\u0105 CLI. Na maksymalnym poziomie, w\u0142\u0105czenie do pracy innych narz\u0119dzi open-source (przyk\u0142adowo, mened\u017cera kolejek Kafka).<\/p>\n<p>Bez wzgl\u0119du na to, w jaki spos\u00f3b b\u0119dziemy pracowa\u0107 z Serverless \u2013 przez dostawc\u0119 czy z pomoc\u0105 open-source \u2013 uzyskamy szereg zalet i wad podej\u015bcia Serverless.<\/p>\n<h2>Z perspektywy zalet i wad<\/h2>\n<p>\nServerless rozwija idee infrastruktury kontenerowej i podej\u015bcia mikroserwisowego, w kt\u00f3rym zespo\u0142y mog\u0105 pracowa\u0107 w trybie wieloj\u0119zycznym, nie przywi\u0105zuj\u0105c si\u0119 do jednej platformy. Budowanie systemu staje si\u0119 prostsze, a naprawa b\u0142\u0119d\u00f3w \u0142atwiejsza. Architektura mikroserwisowa pozwala na dodawanie nowego funkcjonalno\u015bci do systemu znacznie szybciej ni\u017c w przypadku aplikacji monolitycznej.<\/p>\n<p><strong>Serverless jeszcze bardziej skraca czas rozwoju,<\/strong> pozwalaj\u0105c deweloperowi skupi\u0107 si\u0119 wy\u0142\u0105cznie na logice biznesowej aplikacji i pisaniu kodu. W efekcie czas wprowadzenia rozwi\u0105za\u0144 na rynek skraca si\u0119.<\/p>\n<p><strong>Dodatkowo otrzymujemy automatyczne skalowanie w odpowiedzi na obci\u0105\u017cenie,<\/strong> a p\u0142acimy tylko za u\u017cywane zasoby i tylko w czasie, gdy s\u0105 one wykorzystywane.<\/p>\n<p>Jak ka\u017cda technologia, Serverless ma wady.<\/p>\n<p><em>Na przyk\u0142ad, tak\u0105 wad\u0105 mo\u017ce by\u0107 czas zimnego startu (\u015brednio do 1 sekundy dla takich j\u0119zyk\u00f3w jak JavaScript, Python, Go, Java, Ruby).<\/em><\/p>\n<p>Z jednej strony, w rzeczy samej czas zimnego startu zale\u017cy od wielu zmiennych: j\u0119zyka, w kt\u00f3rym napisana jest funkcja, liczby bibliotek, obj\u0119to\u015bci kodu, komunikacji z dodatkowymi zasobami (takimi jak bazy danych czy serwery uwierzytelniaj\u0105ce). Poniewa\u017c programista zarz\u0105dza tymi zmiennymi, mo\u017ce skr\u00f3ci\u0107 czas startu. Z drugiej strony, programista nie ma wp\u0142ywu na czas uruchamiania kontenera \u2015 tutaj wszystko zale\u017cy od dostawcy.<\/p>\n<p>Zimny start mo\u017ce przekszta\u0142ci\u0107 si\u0119 w ciep\u0142y, gdy funkcja ponownie wykorzystuje kontener uruchomiony przez poprzednie zdarzenie. Taka sytuacja wyst\u0105pi w trzech przypadkach:<\/p>\n<ul>\n<li>je\u015bli klienci cz\u0119sto korzystaj\u0105 z us\u0142ugi i ro\u015bnie liczba wywo\u0142a\u0144 funkcji;<\/li>\n<li>je\u015bli dostawca, platforma lub framework pozwalaj\u0105 na utrzymanie cz\u0119\u015bci kontener\u00f3w uruchomionych przez ca\u0142y czas;<\/li>\n<li>je\u015bli programista uruchamia funkcje na podstawie zegara (powiedzmy co 3 minuty).<\/li>\n<\/ul>\n<p>\nDla wielu aplikacji zimny start nie jest problemem. Nale\u017cy tutaj kierowa\u0107 si\u0119 rodzajem i celami us\u0142ugi. Op\u00f3\u017anienie startu o sekund\u0119 nie zawsze jest krytyczne dla aplikacji biznesowej, ale mo\u017ce sta\u0107 si\u0119 krytyczne dla s\u0142u\u017cb medycznych. Prawdopodobnie w takim przypadku podej\u015bcie serverless ju\u017c si\u0119 nie sprawdzi.<\/p>\n<p><em>Nast\u0119pn\u0105 wad\u0105 Serverless jest kr\u00f3tki czas \u017cycia funkcji (timeout, w jakim funkcja musi si\u0119 wykona\u0107).<\/em><\/p>\n<p>Jednak, je\u015bli zamierzamy pracowa\u0107 z zadaniami o d\u0142ugim czasie \u017cycia, mo\u017cna zastosowa\u0107 architektur\u0119 hybrydow\u0105 \u2015 po\u0142\u0105czy\u0107 Serverless z inn\u0105 technologi\u0105.<\/p>\n<p><em>Nie wszystkie systemy b\u0119d\u0105 mog\u0142y dzia\u0142a\u0107 w schemacie Serverless.<\/em><\/p>\n<p>Niekt\u00f3re aplikacje nadal b\u0119d\u0105 przechowywa\u0107 dane i stan podczas wykonywania. Niekt\u00f3re architektury pozostan\u0105 monolityczne, a niekt\u00f3re funkcje b\u0119d\u0105 mia\u0142y d\u0142ugi czas \u017cycia. Jednak (jak kiedy\u015b technologie chmurowe, a potem kontenery), Serverless to technologia z du\u017c\u0105 przysz\u0142o\u015bci\u0105.<\/p>\n<p>W tym kontek\u015bcie chcia\u0142bym p\u0142ynnie przej\u015b\u0107 do pytania o zastosowanie podej\u015bcia Serverless.<\/p>\n<h2>Z perspektywy zastosowania<\/h2>\n<p>\nW roku 2018 procent wykorzystania Serverless <noindex><a rel=\"nofollow\" href=\"https:\/\/media.flexera.com\/documents\/rightscale-2019-state-of-the-cloud-report-from-flexera.pdf\">wzros\u0142a o p\u00f3\u0142tora raza<\/a><\/noindex>. W\u015br\u00f3d firm, kt\u00f3re ju\u017c wdro\u017cy\u0142y t\u0119 technologi\u0119 w swoich us\u0142ugach, znajduj\u0105 si\u0119 takie giganty rynku jak Twitter, PayPal, Netflix, T-Mobile, Coca-Cola. Nale\u017cy przy tym zrozumie\u0107, \u017ce Serverless to nie panaceum, a narz\u0119dzie do rozwi\u0105zania okre\u015blonego kr\u0119gu zada\u0144:<\/p>\n<ul>\n<li><strong>Skr\u00f3cenie przestoj\u00f3w zasob\u00f3w.<\/strong> Nie ma potrzeby, aby ca\u0142y czas trzyma\u0107 wirtualn\u0105 maszyn\u0119 dla us\u0142ug, do kt\u00f3rych jest ma\u0142o zapyta\u0144.<\/li>\n<li><strong>Przetwarzanie danych \"w locie\".<\/strong> Kompresja zdj\u0119\u0107, usuwanie t\u0142a, zmiana kodowania wideo, praca z czujnikami IoT, wykonywanie operacji matematycznych.\n<\/li>\n<li><strong>\"Sklejenie\" innych us\u0142ug razem.<\/strong> Repozytorium Git z wewn\u0119trznymi programami, bot czatu w Slack z Jira i kalendarzem.<\/li>\n<li><strong>Balansowanie obci\u0105\u017cenia.<\/strong> Tutaj zatrzymamy si\u0119 na chwil\u0119.<\/li>\n<\/ul>\n<p>\nZa\u0142\u00f3\u017cmy, \u017ce jest us\u0142uga, do kt\u00f3rej przychodzi 50 os\u00f3b. Dla niej stoi wirtualna maszyna z niezbyt mocnym sprz\u0119tem. Okresowo obci\u0105\u017cenie na us\u0142udze wzrasta wielokrotnie. Wtedy s\u0142aby sprz\u0119t nie wytrzymuje.<\/p>\n<p>Mo\u017cna w\u0142\u0105czy\u0107 do systemu balansuj\u0105cy obci\u0105\u017cenie, kt\u00f3ry b\u0119dzie rozdziela\u0107 obci\u0105\u017cenie na trzy wirtualne maszyny. Na tym etapie nie mo\u017cemy dok\u0142adnie prognozowa\u0107 obci\u0105\u017cenia, dlatego trzymamy pewn\u0105 ilo\u015b\u0107 zasob\u00f3w uruchomionych \"na zapas\". I przep\u0142acamy za bezczynno\u015b\u0107. <\/p>\n<p>W takiej sytuacji mo\u017cemy zoptymalizowa\u0107 system poprzez hybrydowe podej\u015bcie: pozostawiamy jedn\u0105 wirtualn\u0105 maszyn\u0119 za balansuj\u0105cym obci\u0105\u017ceniem i stawiamy link do Endpointu Serverless z funkcjami. Je\u015bli obci\u0105\u017cenie przekracza pr\u00f3g \u2014 balansuj\u0105cy obci\u0105\u017cenie uruchamia instancje funkcji, kt\u00f3re przejmuj\u0105 cz\u0119\u015b\u0107 przetwarzania zapyta\u0144.<\/p>\n<p><img decoding=\"async\" alt=\"Serverless w segmentach\" src=\"\/wp-content\/uploads\/2019\/05\/79262c19faba29a4639a05e3097f7914.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nW ten spos\u00f3b Serverless mo\u017cna u\u017cywa\u0107 tam, gdzie konieczne jest intensywne przetwarzanie du\u017cej liczby zapyta\u0144, chocia\u017c nie zbyt cz\u0119sto. W tym przypadku uruchomienie kilku funkcji na 15 minut jest bardziej op\u0142acalne ni\u017c ci\u0105g\u0142e trzymanie wirtualnej maszyny lub serwera.<\/p>\n<p>Pomimo wszystkich zalet oblicze\u0144 bezserwerowych, przed wdro\u017ceniem przede wszystkim nale\u017cy oceni\u0107 logik\u0119 aplikacji i zrozumie\u0107, jakie problemy Serverless mo\u017ce rozwi\u0105za\u0107 w danym przypadku. <\/p>\n<h2>Serverless i Selectel<\/h2>\n<p>\nW Selectel ju\u017c <noindex><a rel=\"nofollow\" href=\"https:\/\/kb.selectel.ru\/42078178.html?utm_source=habr.com&amp;amp;utm_medium=referral&amp;amp;utm_campaign=Functions_Serverless_Article_170519\">u\u0142atwili\u015bmy prac\u0119 z Kubernetes<\/a><\/noindex> przez nasz panel sterowania. Teraz budujemy nasz\u0105 w\u0142asn\u0105 platform\u0119 FaaS. Chcemy, aby programi\u015bci mogli rozwi\u0105zywa\u0107 swoje problemy za pomoc\u0105 Serverless przez wygodny, elastyczny interfejs.<\/p>\n<p>Je\u015bli masz pomys\u0142y na to, jaka powinna by\u0107 idealna platforma FaaS i jak chcesz u\u017cywa\u0107 Serverless w swoich projektach, podziel si\u0119 nimi w komentarzach. Uwzgl\u0119dnimy Twoje sugestie przy tworzeniu platformy.<br \/>\n\u00a0<br \/>\nMateria\u0142y wykorzystane w artykule:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rightscale.com\/lp\/state-of-the-cloud\">Procent wykorzystania Serverless wzr\u00f3s\u0142 o p\u00f3\u0142tora razy (pe\u0142ny raport RightScale)<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mikhail.io\/serverless\/coldstarts\/aws\/\">Jak czas zimnego uruchomienia zale\u017cy od j\u0119zyka aplikacji<\/a><\/noindex><\/li>\n<\/ul>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/selectel\/blog\/452266\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Serverless \u2015 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u042d\u0442\u043e \u043d\u0435 \u00ab\u0443\u0431\u0438\u0439\u0446\u0430\u00bb \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0438 \u043d\u0435 \u043c\u0438\u043c\u043e\u043b\u0435\u0442\u043d\u044b\u0439 \u0442\u0440\u0435\u043d\u0434. \u042d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c \u0432 \u043e\u0431\u043b\u0430\u043a\u0435. \u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a\u043e\u0441\u043d\u0435\u043c\u0441\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b Serverless-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u0443\u044e \u0440\u043e\u043b\u044c \u0438\u0433\u0440\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 Serverless-\u0443\u0441\u043b\u0443\u0433\u0438 \u0438 open-source \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Serverless. \u042f \u0445\u043e\u0447\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0434\u0430 \u0445\u043e\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430). [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25594,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33935","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Serverless \u2015 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/serverless-po-stoechkam\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Serverless \u043f\u043e \u0441\u0442\u043e\u0435\u0447\u043a\u0430\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Serverless \u2015 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/serverless-po-stoechkam\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:55:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Serverless po stawkach | ProHoster","description":"Serverless to nie o fizycznej nieobecno\u015bci serwer\u00f3w.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/serverless-po-stoechkam","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Serverless \u043f\u043e \u0441\u0442\u043e\u0435\u0447\u043a\u0430\u043c | ProHoster","og:description":"Serverless \u2015 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/serverless-po-stoechkam","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:55:27+00:00","article:modified_time":"2019-10-31T18:55:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33935","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 17:17:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:31:21","updated":"2026-01-21 17:17:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33935","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=33935"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33935\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/25594"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=33935"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=33935"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=33935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}