AWS

Co je Serverless? AWS Lambda a další FaaS

Co je Serverless? AWS Lambda a další FaaS
Abychom porozuměli nabídkám bez serveru, AWS Lamda a podobným funkcím jako služba, začneme s historií a strukturou výpočetní techniky a poté tyto nové služby uvedeme do kontextu. Začněme.

Fyzické počítače

Prošli jsme dlouhou cestu od masivních serverů éry dotcomů. V té době byla serverová infrastruktura většinou lokální. Firma provozovala svá řešení na fyzickém serveru. Lidé používali celé samostatné servery pro různé účely (zálohy, poštovní server, webový server atd.). Když určitý server nedokázal držet krok s rostoucími potřebami společnosti, byl nahrazen novějším rychlejším serverem. Škálovali jste tím, že jste získali lepší hardware. Změnili jste svisle.

Hypervisory

Pak přišla éra hypervisorů. Získal na síle s rozmachem VMWare a lidé si uvědomili, že mohou získat jeden regál, který by jim vládl všem. Jeden stojan pro spuštění všech různých případů použití a pro každý z nich vlastní samostatný virtuální stroj. To také vedlo k cloud computingu a podniky přestaly přímo investovat do serverového hardwaru a místo toho se rozhodly „pronajmout“ virtuální servery.

Obrovská a drahá datová centra spravovali poskytovatelé cloudových služeb po celém světě. Podniky to využily tím, že globálně zajišťovaly své služby a využívaly co nejširší škálu datových center. Důvodem bylo hlavně snížení latence, zlepšení zákaznické zkušenosti a cílení na větší trh.

Díky tomu autoři softwaru přemýšleli také o distribuovaných systémech. Psali software, aby běžel ne na jediném obrovském počítači, ale na mnoha průměrných konzistentním a spolehlivým způsobem. Změnili jste horizontálně.

Stále můžete měnit měřítko svisle. Ve skutečnosti se díky virtualizaci usnadnilo zajišťování více zdrojů. Vypnuli jste virtuální počítač, upravili jeho zdroje a zaplatili svému poskytovateli cloudu něco navíc. Kus dortu.

Základní fyzické servery nezmizely. Poskytovatelé cloudu jsou nyní zodpovědní za správu složitosti síťových rozhraní, kompatibility s OS a dalších děsivých patologií.

Kontejnery

Pak přišly kontejnery. Kontejnery byly touto úžasnou lehkou abstrakcí. Virtuální prostředí s operačním systémem, které umožňovalo zabalit a nasadit software jako jednu jednotku. Stejně jako virtuální stroje každý kontejner běžel nevědomý jiných kontejnerů, ale sdílel stejné jádro operačního systému.

To umožnilo lidem nasadit software na servery (fyzický nebo virtuální, na tom nezáleží) na ještě vyšší úrovni abstrakce. Nezáleželo vám na produkčním operačním systému. Pokud podporoval vaši technologii kontejnerizace, spustil by váš software. Také kontejnery se snáze roztočí, což činí služby škálovatelnějšími než kdy dříve.

To dále zvýšilo flexibilitu distribuovaných systémů. S technologiemi, jako je Kubernetes, můžete mít legie kontejnerů provozujících komplexní řadu služeb. Distribuované systémy nabízejí mnoho výhod, vysokou dostupnost, robustnost a schopnost léčit se při selhání uzlu.

Současně, protože jsou tak složité, je také obtížnější je navrhnout, nasadit, udržovat, monitorovat a ladit. To je v rozporu s původním trendem abstrakce složitosti vašeho softwaru a delegování této odpovědnosti na vašeho poskytovatele cloudu. To je místo, kde přichází architektura bez serveru.

Bez serveru nebo jako služba (FaaS)

Myšlenka bez serveru získala trakci hlavně kvůli AWS Lambda, a zde ji budu používat jako model, abych mluvil o bez serveru. Zásady, na kterých je založen FaaS, jsou:

Pokud k vašim službám nikdo nepřistupuje, služby nejsou aktivní. To nebyl případ tradičních hostingových řešení, kde platíte za VPS, který je vždy funkční a běží, i když nečinný nečiní nic užitečnějšího než poslouchat nový požadavek.
V architektuře bez serveru vaše služba nefunguje, pokud ji někdo ve skutečnosti nechce používat. Když přijde požadavek, za chodu se vytvoří služba za běhu.

Jak to funguje?

Vaše funkce (například program Python, Go nebo Java) sedí jako soubor na AWS Lambda. S touto funkcí přidružíte určité spouštěcí události, například bránu API nebo nový objekt přicházející do vašeho kbelíku S3. A určité zdroje, jako je databáze nebo jiné úložiště objektů nebo instance EC2.

V reakci na jakoukoli přidruženou spouštěcí událost vytvoří AWS Lambda kontejner s vaší funkcí uvnitř. Funkce se spustí a dá odpověď. Například pokud do vašeho kbelíku S3 přijde nový obrázek, může mít AWS Lambda v sobě kód strojového učení, který by tento obrázek analyzoval a zapisoval jeho výstup do DynamoDB (jedné ze služeb datového úložiště AWS).

Nemusíte platit za celý server, ale pouze za množství paměti, které jste přidělili vaší funkci, počet požadavků, které získáte, a za dobu, po kterou vaše funkce běží.

Kromě toho se nemusíte starat o změnu velikosti kontejnerů v reakci na velké příchozí pracovní vytížení. Pokud dojde k mnoha spouštěcím událostem současně, pak se AWS postará o roztočení nových kontejnerů a plánování pracovních zátěží mezi nimi a všemi ostatními složitostmi.

Není to úplné řešení

Když přišly virtuální stroje, fyzické servery nepřestávaly existovat. Když dorazily kontejnery, stále jsme používali virtuální počítače. FaaS je abstrakce vyšší úrovně a opravdu dobře zapadá do moderního designu RESTful API, bezstavových služeb a lehkých jazyků, jako je Node.js nebo Python.

Stále však běží na fyzickém serveru (například spravovaném AWS), stále poslouchá příchozí požadavky (za to prostě neplatíte přímo) a stále musíte ukládat data vytrvale, a proto má integrace pro S3, EC2 a další služby. Je to nicméně užitečná abstrakce.

Kurzor při psaní v systému Windows 10 skáče nebo se pohybuje náhodně
Pokud zjistíte, že kurzor myši skáče nebo se pohybuje sám, automaticky, náhodně při psaní v notebooku nebo počítači se systémem Windows, pak vám někte...
Jak obrátit směr posouvání myši a touchpadu ve Windows 10
Myš a Touchpadnejenže usnadňují výpočet, ale jsou efektivnější a méně časově náročné. Nemůžeme si představit život bez těchto zařízení, ale přesto je ...
Jak změnit velikost, barvu a schéma kurzoru myši a kurzoru v systému Windows 10
Ukazatel myši a kurzor ve Windows 10 jsou velmi důležité aspekty operačního systému. To lze říci i pro jiné operační systémy, takže ve skutečnosti nej...