{"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\/sk\/blog\/administrirovanie\/serverless-po-stoechkam","title":{"rendered":"Serverless po rebr\u00ed\u010dkoch","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Serverless po rebr\u00ed\u010dkoch\" src=\"\/wp-content\/uploads\/2019\/05\/cea6dc9da0a3a1b0241246cdf3eba900.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nServerless nie je o fyzickej absencii serverov. Nie je to \u201azabijak\u2018 kontajnerov ani prechodn\u00fd trend. Je to nov\u00fd pr\u00edstup k budovaniu syst\u00e9mov v cloude. V dne\u0161nom \u010dl\u00e1nku sa zameriame na architekt\u00faru Serverless aplik\u00e1ci\u00ed, pozrieme sa, ak\u00fa \u00falohu zohr\u00e1va poskytovate\u013e Serverless slu\u017eieb a open-source projekty. Na konci sa porozpr\u00e1vame o ot\u00e1zkach pou\u017eitia Serverless.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nChcem nap\u00edsa\u0165 serverov\u00fa \u010das\u0165 aplik\u00e1cie (aj ke\u010f aj internetov\u00e9ho obchodu). M\u00f4\u017ee to by\u0165 aj chat, slu\u017eba na publikovanie obsahu alebo vyva\u017eova\u010d z\u00e1\u0165a\u017ee. V ka\u017edom pr\u00edpade ma \u010dak\u00e1 mno\u017estvo starost\u00ed: budem musie\u0165 pripravi\u0165 infra\u0161trukt\u00faru, ur\u010di\u0165 z\u00e1vislosti aplik\u00e1cie a zamyslie\u0165 sa nad opera\u010dn\u00fdm syst\u00e9mom hostite\u013ea. Potom bude potrebn\u00e9 aktualizova\u0165 mal\u00e9 komponenty, ktor\u00e9 nezasahuj\u00fa do fungovania ostatn\u00e9ho monolitu. A nezabudneme ani na \u0161k\u00e1lovanie pod z\u00e1\u0165a\u017eou.<\/p>\n<p>A \u010do ak vezmeme efem\u00e9rne kontajnery, v ktor\u00fdch s\u00fa po\u017eadovan\u00e9 z\u00e1vislosti u\u017e predin\u0161talovan\u00e9 a samotn\u00e9 kontajnery s\u00fa izolovan\u00e9 jeden od druh\u00e9ho a od OS hostite\u013ea? Monolit rozdel\u00edme na mikroservisy, z ktor\u00fdch ka\u017ed\u00fd sa m\u00f4\u017ee aktualizova\u0165 a \u0161k\u00e1lova\u0165 nez\u00e1visle od ostatn\u00fdch. Umiestnen\u00edm k\u00f3du do tak\u00e9ho kontajnera ho m\u00f4\u017eem spusti\u0165 na akejko\u013evek infra\u0161trukt\u00fare. U\u017e je to lep\u0161ie. <\/p>\n<p>A \u010do ak sa mi nechce nastavova\u0165 kontajnery? Nechce sa mi myslie\u0165 na \u0161k\u00e1lovanie aplik\u00e1cie. Nechce sa mi plati\u0165 za ne\u010dinnos\u0165 spusten\u00fdch kontajnerov, ke\u010f je z\u00e1\u0165a\u017e na slu\u017ebu minim\u00e1lna. Chcem p\u00edsa\u0165 k\u00f3d. S\u00fastre\u010fte sa na podnikate\u013esk\u00fa logiku a uv\u00e1dzajte produkty na trh r\u00fdchlos\u0165ou svetla. <\/p>\n<p>Tieto my\u0161lienky ma priviedli k bezserverov\u00fdm v\u00fdpo\u010dtom. Serverless v tomto pr\u00edpade znamen\u00e1 <em>nie fyzick\u00fa nepr\u00edtomnos\u0165 serverov, ale absenciu starost\u00ed o spr\u00e1vu infra\u0161trukt\u00fary.<\/em><\/p>\n<p>Idea spo\u010d\u00edva v tom, \u017ee logika aplik\u00e1cie sa rozdel\u00ed na nez\u00e1visl\u00e9 funkcie. Maj\u00fa event-driven \u0161trukt\u00faru. Ka\u017ed\u00e1 z funkci\u00ed vykon\u00e1va jednu \"mikro\u00falohu\". V\u0161etko, \u010do od v\u00fdvoj\u00e1ra vy\u017eaduje, je nahra\u0165 funkcie do poskytnutej konzoly cloudov\u00fdm poskytovate\u013eom a zos\u00faladi\u0165 ich so zdrojmi udalost\u00ed. K\u00f3d sa bude vykon\u00e1va\u0165 na po\u017eiadanie v automaticky pripravenom kontajneri a zaplat\u00edm iba za \u010das vykonania. <\/p>\n<p>Po\u010fme si objasni\u0165, ako bude teraz vyzera\u0165 proces v\u00fdvoja aplik\u00e1cie.<\/p>\n<h2>Z poh\u013eadu v\u00fdvoj\u00e1ra<\/h2>\n<p>\nPredt\u00fdm sme za\u010dali hovori\u0165 o aplik\u00e1cii pre internetov\u00fd obchod. V tradi\u010dnom pr\u00edstupe hlavn\u00fa logiku syst\u00e9mu vykon\u00e1va monolitn\u00e1 aplik\u00e1cia. A server s aplik\u00e1ciou je spusten\u00fd nepretr\u017eite, aj ke\u010f nie je z\u00e1\u0165a\u017e.<\/p>\n<p><strong>Aby sme pre\u0161li na serverless, rozdel\u00edme aplik\u00e1ciu na mikro\u00falohy.<\/strong> Pre ka\u017ed\u00fa z nich nap\u00ed\u0161eme svoju funkciu. Funkcie s\u00fa nez\u00e1visl\u00e9 od seba a neuchov\u00e1vaj\u00fa inform\u00e1cie o stave (stateless). M\u00f4\u017eu by\u0165 nap\u00edsan\u00e9 aj v r\u00f4znych jazykoch. Ak jedna z nich \u00abspadne\u00bb, aplik\u00e1cia sa \u00faplne nezastav\u00ed. Architekt\u00fara aplik\u00e1cie bude vyzera\u0165 takto:<\/p>\n<p><img decoding=\"async\" alt=\"Serverless po rebr\u00ed\u010dkoch\" src=\"\/wp-content\/uploads\/2019\/05\/f62c5c08bbf587766198dbb807123273.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nRozdelenie na funkcie v Serverless pripom\u00edna pr\u00e1cu s mikroservisami. Ale mikroservis m\u00f4\u017ee vykon\u00e1va\u0165 viacero \u00faloh, zatia\u013e \u010do funkcia v ide\u00e1lnom pr\u00edpade by mala vykon\u00e1va\u0165 len jednu. Predstavme si, \u017ee je \u00faloha zbiera\u0165 \u0161tatistiky a zobrazi\u0165 na po\u017eiadanie pou\u017e\u00edvate\u013ea. V pr\u00edstupe mikroservisov \u00falohu vykon\u00e1va jeden servis s dvoma vstupn\u00fdmi bodmi: na z\u00e1pis a na \u010d\u00edtanie. V bezserverov\u00fdch v\u00fdpo\u010dtoch to bud\u00fa dve r\u00f4zne funkcie, ktor\u00e9 nie s\u00fa navz\u00e1jom prepojen\u00e9. V\u00fdvoj\u00e1r \u0161etr\u00ed v\u00fdpo\u010dtov\u00e9 zdroje, ak sa napr\u00edklad \u0161tatistika aktualizuje \u010dastej\u0161ie ne\u017e sa vy\u017eaduje. <\/p>\n<p>Serverless funkcie by sa mali vykon\u00e1va\u0165 za kr\u00e1tky \u010dasov\u00fd \u00fasek (timeout), ktor\u00fd ur\u010duje poskytovate\u013e slu\u017eby. Napr\u00edklad pre AWS je timeout 15 min\u00fat. To znamen\u00e1, \u017ee dlhodob\u00e9 funkcie (long-lived) bude treba prisp\u00f4sobi\u0165 po\u017eiadavk\u00e1m \u2014 t\u00fdmto sa Serverless odli\u0161uje od in\u00fdch popul\u00e1rnych technol\u00f3gi\u00ed dnes (kontajnerov a Platform as a Service).<\/p>\n<p><strong>Ka\u017edej funkcii prirad\u00edme udalos\u0165.<\/strong> Udalos\u0165 \u2014 to je sp\u00fa\u0161\u0165a\u010d akcie:<\/p>\n<p><strong>Udalos\u0165<\/strong><br \/>\n<strong>Akcia, ktor\u00fa funkcia vykon\u00e1va<\/strong><\/p>\n<p>Do \u00falo\u017eiska bola nahran\u00e1 obr\u00e1zok produktu<br \/>\nZmen\u0161i\u0165 obr\u00e1zok a nahra\u0165 do adres\u00e1ra<\/p>\n<p>V datab\u00e1ze sa aktualizovala adresa fyzickej predajne<br \/>\nNa mape na\u010d\u00edta\u0165 nov\u00fa polohu<\/p>\n<p>Z\u00e1kazn\u00edk plat\u00ed za tovar<br \/>\nSpusti\u0165 spracovanie platby<\/p>\n<p>Udalos\u0165ami m\u00f4\u017eu by\u0165 HTTP po\u017eiadavky, streamingov\u00e9 d\u00e1ta, spr\u00e1vy v front\u00e1ch a podobne. Zdrojmi udalost\u00ed s\u00fa zmena alebo vznik d\u00e1t. Okrem toho m\u00f4\u017eu by\u0165 funkcie sp\u00fa\u0161\u0165an\u00e9 pod\u013ea \u010dasov\u00e9ho pl\u00e1nu.<\/p>\n<p>Architekt\u00faru sme spracovali a aplik\u00e1cia sa takmer stala serverless. Pokra\u010dujeme k poskytovate\u013eovi slu\u017eby.<\/p>\n<h2>Z poh\u013eadu poskytovate\u013ea<\/h2>\n<p>\nBe\u017ene bezserverov\u00e9 v\u00fdpo\u010dty pon\u00fakaj\u00fa poskytovatelia cloudov\u00fdch slu\u017eieb. Naz\u00fdvaj\u00fa ich r\u00f4zne: Azure Functions, AWS Lambda, Google Cloud Functions, IBM Cloud Functions. <\/p>\n<p>Na slu\u017ebu budeme pou\u017e\u00edva\u0165 cez konzolu alebo osobn\u00fd \u00fa\u010det poskytovate\u013ea. K\u00f3d funkci\u00ed m\u00f4\u017eeme nahra\u0165 jedn\u00fdm z nasleduj\u00facich sp\u00f4sobov:<\/p>\n<ul>\n<li>nap\u00edsa\u0165 k\u00f3d vo vstavan\u00fdch editoroch cez webov\u00fa konzolu,<\/li>\n<li>nahra\u0165 arch\u00edv s k\u00f3dom,<\/li>\n<li>pracova\u0165 s verejn\u00fdmi alebo s\u00fakromn\u00fdmi git repozit\u00e1rmi.<\/li>\n<\/ul>\n<p>\nTu si nastavujeme udalosti, ktor\u00e9 vyvol\u00e1vaj\u00fa funkciu. R\u00f4zni poskytovatelia m\u00f4\u017eu ma\u0165 odli\u0161n\u00e9 sady udalost\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Serverless po rebr\u00ed\u010dkoch\" src=\"\/wp-content\/uploads\/2019\/05\/98676fa23a9911aae5758ecdb2cd9a03.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Poskytovate\u013e na svojej infra\u0161trukt\u00fare postavil a automatizoval syst\u00e9m Function as a Service (FaaS):<\/p>\n<ol>\n<li>K\u00f3d funkci\u00ed sa dost\u00e1va do \u00falo\u017eiska na strane poskytovate\u013ea.<\/li>\n<li>Ke\u010f sa objav\u00ed udalos\u0165, na serveri sa automaticky rozvin\u00fa kontajnery s pripraven\u00fdm prostred\u00edm. Ka\u017edej in\u0161tancii funkcie \u2014 vlastn\u00fd izolovan\u00fd kontajner.<\/li>\n<li>Z \u00falo\u017eiska sa funkcia posiela do kontajnera, vypo\u010d\u00edta sa a vr\u00e1ti v\u00fdsledok.<\/li>\n<li>Po\u010det paraleln\u00fdch udalost\u00ed rastie \u2014 rastie aj po\u010det kontajnerov. Syst\u00e9m sa automaticky \u0161k\u00e1luje. Ak sa pou\u017e\u00edvatelia na funkciu neobracaj\u00fa, bude neakt\u00edvna.<\/li>\n<li>Poskytovate\u013e ur\u010duje \u010das ne\u010dinnosti kontajnerov \u2014 ak sa v tomto \u010dase funkcie neobjavia v kontajneri, je zni\u010den\u00fd.<\/li>\n<\/ol>\n<p>\nTakto z\u00edskavame Serverless \u201ez krabice\u201c. Za slu\u017ebu budeme plati\u0165 pod\u013ea modelu pay-as-you-go, a to len za tie funkcie, ktor\u00e9 sa pou\u017e\u00edvaj\u00fa, a len za \u010das, po\u010das ktor\u00e9ho boli pou\u017eit\u00e9.<\/p>\n<p>Aby sa v\u00fdvoj\u00e1ri obozn\u00e1mili so slu\u017ebou, poskytovatelia pon\u00fakaj\u00fa a\u017e 12 mesiacov bezplatn\u00e9ho testovania, ale obmedzuj\u00fa celkov\u00fd \u010das v\u00fdpo\u010dtov, po\u010det po\u017eiadaviek za mesiac, finan\u010dn\u00e9 prostriedky alebo spotrebovan\u00e9 zdroje.<\/p>\n<p>Hlavn\u00e1 v\u00fdhoda pr\u00e1ce s poskytovate\u013eom je mo\u017enos\u0165 nestara\u0165 sa o infra\u0161trukt\u00faru (servery, virtu\u00e1lne stroje, kontajnery). Z ich strany m\u00f4\u017ee poskytovate\u013e implementova\u0165 FaaS bu\u010f na vlastn\u00fdch rie\u0161eniach, alebo pomocou open-source n\u00e1strojov. O t\u00fdch sa budeme rozpr\u00e1va\u0165 \u010falej.<\/p>\n<h2>Z poh\u013eadu open source<\/h2>\n<p>\nPosledn\u00e9 dva roky komunita open-source akt\u00edvne pracuje na n\u00e1strojoch Serverless. Medzi nimi prispievaj\u00fa k rozvoju bezserverov\u00fdch platforiem aj najv\u00e4\u010d\u0161\u00ed hr\u00e1\u010di na trhu:<\/p>\n<ul>\n<li><strong>Google<\/strong> pon\u00faka v\u00fdvoj\u00e1rom svoj open-source n\u00e1stroj \u2015 <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/knative\/\">Knative<\/a><\/noindex>. Na jeho v\u00fdvoji sa podie\u013eali IBM, RedHat, Pivotal a SAP;<\/li>\n<li><strong>IBM<\/strong> pracovali na Serverless platforme <noindex><a rel=\"nofollow\" href=\"https:\/\/openwhisk.apache.org\/\">OpenWhisk<\/a><\/noindex>, ktor\u00e1 sa potom stala projektom Apache Foundation;<\/li>\n<li><strong>Microsoft<\/strong> \u010diasto\u010dne otvorili k\u00f3d platformy <noindex><a rel=\"nofollow\" href=\"https:\/\/azure.microsoft.com\/en-us\/services\/functions\/\">Azure Functions<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nPr\u00e1ce prebiehaj\u00fa aj v oblasti frameworkov bez servera. <noindex><a rel=\"nofollow\" href=\"https:\/\/kubeless.io\/\">Kubeless<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/fission.io\/\">Fission<\/a><\/noindex> sa nasadzuj\u00fa vo vopred pripraven\u00fdch Kubernetes klastra, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openfaas.com\/\">OpenFaaS<\/a><\/noindex> funguje s Kubernetes aj s Docker Swarm. Framework sl\u00fa\u017ei ako ak\u00fdsi kontrol\u00e9r \u2013 priprav\u00ed prostredie na vykon\u00e1vanie priamo v klastri na po\u017eiadanie a n\u00e1sledne spust\u00ed funkciu.<\/p>\n<p>Frameworky umo\u017e\u0148uj\u00fa \u0161irok\u00e9 mo\u017enosti prisp\u00f4sobenia n\u00e1strojov pod\u013ea vlastn\u00fdch potrieb. Napr\u00edklad v Kubeless m\u00f4\u017ee v\u00fdvoj\u00e1r nastavi\u0165 timeout pre vykon\u00e1vanie funkcie (predvolen\u00e9 nastavenie je 180 sek\u00fand). Fission sa pok\u00fa\u0161a vyrie\u0161i\u0165 probl\u00e9m studen\u00e9ho \u0161tartu t\u00fdm, \u017ee niektor\u00e9 kontajnery udr\u017eiava neust\u00e1le spusten\u00e9 (aj ke\u010f to vedie k n\u00e1kladom na ne\u010dinn\u00e9 zdroje). OpenFaaS pon\u00faka mno\u017estvo sp\u00fa\u0161\u0165a\u010dov na ka\u017ed\u00fa chu\u0165: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NATs a \u010fal\u0161ie.<\/p>\n<p>Pokyny na za\u010datie pr\u00e1ce n\u00e1jdete v ofici\u00e1lnej dokument\u00e1cii frameworkov. Pr\u00e1ca s nimi si vy\u017eaduje o nie\u010do viac zru\u010dnost\u00ed ako prostredn\u00edctvom poskytovate\u013ea \u2013 to minim\u00e1lne znamen\u00e1 vedie\u0165 spusti\u0165 Kubernetes klaster cez CLI. Maxim\u00e1lne sa to m\u00f4\u017ee roz\u0161\u00edri\u0165 o zapojenie in\u00fdch open-source n\u00e1strojov (napr\u00edklad spr\u00e1vca frontov Kafka).<\/p>\n<p>Bez oh\u013eadu na to, ak\u00fdm sp\u00f4sobom budeme pracova\u0165 so Serverless \u2013 prostredn\u00edctvom poskytovate\u013ea alebo pomocou open-source, z\u00edskame nieko\u013eko v\u00fdhod a nev\u00fdhod pr\u00edstupu Serverless.<\/p>\n<h2>Z poh\u013eadu v\u00fdhod a nev\u00fdhod<\/h2>\n<p>\nServerless rozv\u00edja my\u0161lienky kontajnerovej infra\u0161trukt\u00fary a mikroservisn\u00e9ho pr\u00edstupu, pri ktor\u00fdch m\u00f4\u017eu t\u00edmy pracova\u0165 v multijazy\u010dnom re\u017eime, bez viazania sa na jednu platformu. Budovanie syst\u00e9mu sa zjednodu\u0161uje a odstra\u0148ovanie ch\u00fdb sa st\u00e1va jednoduch\u0161\u00edm. Mikroservisn\u00e1 architekt\u00fara umo\u017e\u0148uje omnoho r\u00fdchlej\u0161\u00ed pr\u00eddavok nov\u00fdch funkci\u00ed do syst\u00e9mu ako pri monolitickej aplik\u00e1cii.<\/p>\n<p><strong>Serverless e\u0161te viac skracuje \u010das v\u00fdvoja,<\/strong> \u010d\u00edm umo\u017e\u0148uje v\u00fdvoj\u00e1rovi s\u00fastredi\u0165 sa v\u00fdlu\u010dne na podnikate\u013esk\u00fa logiku aplik\u00e1cie a p\u00edsanie k\u00f3du. Ako d\u00f4sledok sa skracuje \u010das uvedenia v\u00fdvoja na trh.<\/p>\n<p><strong>Z\u00edska\u0165 m\u00f4\u017eeme aj automatick\u00e9 \u0161k\u00e1lovanie na za\u0165a\u017eenie,<\/strong> a plat\u00edme len za pou\u017e\u00edvan\u00e9 zdroje a iba v \u010dasoch, ke\u010f s\u00fa vyu\u017e\u00edvan\u00e9.<\/p>\n<p>Rovnako ako ka\u017ed\u00e1 technol\u00f3gia, aj Serverless m\u00e1 nev\u00fdhody.<\/p>\n<p><em>Jednou z tak\u00fdchto nev\u00fdhod m\u00f4\u017ee by\u0165 doba studen\u00e9ho \u0161tartu (v priemere do 1 sekundy pre tak\u00e9 jazyky ako JavaScript, Python, Go, Java, Ruby).<\/em><\/p>\n<p>Na jednej strane, skuto\u010dn\u00fd \u010das studen\u00e9ho spustenia z\u00e1vis\u00ed od mnoh\u00fdch premenn\u00fdch: jazyka, v ktorom je funkcia nap\u00edsan\u00e1, po\u010dtu kni\u017en\u00edc, objemu k\u00f3du a interakcie s \u010fal\u0161\u00edmi zdrojmi (napr\u00edklad datab\u00e1zami alebo autentifika\u010dn\u00fdmi servermi). Preto\u017ee v\u00fdvoj\u00e1r m\u00e1 kontrolu nad t\u00fdmito premenn\u00fdmi, m\u00f4\u017ee skr\u00e1ti\u0165 \u010das spustenia. Na druhej strane, v\u00fdvoj\u00e1r nem\u00f4\u017ee ovplyvni\u0165 \u010das spustenia kontajnera - to z\u00e1vis\u00ed len od poskytovate\u013ea.<\/p>\n<p>Studen\u00e9 spustenie sa m\u00f4\u017ee zmeni\u0165 na tepl\u00e9, ke\u010f funkcia znovu vyu\u017e\u00edva kontajner, ktor\u00fd bol spusten\u00fd predch\u00e1dzaj\u00facou udalos\u0165ou. K tejto situ\u00e1cii d\u00f4jde v troch pr\u00edpadoch:<\/p>\n<ul>\n<li>ak z\u00e1kazn\u00edci \u010dasto pou\u017e\u00edvaj\u00fa slu\u017ebu a po\u010det dopytov na funkciu rastie;<\/li>\n<li>ak poskytovate\u013e, platforma alebo r\u00e1mec umo\u017e\u0148uj\u00fa dr\u017ea\u0165 niektor\u00e9 kontajnery neust\u00e1le spusten\u00e9;<\/li>\n<li>ak v\u00fdvoj\u00e1r sp\u00fa\u0161\u0165a funkcie na \u010dasova\u010di (napr\u00edklad ka\u017ed\u00e9 3 min\u00faty).<\/li>\n<\/ul>\n<p>\nPre mnoh\u00e9 aplik\u00e1cie nie je studen\u00e9 spustenie probl\u00e9m. Je potrebn\u00e9 vych\u00e1dza\u0165 z typu a \u00faloh slu\u017eby. Oneskorenie spustenia o sekundu nie je v\u017edy kritick\u00e9 pre biznis aplik\u00e1ciu, ale m\u00f4\u017ee by\u0165 kritick\u00e9 pre zdravotn\u00edcke slu\u017eby. Pravdepodobne v tomto pr\u00edpade bezserverov\u00fd pr\u00edstup u\u017e nebude vhodn\u00fd.<\/p>\n<p><em>\u010eal\u0161\u00ed nev\u00fdhodou Serverless je kr\u00e1tka doba \u017eivotnosti funkcie (timeout, za ktor\u00fd sa funkcia mus\u00ed vykona\u0165).<\/em><\/p>\n<p>Ak sa m\u00e1 pracova\u0165 so dlho\u017eij\u00facimi \u00falohami, je mo\u017en\u00e9 pou\u017ei\u0165 hybridn\u00fa architekt\u00faru - kombinova\u0165 Serverless s inou technol\u00f3giou.<\/p>\n<p><em>Nie v\u0161etky syst\u00e9my bud\u00fa schopn\u00e9 pracova\u0165 na sch\u00e9me Serverless.<\/em><\/p>\n<p>Niektor\u00e9 aplik\u00e1cie na\u010falej bud\u00fa uchov\u00e1va\u0165 d\u00e1ta a stav po\u010das vykon\u00e1vania. Niektor\u00e9 architekt\u00fary zostan\u00fa monolitn\u00e9 a niektor\u00e9 funkcie bud\u00fa dlho\u017eij\u00face. Av\u0161ak (rovnako ako kedysi cloudov\u00e9 technol\u00f3gie a n\u00e1sledne aj kontajnery), Serverless je technol\u00f3gia s ve\u013ekou bud\u00facnos\u0165ou.<\/p>\n<p>V tejto s\u00favislosti by som r\u00e1d plynulo pre\u0161iel k ot\u00e1zke aplik\u00e1cie pr\u00edstupu Serverless.<\/p>\n<h2>Z poh\u013eadu aplik\u00e1cie<\/h2>\n<p>\nV priebehu roku 2018 percento vyu\u017e\u00edvania Serverless <noindex><a rel=\"nofollow\" href=\"https:\/\/media.flexera.com\/documents\/rightscale-2019-state-of-the-cloud-report-from-flexera.pdf\">vzr\u00e1stlo o polovicu<\/a><\/noindex>. Medzi spolo\u010dnos\u0165ami, ktor\u00e9 u\u017e implementovali technol\u00f3giu do svojich slu\u017eieb, s\u00fa obrovsk\u00e9 trhov\u00e9 hr\u00e1\u010de ako Twitter, PayPal, Netflix, T-Mobile, Coca-Cola. Treba v\u0161ak pochopi\u0165, \u017ee Serverless nie je v\u0161eliek, ale n\u00e1stroj na rie\u0161enie ur\u010dit\u00fdch \u00faloh:<\/p>\n<ul>\n<li><strong>Zn\u00ed\u017ei\u0165 ne\u010dinnos\u0165 zdrojov.<\/strong> Nie je potrebn\u00e9 neust\u00e1le udr\u017eiava\u0165 virtu\u00e1lny stroj pre slu\u017eby, na ktor\u00e9 sa m\u00e1lo obraciate.<\/li>\n<li><strong>Spracova\u0165 d\u00e1ta \"na v\u00e1s\".<\/strong> Kompresova\u0165 obr\u00e1zky, odstra\u0148ova\u0165 pozadie, meni\u0165 k\u00f3dovanie videa, pracova\u0165 so senzormi IoT, vykon\u00e1va\u0165 matematick\u00e9 oper\u00e1cie.\n<\/li>\n<li><strong>\"Spoji\u0165\" medzi sebou in\u00e9 slu\u017eby.<\/strong> Git-repozit\u00e1r s intern\u00fdmi programami, chatbot v Slacku s Jira a s kalend\u00e1rom.<\/li>\n<li><strong>Vyva\u017eova\u0165 za\u0165a\u017eenie.<\/strong> Tu sa zastav\u00edme podrobnej\u0161ie.<\/li>\n<\/ul>\n<p>\nPredpokladajme, \u017ee existuje slu\u017eba, na ktor\u00fa prich\u00e1dza 50 \u013eud\u00ed. Pre \u0148u je nasaden\u00fd virtu\u00e1lny stroj so slab\u00fdm hardv\u00e9rom. Ob\u010das sa za\u0165a\u017eenie slu\u017eby zvy\u0161uje nieko\u013ekon\u00e1sobne. V takom pr\u00edpade slab\u00fd hardv\u00e9r nezvl\u00e1dne.<\/p>\n<p>M\u00f4\u017eete zapn\u00fa\u0165 v syst\u00e9me vyva\u017eova\u010d, ktor\u00fd rozdel\u00ed za\u0165a\u017eenie, povedzme, na tri virtu\u00e1lne stroje. V tomto \u0161t\u00e1diu nem\u00f4\u017eeme presne predpoveda\u0165 za\u0165a\u017eenie, tak\u017ee nejak\u00e9 mno\u017estvo zdrojov dr\u017e\u00edme zapnut\u00e9 \"na rezervu\". A prepl\u00e1came za ne\u010dinnos\u0165. <\/p>\n<p>V takejto situ\u00e1cii m\u00f4\u017eeme optimalizova\u0165 syst\u00e9m hybridn\u00fdm pr\u00edstupom: za vyva\u017eova\u010dom za\u0165a\u017eenia nech\u00e1me jeden virtu\u00e1lny stroj a nasad\u00edme odkaz na Serverless Endpoint s funkciami. Ak za\u0165a\u017eenie prekro\u010d\u00ed prah \u2015 vyva\u017eova\u010d spust\u00ed in\u0161tancie funkci\u00ed, ktor\u00e9 preberaj\u00fa \u010das\u0165 spracovania po\u017eiadaviek.<\/p>\n<p><img decoding=\"async\" alt=\"Serverless po rebr\u00ed\u010dkoch\" src=\"\/wp-content\/uploads\/2019\/05\/79262c19faba29a4639a05e3097f7914.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTakto sa d\u00e1 Serverless vyu\u017ei\u0165 tam, kde je potrebn\u00e9 ne pr\u00edli\u0161 \u010dasto, ale intenz\u00edvne spracov\u00e1va\u0165 ve\u013ek\u00e9 mno\u017estvo po\u017eiadaviek. V tomto pr\u00edpade je v\u00fdhodnej\u0161ie spusti\u0165 nieko\u013eko funkci\u00ed na 15 min\u00fat, ne\u017e neust\u00e1le udr\u017eiava\u0165 virtu\u00e1lny stroj alebo server.<\/p>\n<p>Pri v\u0161etk\u00fdch v\u00fdhod\u00e1ch bezserverov\u00fdch v\u00fdpo\u010dtov by ste pred zaveden\u00edm mali najprv zhodnoti\u0165 logiku aplik\u00e1cie a pochopi\u0165, ak\u00e9 \u00falohy dok\u00e1\u017ee Serverless v konkr\u00e9tnom pr\u00edpade vyrie\u0161i\u0165. <\/p>\n<h2>Serverless a Selectel<\/h2>\n<p>\nV Selectel sme u\u017e <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\">zjednodu\u0161ili pr\u00e1cu s Kubernetes<\/a><\/noindex> cez na\u0161u riadiacu pane. Teraz budujeme vlastn\u00fa FaaS platformu. Chceme, aby v\u00fdvoj\u00e1ri mohli rie\u0161i\u0165 svoje \u00falohy pomocou Serverless cez pohodln\u00e9, flexibiln\u00e9 rozhranie.<\/p>\n<p>Ak m\u00e1te n\u00e1pady, ak\u00e1 by mala by\u0165 ide\u00e1lna FaaS platforma a ako by ste chceli vyu\u017ei\u0165 Serverless vo svojich projektoch, pode\u013ete sa o ne v koment\u00e1roch. Zoh\u013eadn\u00edme va\u0161e \u017eelania pri v\u00fdvoji platformy.<br \/>\n\u00a0<br \/>\nMateri\u00e1ly pou\u017eit\u00e9 v \u010dl\u00e1nku:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rightscale.com\/lp\/state-of-the-cloud\">Percento vyu\u017eitia Serverless vzr\u00e1stlo o 50% (\u00fapln\u00e1 spr\u00e1va RightScale)<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mikhail.io\/serverless\/coldstarts\/aws\/\">Ako z\u00e1vis\u00ed \u010das studen\u00e9ho \u0161tartu od jazyka aplik\u00e1cie<\/a><\/noindex><\/li>\n<\/ul>\n<p>Zdroj: <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.3 - 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\/sk\/blog\/administrirovanie\/serverless-po-stoechkam\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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 poli\u010dk\u00e1ch | ProHoster","description":"Serverless \u2015 to nie je o fyzickej nepr\u00edtomnosti serverov.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/serverless-po-stoechkam","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/33935","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=33935"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/33935\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/25594"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=33935"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=33935"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=33935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}