Programování

Co je to bez serveru? Vysvětlení výpočtů bez serveru

Vývojáři tráví nespočet hodin řešením obchodních problémů s kódem. Pak je řada na operačním týmu, aby strávil nespočet hodin, nejprve přijde na to, jak získat kód, který vývojáři píší a běží na jakýchkoli počítačích, které jsou k dispozici, a za druhé zajistí, aby tyto počítače fungovaly hladce. Druhá část je skutečně nikdy nekončící úkol. Proč tuto část neponechat někomu jinému?

Mnoho inovací v IT za poslední dvě desetiletí - virtuální stroje, cloudové výpočty, kontejnery - bylo zaměřeno na zajištění toho, že nemusíte příliš přemýšlet o základním fyzickém stroji, na kterém běží váš kód. Výpočetní technika bez serveru je stále populárnějším paradigmatem, které vede tuto touhu k logickému závěru: S výpočetní technikou bez serveru nemusíte vědět cokoliv o hardwaru nebo operačním systému, na kterém běží váš kód, protože se o vás postará poskytovatel služeb.

Co je to výpočet bez serveru?

Výpočet bez serveru je model spuštění pro cloud, ve kterém poskytovatel cloudu dynamicky přiděluje - a poté účtuje poplatky uživateli - pouze výpočetní prostředky a úložiště potřebné k provedení konkrétní části kódu. Přirozeně stále existují servery, ale o jejich zajišťování a údržbu se plně stará poskytovatel. Chris Munns, obhájce společnosti Amazon pro server, na konferenci v roce 2017 uvedl, že z pohledu týmu, který připravuje a zavádí kód, „neexistují vůbec žádné servery, které by bylo možné spravovat nebo poskytovat. To nezahrnuje nic, co by bylo holé, nic, co by bylo virtuální, nic, co by byl kontejner - cokoli, co zahrnuje správu hostitele, opravu hostitele nebo jednání s čímkoli na úrovni operačního systému, není něco, co byste měli dělat v svět bez serveru. “

Jak vysvětluje vývojář Mike Roberts, tento termín byl kdysi používán pro tzv back-end-as-a-service scénáře, kdy by se mobilní aplikace připojila k serveru typu back-end hostovanému výhradně v cloudu. Ale dnes, když lidé mluví o výpočtech bez serveru, nebo bezserverová architektura, mají na mysli funkce jako služba nabídky, do kterých zákazník zapíše kód pouze řeší obchodní logiku a nahrává ji poskytovateli. Tento poskytovatel se postará o veškeré zajišťování hardwaru, správu virtuálních strojů a kontejnerů a dokonce i úkoly, jako je multithreading, které jsou často zabudovány do kódu aplikace.

Funkce bez serveru jsou událost-řízený, což znamená, že kód je vyvolán pouze při spuštění požadavkem. Poskytovatel účtuje pouze za výpočetní čas použitý daným spuštěním, nikoli paušální měsíční poplatek za údržbu fyzického nebo virtuálního serveru. Tyto funkce lze vzájemně propojit a vytvořit zpracovatelský kanál, nebo mohou sloužit jako komponenty větší aplikace, interakce s jiným kódem běžícím v kontejnerech nebo na konvenčních serverech.

Výhody a nevýhody výpočetní techniky bez serveru

Z tohoto popisu by měly být jasné dvě z největších výhod práce bez serveru: vývojáři se mohou soustředit na obchodní cíle kódu, který píší, spíše než na otázky infrastruktury; a organizace platí za výpočetní prostředky, které skutečně používají, velmi granulovaným způsobem, místo aby kupovaly fyzický hardware nebo pronajímaly cloudové instance, které většinou nečinně fungují.

Jak zdůrazňuje Bernard Golden, tento druhý bod má zvláštní výhodu pro aplikace založené na událostech. Například můžete mít aplikaci, která je většinu času nečinná, ale za určitých podmínek musí zpracovat mnoho požadavků na události najednou. Nebo můžete mít aplikaci, která zpracovává data odeslaná ze zařízení IoT s omezeným nebo přerušovaným připojením k internetu. V obou případech by tradiční přístup vyžadoval zajištění mohutného serveru, který by zvládl špičkové pracovní kapacity - ale tento server by byl většinu času nedostatečně využíván. U architektury bez serveru byste platili pouze za prostředky serveru, které skutečně používáte. Výpočet bez serveru by byl také vhodný pro konkrétní druhy dávkového zpracování. Jedním z kanonických příkladů případu použití architektury bez serveru je služba, která nahraje a zpracuje řadu jednotlivých obrazových souborů a odešle je do jiné části aplikace.

Snad nejviditelnější nevýhodou funkcí bez serveru je, že jsou záměrně pomíjivé a jak říká AlexSoft, „nevhodné pro dlouhodobé úkoly“. Většina poskytovatelů bez serveru nenechá váš kód spouštět déle než několik minut a při zapnutí funkce nezachová žádná stavová data z dříve spuštěných instancí. Související problém spočívá v tom, že roztočení kódu bez serveru může trvat až několik sekund - není to problém pro mnoho případů použití, ale pokud vaše aplikace vyžaduje nízkou latenci, buďte varováni.

Mnoho dalších nevýhod, jak zdůraznili Rohit Akiwatkar a Gary Arora, má co do činění s uzamčením dodavatele. I když jsou k dispozici možnosti otevřeného zdroje, na trhu bez serverů dominují velcí komerční poskytovatelé cloudu, jak si o tom za chvíli povíme. To znamená, že vývojáři často používají nástroje od svých dodavatelů, což ztěžuje změnu, pokud rostou nespokojenost. A protože tolik výpočetní techniky bez serveru probíhá, podle definice, na infrastruktuře dodavatele, může být obtížné integrovat kód bez serveru do interního vývojového a testovacího kanálu.

Dodavatelé bez serveru: AWS Lambda, Azure Functions a Google Cloud Functions

Moderní doba výpočetní techniky bez serveru začala spuštěním AWS Lambda, platformy založené na cloudové službě Amazonu, v roce 2014. Microsoft v roce 2016 následoval Azure Functions. Google Cloud Functions, která byla v beta verzi od roku 2017, konečně dosáhla produkčního stavu v červenci 2018. Tyto tři služby mají mírně odlišná omezení, výhody, podporované jazyky a způsoby, jak dělat věci. Rohit Akiwatkar má dobrý a podrobný přehled o rozdílech mezi těmito třemi. V provozu je také IBM Cloud Functions, která je založena na open source platformě Apache OpenWhisk.

Mezi všemi bezserverovými výpočetními platformami je AWS Lambda nejvýznamnější a očividně měla nejvíce času na vývoj a vyspělost. má pokrytí aktualizací a nových funkcí přidaných do AWS Lambda za poslední rok.

Zásobníky bez serveru

Jak je tomu v mnoha softwarových oblastech, svět bez serverů zaznamenal vývoj hromádky softwaru, který spojuje různé komponenty potřebné k vytvoření aplikace bez serveru. Každý zásobník se skládá z a programováníJazyk že zapíšete kód, an aplikační rámec , která poskytuje strukturu vašeho kódu a sadu spouští že platforma pochopí a použije k zahájení provádění kódu.

I když můžete kombinovat různé konkrétní nabídky v každé z těchto kategorií, existují omezení v závislosti na tom, kterého dodavatele používáte, s určitým překrytím. Například pro jazyky můžete použít Node.js, Java, Go, C # a Python na AWS Lambda, ale na funkcích Azure nativně fungují pouze JavaScript, C # a F #. Pokud jde o spouštěče, AWS Lambda má nejdelší seznam, ale mnoho z nich je specifických pro platformu AWS, jako je Amazon Simple Email Service a AWS CodeCommit; Funkce Google Cloud Functions lze zatím spouštět pomocí obecných požadavků HTTP. Paul Jaworski podrobně zkoumá hromádky pro každou ze tří velkých nabídek.

Bezserverové rámce

Stojí za to trochu přetrvávat rámec část rovnice, protože to bude hodně definovat, jak nakonec vytvoříte aplikaci. Amazon má svou vlastní nativní nabídku, open source Serverless Application Model (SAM), ale existují i ​​další, z nichž většina je multiplatformní a také open source. Jeden z nejpopulárnějších se nazývá poměrně obecně Serverless a zdůrazňuje, že poskytuje stejné prostředí pro každou podporovanou platformu, tj. AWS Lambda, Azure Functions, Google Cloud Functions a IBM OpenWhisk. Další populární nabídkou je Apex, který může pomoci přivést do konfliktu některé jazyky, které jsou pro některé poskytovatele jinak nedostupné.

Databáze bez serveru

Jak jsme si poznamenali výše, jedním z vtípků práce s kódem bez serveru je to, že nemá trvalý stav, což znamená, že hodnoty lokálních proměnných nepřetrvávají napříč instancemi. Jakákoli trvalá data, ke kterým váš kód potřebuje přístup, musí být uložena jinde a spouštěče dostupné v zásobnících pro hlavní dodavatele zahrnují všechny databáze, se kterými mohou vaše funkce interagovat.

Některé z těchto databází jsou samy označovány jako bez serveru. To znamená, že se chovají podobně jako jiné funkce bez serveru, o kterých jsme hovořili v tomto článku, se zjevnou výjimkou, že data jsou uložena na neurčito. Ale velká část režie správy spojená se zajišťováním a údržbou databáze je odložena stranou. Jak říká vývojář Jeremy Daly: „Vše, co musíte udělat, je nakonfigurovat klastr a poté se za vás automaticky provede veškerá údržba, opravy, zálohy, replikace a škálování.“ Stejně jako u nabídek funkcí jako služba platíte pouze za výpočetní čas, který skutečně používáte, a zdroje se podle potřeby otáčejí nahoru a dolů, aby odpovídaly poptávce.

Tři největší poskytovatelé bez serveru nabízejí každý své vlastní databáze bez serveru: Amazon má Aurora Serverless a DynamoDB, Microsoft má Azure Cosmos DB a Google má Cloud Firestore. Nejedná se však o jediné dostupné databáze. Nemanja Novkovic má informace o dalších nabídkách.

Výpočet bez serveru a Kubernetes

Kontejnery pomáhají napájet technologii bez serveru pod kapotou, ale o režii jejich správy se stará prodejce, a proto je pro uživatele neviditelná. Mnozí považují práci bez serveru za způsob, jak získat mnoho výhod kontejnerovaných mikroslužeb, aniž by museli řešit jejich složitost, a dokonce začínají mluvit o post-kontejnerovém světě.

Ve skutečnosti budou kontejnery a výpočet bez serveru téměř jistě existovat po mnoho dalších let a ve skutečnosti mohou funkce bez serveru existovat ve stejné aplikaci jako kontejnerové mikroslužby. Kubernetes, nejoblíbenější platforma pro orchestraci kontejnerů, může také spravovat infrastrukturu bez serveru. Ve skutečnosti můžete s Kubernetes integrovat různé typy služeb do jednoho klastru.

Bez serveru offline

Vyhlídka na zahájení práce s výpočty bez serveru může být trochu zastrašující, protože se zdá, že byste se museli zaregistrovat u dodavatele, abyste si mohli zahrát a zjistit, jak to funguje. Ale nebojte se: Existují způsoby, jak spustit kód bez serveru offline na vašem místním hardwaru. Například AWS SAM poskytuje místní funkci, která umožňuje testovat kód Lambda offline. A pokud používáte aplikační framework Serverless, podívejte se na server-offline, zásuvný modul, který umožňuje místní spuštění kódu. Šťastné experimentování!

$config[zx-auto] not found$config[zx-overlay] not found