Pochopení bezserverových počítačů pro začátečníky

Když říkáme „bezserverové“ výpočty, mnozí předpokládají, že v tomto modelu není žádný server, který by usnadnil spouštění kódu a další vývojové úlohy. Je to prostá mylná představa.

Takže po tomto bořiči mýtů si možná říkáte, jaká je logika za názvem „bez serveru“.

Dovolte mi, abych vám napověděl: Místo „žádný server“ znamená „bez serveru“ JAK jsou servery spravovány a implementovány.

Zní to zmateně?

No, naučíme se vše o bezserveru a dalších souvisejících termínech, abychom vyjasnili vaše pochybnosti. Pro začátek, serverless se stává slavným, když mluvíme. Ve skutečnosti pravděpodobně dosáhne trh bez serverů 7,7 miliardy dolarů do roku 2021 z 1,9 miliardy dolarů v roce 2016.

Pojďme tedy diskutovat o bezserveru a pokusme se zjistit důvod jeho popularity.

Co je to Serverless Computing?

Bezserverové nebo bezserverové počítání je cloudový model provádění, ve kterém poskytovatelé cloudových služeb poskytují strojové zdroje na vyžádání a spravují servery sami namísto zákazníků nebo vývojářů. Je to způsob, který kombinuje služby, strategie a postupy, které vývojářům pomáhají vytvářet cloudové aplikace tím, že jim umožňuje soustředit se na svůj kód spíše než na správu serverů.

Od alokace zdrojů, plánování kapacity, správy, konfigurací a škálování až po opravy, aktualizace, plánování a údržbu přebírá poskytovatel cloudových služeb (jako AWS nebo Google Cloud Platform) veškerou odpovědnost za správu běžných úloh infrastruktury. Výsledkem je, že vývojáři mohou soustředit své úsilí a čas na obchodní logiku svých procesů a aplikací.

Tato bezserverová výpočetní architektura nikdy neuchovává výpočetní prostředky v nestálé paměti; místo toho výpočet probíhá v krátkých částech. Předpokládejme, že nepoužíváte aplikaci, nebudou jí přiděleny žádné prostředky. Platíte tedy za to, jaký zdroj v aplikacích skutečně spotřebováváte.

Hlavním cílem vytvoření modelu bez serveru je zjednodušit proces nasazení kódu do výroby. Mnohokrát to také funguje s tradičními styly, jako jsou mikroslužby. Po nasazení bez serveru začnou aplikace, které pohání, rychle reagovat na požadavky a podle potřeby se automaticky zvětšují nebo snižují.

Bezserverové výpočty používají k určení požadavků na škálování model řízený událostmi. Vývojáři tak již nemusejí předvídat využití aplikace, aby se rozhodli, kolik serverů nebo šířky pásma potřebují. Můžete požadovat více serverů a šířku pásma na základě vašich rostoucích potřeb bez předchozí rezervace nebo kdykoli bez potíží snížit.

Jak se Serverless Evolve?

Tradiční systém měl problémy spojené se škálovatelností a agilitou v procesu vývoje a nasazení aplikací. Jak se požadavky na vysoce kvalitní aplikace zvyšovaly s rychlým uvedením na trh, začala se vynořovat potřeba lepšího systému, který může nabídnout větší škálovatelnost a agilitu. Výsledkem byl vývoj cloud computingu a modelů bez serveru.

Model bez serveru se vyvíjel v různých fázích, od monolitických přes mikroslužby až po architekturu bez serveru nebo funkci jako službu (FaaS).

  • Monolitická architektura je tradiční jednotný přístup pro vývoj softwaru. Je to pevně propojený model, kde každá komponenta a její podkomponenty kompilují nebo spouštějí kód. Pokud je služba vadná, může selhat celý aplikační server a na něm běžící služby.
  • Architektura mikroslužeb je sbírka menších služeb uvnitř velké, jediné aplikace nasazené nezávisle k provádění konkrétní funkce. Umožňuje rychlé dodávání aplikací ve velkém měřítku a poskytuje vývojářům flexibilitu pomocí Infrastructure-as-a-Service (IaaS) a Platform as a Service (PaaS). Výběr mezi PaaS a IaaS je však v tomto modelu náročný.
  • Bezserverová architektura se vyvinula s cloud computingem a nabízí větší škálovatelnost a obchodní agilitu. Namísto IaaS a PaaS využívá FaaS a Backend-as-a-Service (BaaS). Zde se aplikace nasazují podle potřeby spolu se zdroji pro ně. Nemusíte spravovat server a můžete přestat platit, pokud spuštění kódu skončí.

Atributy bezserverového počítání

Některé z atributů bezserverového počítání jsou následující:

  • Většina aplikací využívajících serverless obsahuje jednotlivé funkce a malé jednotky kódu.
  • Spouští kód pouze na vyžádání, obvykle v bezstavovém softwarovém kontejneru, a plynule se škáluje na základě požadavku.
  • Od zákazníků není potřeba žádná správa serveru.
  • Funkce spouštění založené na událostech, kdy se prostředí počítače vytvoří, jakmile je spuštěna funkce nebo je přijata událost pro provedení požadavku.
  • Flexibilní škálovatelnost, takže můžete snadno škálovat nahoru nebo dolů. Jakmile je kód spuštěn, infrastruktura se zastaví a náklady se ušetří. Podobně, když funkce pokračuje v provádění, můžete škálovat nekonečně podle potřeby.
  • Spravované cloudové služby můžete používat ke zpracování složitých úkolů, jako je ukládání souborů, řazení do front, databáze a další.
  Opravte chybu Black Ops 3 ABC v PS4

Jak funguje bez serveru?

Architektura bez serveru kombinuje dvě hlavní myšlenky – Function-as-a-Service (FaaS) a Backend-as-a-Service (BaaS). Je založen spíše na FaaS, který umožňuje cloudovým službám spouštění kódu, aniž by byly potřeba kompletně zřízené instance. FaaS se skládá z bezstavových, událostmi řízených, škálovatelných a serverových funkcí, které cloudové služby plně spravují.

Model umožňuje týmům DevOps psát kód se zaměřením na jejich obchodní logiku. Dále definují událost, která může spustit funkci, jako jsou požadavky HTTP, ke spuštění. Poskytovatel cloudu následně spustí funkci a odešle výsledky do aplikací, které si uživatelé mohou prohlížet.

Tímto způsobem model bez serveru nabízí nákladovou efektivitu a pohodlí s automatickým škálováním, na vyžádání a s průběžnými platbami. Mnoho podniků a týmů DevOps proto v dnešní době nepoužívá server.

Kdo používá Serverless a proč?

Serverless patří mezi nejvíce se objevující technologie ve vývoji softwaru. V budoucnu by to mohlo eliminovat potřeby správy infrastruktury a zajišťování.

Je to užitečné pro:

  • Organizace, které chtějí větší škálovatelnost a flexibilitu s lepší testovatelností aplikací, mohou přejít bez serveru.
  • Vývojáři, kteří chtějí zkrátit dobu potřebnou k uvedení na trh vytvářením agilních a vysoce výkonných aplikací
  • Společnosti, které nepotřebují, aby jejich servery neustále běžely. V případě potřeby mohou volat funkce založené na modulech pomocí aplikací, aby ušetřili náklady.
  • Organizace, které chtějí vytvářet efektivní cloudové aplikace a zjednodušit cloudovou migraci
  • Vývojáři hledající způsoby, jak snížit latenci, mohou uživatelům nabídnout přístup k některým funkcím nebo aplikacím.
  • Společnost, která nemá dostatečné zdroje na údržbu a složitost IT infrastruktury, může použít bezserverové výpočty k automatickému řešení problémů a nepotřebuje žádnou údržbu z jejich konce.

Někteří pozoruhodní uživatelé modelu bez serveru jsou Slack, Coca-Cola, NetFlix atd.

Díky svým jedinečným vlastnostem je model bez serveru vhodný pro mnoho případů použití, jako jsou:

  • Webové aplikace: Pomocí tohoto modelu můžete vytvářet rychlé a škálovatelné webové aplikace, které rychle reagují na požadavky uživatelů. Je ideální pro vytváření bezstavových aplikací, které můžete spustit okamžitě, a aplikací, které dokážou uspokojit nepředvídatelné, občasné nárůsty požadavků uživatelů.
  • Back-endy API: Na platformách bez serveru lze jakoukoli funkci snadno přeměnit na koncové body HTTP připravené k použití klienty. Tyto funkce nebo akce jsou známé jako webové akce, pokud jsou povoleny na webu. A jakmile jsou tyto funkce povoleny, sestavení funkcí do plnohodnotného API bude snadné. Můžete také použít slušnou bránu API, která přinese větší zabezpečení, podporu domény, omezení rychlosti a podporu OAuth.
  • Microservices: Serverless je široce používán v modelu mikroslužeb, který se zaměřuje na vytváření malých služeb schopných vykonávat jedinou funkci a vzájemně komunikovat pomocí rozhraní API.
    Přestože mikroslužby lze vytvářet pomocí softwarových kontejnerů a PaaS, bezserverové jsou efektivnější. Usnadňuje menší řádky kódu, které provádějí jednu věc a nabízejí rychlé zřizování, automatické škálování a flexibilní ceny, které zákazníkům neúčtují poplatky, když se prostředky nepoužívají.
  • Zpracování dat: Serverless je skvělý pro práci s daty obsahujícími videa, zvuk, obrázky a strukturovaný text. Je také příznivý pro různé úkoly, jako je ověřování dat, transformace, obohacení, čištění, normalizace zvuku a zpracování PDF. Můžete jej využít pro zpracování obrazu, které zahrnuje ostření, rotaci, generování náhledů a redukci šumu. Další využití bezserverového zpracování dat může být překódování videa a optické rozpoznávání znaků (OCR).
  • Streamové/dávkové zpracování: Pomocí FaaS a databáze s Apache Kafka můžete vytvářet výkonné streamovací aplikace a datové kanály. Bezserverový model vyhovuje různým přijímáním streamů, včetně dat pro protokoly aplikací, senzory internetu věcí, obchodní logiku a finanční trh.
  • Paralelní výpočty: Serverless je vynikající pro úlohy související s paralelními výpočty, kde každá úloha běží paralelně, aby provedla konkrétní úlohu. Může zahrnovat vyhledávání dat, zpracování, mapové operace, web scraping, zpracování genomu, ladění hyperparametrů atd.
  • Další použití: Serverless se také používá pro různé aplikace, jako je řízení vztahů se zákazníky (CRM), finance, chatboti a business intelligence a analytika, abychom jmenovali alespoň některé.

Poznámka: Bez serveru nemusí být v některých případech ideální. Například velké aplikace s předvídatelným a téměř konstantním zatížením mohou více těžit z tradiční systémové architektury. Mohou použít dedikované servery, ať už spravované, nebo samostatně spravované. Pokud má vaše organizace kompletní tradiční nastavení se staršími systémy a aplikacemi, může být přechod na zcela novou a odlišnou architekturu drahý a náročný.

Výhody a nevýhody bezserverových počítačů

Každá mince má dvě strany, stejně jako architektura bez serveru. Má také některé výhody a nevýhody založené na různých parametrech. Než tedy budete pokračovat, je důležité znát obě strany, abyste se mohli rozhodnout, zda by to pro vaši organizaci bylo lepší nebo ne.

  Jak sledovat Hulu na ploše Linuxu s Electronplayerem

Výhody 👍

Zde jsou některé z výhod architektury bez serveru:

Nákladově efektivní

Serverless může nabídnout vyšší efektivitu nákladů než nákup nebo pronájem serverů, kde platíte za zdroje, i když je nepoužíváte.

Serverless využívá model průběžných plateb, kde budete platit pouze za zdroje, které spotřebujete. Poskytovatel bez serveru vám bude účtovat pouze přidělenou paměť a čas na spuštění kódu, aniž by mu vznikly náklady na dobu nečinnosti.

V důsledku toho ušetříte provozní náklady na úkoly, jako je instalace, licence, údržba, opravy, podpora atd. Bez serverového hardwaru ušetříte mzdové náklady.

Škálovatelnost

Bezserverové systémy nabízejí vysokou úroveň škálovatelnosti, protože můžete škálovat nahoru nebo dolů, kdykoli chcete, na základě požadavků. Z tohoto důvodu se jim také říká „elastické“.

Zde vývojáři nepotřebují vyhrazený čas na nastavování systémů nebo zásad automatického škálování nebo jejich ladění. Za správu toho všeho je zodpovědný vybraný poskytovatel cloudu. Kromě toho mohou vývojáři z malých týmů také spouštět svůj kód sami, aniž by potřebovali inženýry podpory nebo infrastrukturu.

Snížená latence

Protože aplikace nejsou hostovány na jediném původním serveru, můžete kód spouštět odkudkoli. Pokud to vybraný poskytovatel cloudu podporuje, můžete funkce aplikace spouštět na serveru v blízkosti koncových uživatelů. Proto dochází k menší latenci kvůli menší vzdálenosti mezi požadavky uživatele a serverem.

Produktivita

Bezserverový model pomáhá zlepšit produktivitu vašich vývojářů, protože se nemusí starat o správu serveru. Také nemusí myslet na přímou správu HTTP požadavků nebo multithreading ve svém kódu.

Ve výsledku to zjednodušuje vývoj backendu, to vše díky FaaS, kde jsou vystavený kód funkcemi řízenými událostmi. To vše šetří čas, který mohou věnovat zlepšování kódu a aplikace.

Rychlejší nasazení aplikace

Při použití bez serveru vývojáři neprovádějí konfiguraci backendu ani nenahrávají kód na server, aby mohli nasadit verzi aplikace. Mohou také rychle nahrát kód v bitech a uvolnit nové produkty.

Mají také flexibilitu nasadit kód najednou nebo fungovat jeden po druhém, protože se nejedná o monolitickou architekturu. Kromě toho můžete aplikaci rychle opravovat, aktualizovat, přidávat funkce nebo opravovat chyby.

Mezi další výhody patří ekologické výpočty díky snížené spotřebě energie se servery na vyžádání, vytváření aplikací, které se zjednoduší díky vestavěným integracím, rychlejší uvedení na trh a další.

Nevýhody 👎

Nyní se podívejme na nevýhody bezserverových počítačů:

Výkon

Někdy může méně často používaný bezserverový kód vykazovat větší latenci odezvy než ty, které běží nepřetržitě na vyhrazených serverech, softwarových kontejnerech nebo virtuálních strojích (VM). Je to proto, že může potřebovat více času, než začne znovu a vytvoří další latenci.

Obtížné ladění a testování

Musíte vědět, jak váš kód funguje, jakmile jej nasadíte. K tomu je třeba jej otestovat, což je v prostředí bez serveru náročné. Jelikož vývojářům chybí přehled o každém backendovém procesu a aplikace jsou rozděleny do menších funkcí, ladění se komplikuje.

Bezpečnostní problémy

Rostou nové a pokročilé obavy o kybernetickou bezpečnost. Není však možné úplně znát nebo měřit zabezpečení poskytovatele cloudu. Když tedy nakládají s celým vaším backendem s citlivými daty uloženými v aplikacích, je to riskantní.

Nevhodné pro dlouhotrvající aplikační procesy

Serverless je nákladově efektivní, ale ne pro všechny typy aplikací. Pokud máte aplikaci s dlouho běžícími procesy, náklady na její provoz na základě času a přidělených zdrojů mohou být velmi vysoké. V tuto chvíli možná budete chtít pokračovat s dedikovaným serverovým hostingem.

Dalšími nevýhodami serverless jsou potíže s přechodem od jednoho dodavatele k druhému a problémy s ochranou soukromí.

Terminologie důležité v architektuře bez serveru

Serverless není nikdy úplný, aniž bychom hovořili o některých klíčových terminologiích, které s ním souvisí. FaaS a BaaS jsou dvě z nejvýznamnějších myšlenek, které vedly k vývoji bezserverů, které dnes známe. A k vybudování systému bez serveru potřebujete databázi, úložný systém, technologický zásobník, framework a tak dále. Pojďme si o nich tedy trochu popovídat.

Funkce jako služba (FaaS)

FaaS je ústřední myšlenkou v bezserveru a funguje jako jeho podmnožina. Tento model spouštění kódu řízený událostmi (aplikace spuštěné v reakci na požadavek) vám umožňuje psát logiku nasazenou v softwarových kontejnerech, spouštěnou na vyžádání a cloudová platforma ji spravuje.

Pokud to porovnáte s BaaS, FaaS nabízí vývojářům větší kontrolu při vytváření vlastních aplikací namísto závislosti na knihovnách obsahujících předem připravený kód.

Softwarové kontejnery, kde je kód nasazen, jsou bezstavové, aby se zjednodušila integrace dat, a kód běží kratší dobu. Kromě toho mohou vývojáři vyvolat aplikace bez serveru prostřednictvím rozhraní API pomocí FaaS, které poskytovatelé cloudu spravují prostřednictvím brány API.

  Používejte Google Hangouts jako samostatnou aplikaci Chrome pro stolní počítače

Backend-as-a-Service (BaaS)

BaaS je podobný FaaS, protože oba potřebují poskytovatele služeb třetí strany. V tomto modelu poskytuje poskytovatel cloudu backendové služby, jako je úložiště dat, které vývojářům pomáhá soustředit se na psaní jejich frontendového kódu. Aplikace BaaS však nemusí být řízeny událostmi nebo spuštěny na okraji jako u aplikací bez serveru.

Dobrým příkladem pro BaaS je AWS Lambda. Vývojáři používají kód bez serveru v kontejnerech s Lambda, která poskytuje pokyny, které je třeba dodržovat při odesílání kódu. Automatizuje také procesy při zadávání kódu do softwarových kontejnerů a nabízí řízenou službu.

Zásobník bez serveru

Stejně jako u jiných softwarových technologií přichází architektura bez serveru také se zásobníkem technologií. Spojuje různé komponenty nezbytné pro vytvoření bezserverového systému nebo aplikace.

Zásobník bez serveru obsahuje:

  • Programovací jazyk: Programovací jazyk, ve kterém budou vývojáři psát kód. V závislosti na dodavateli si můžete vybrat z Java, JavaScript, Python, C#, Go, Node.js, F# atd.
  • Rámec bez serveru: Rámec poskytuje kostru nebo strukturu kódu. Existuje spousta bezserverových frameworků, abyste mohli začít. Umožňuje vytváření, balení a kompilaci kódu a nakonec nasazení do cloudu. Bezserverové frameworky urychlují proces kódování a zjednodušují škálování se zkrácenou dobou konfigurace. Příklady serverových rámců jsou Apex, AWS Serverless Application Model atd.
  • Databáze bez serveru: Používají se k ukládání dat, ke kterým kód vyžaduje přístup. Jsou také potřebné pro interakci s funkcemi pro spouštěče. Tyto databáze se chovají jako funkce bez serveru, ale ukládají data po neomezenou dobu. Příklady databází bez serveru jsou DynamoDB, Azure Cosmos DB, Aurora Serverless a Cloud Firestore.
  • Sada spouštěčů: Pomáhají spustit provádění kódu, jako jsou požadavky HTTP
  • Softwarové kontejnery: Umožňují bezserverový model a nabízejí kontejnerizované mikroslužby bez složitosti. Fungují také jako úložiště pro váš kód a usnadňují vývojářům psaní kódu pro více platforem, jako je desktop nebo iOS.
  • API brány: Fungují jako proxy pro webové akce. Nabízejí směrování HTTP, limity rychlosti, prohlížení protokolů využití API a odpovědí, ID klienta atd.

Jak implementovat model bez serveru a optimalizovat jej?

Přechod bez serverů přinese významné změny, pokud jde o vaše aplikace, technologie, náklady, zabezpečení a přínosy.

Předpokládejme, že jste začínající nebo malá firma. V takovém případě urychlí váš čas uvedení na trh a pomůže vám rychle prosazovat aktualizace pomocí zjednodušeného testování, ladění, shromažďování zpětné vazby, práce na problémech a dalších, abyste uživatelům nabídli dokonalou aplikaci.

Pokud jste větší organizace, zažijete výhody, jako je větší škálovatelnost pro uspokojení požadavků uživatelů, ale bude to vyžadovat značné náklady.

Proto je nejlepší změřit klady a zápory serverless specificky pro váš typ podnikání a požadavky a poté pokračovat. A pokud to myslíte vážně, začněte tím, že:

  • Pochopení vašich potřeb a určení vhodného technologického zásobníku bez serveru
  • Vyberte si dodavatele bez serveru, jako jsou Google Cloud Functions, Azure Functions, AWS Lambda atd.
  • Vybavte svůj tým výkonnými nástroji pro sledování výkonu a funkcí systému. Dávejte pozor na celkový počet požadavků, omezení, počty chyb, úspěšnost, trvání požadavku a latenci.

Prodejci bez serveru

Na trhu existuje mnoho bezserverových prodejců nebo cloudových poskytovatelů, ze kterých si můžete vybrat. Některé z nejlepších jsou:

  • AWS Lambda: Je ideální pro organizace, které již využívají služby AWS. Integruje se s širokou škálou služeb pro ukládání, streamování a databáze.
  • Funkce Microsoft Azure: Pokud používáte Visual Studio Code, jděte do toho. Funguje hladce s DevOps a Azure Pipelines pro CI/CD. Podporuje také funkce Durable Functions pro stavové funkce a nabízí integrované monitorování.
  • Funkce Google Cloud: Pokud používáte služby Google, je to dobré. Podporuje aplikace JS, Go a Python, umožňuje spouštění funkcí z Google Assistant nebo GCP a nabízí vestavěné škálování.
  • IBM Cloud Functions: Pokud chcete zvolit model bez serveru založený na Apache OpenWhisk, IBM Cloud Functions je pro vás. Zahrnuje vynikající monitorování výkonu, spouštění událostí z REST API nebo cloudových služeb IBM a integruje se s IBM API Gateway pro správu koncových bodů.
  • Knative: Pokud provozujete služby na Kubernetes, jděte do toho. Je podporován společnostmi Google, Red Hat, IBM atd.
  • Cloudflare Workers: Je to dobré pro aplikace vyžadující vysokou odezvu, zejména aplikace JavaScript. Podporuje Workers KV pro ukládání dat a WebAssembly, které vám pomohou zkompilovat a poskytnout více jazyků. Také jeho vysoká distribuční síť se 193 datovými centry zlepšuje latenci a odezvu.

Závěr: Budoucnost serveru bez serveru

Bezserverové výpočty se vyvíjejí s rostoucí poptávkou po vysoce škálovatelných aplikacích. Poskytuje také mnoho výhod, které cloud computing nabízí, jako je větší pohodlí, nákladová efektivita, vyšší produktivita a další.

Podle an Průzkum O’Reilly40 % respondentů pracuje ve společnostech, které přijaly bezserverovou architekturu.

Přestože serverless má stále určité obavy, jako je latence kvůli studeným startům, testování, ladění atd., poskytovatelé cloudu na nich pracují. Brzy by se mohla objevit rafinovanější forma bez serverů s více výhodami a vyřešenými problémy. Očekává se tedy, že popularita a využití bezserverového modelu v budoucnu poroste.

Také by vás mohlo zajímat: 7 způsobů, jak bezserverové počítače jsou na vzestupu