AWS

Čo je Serverless? AWS Lambda a ďalšie FaaS

Čo je Serverless? AWS Lambda a ďalšie FaaS
Aby sme porozumeli bezserverovým, AWS Lamda a podobným funkciám ako služba, začneme históriou a šírkou výpočtovej techniky a potom uvedieme tieto nové služby do kontextu. Začnime.

Fyzické počítače

Prešli sme dlhou cestou od masívnych serverov doby dotcom. V tých časoch bola serverová infraštruktúra väčšinou lokálna. Podnik prevádzkoval svoje riešenia na fyzickom serveri. Ľudia používali celé samostatné servery na rôzne účely (zálohy, poštový server, webový server atď.). Keď určitý server nedokázal držať krok s rastúcimi potrebami spoločnosti, nahradil ho nový rýchlejší server. Zmenšili ste sa lepším hardvérom. Zmenšili ste sa zvisle.

Hypervízori

Potom prišla éra hypervízorov. Na vzostupe systému VMWare to nabralo na obrátkach a ľudia si uvedomili, že môžu dostať jeden regál, ktorý by vládol všetkým. Jeden stojan na spustenie všetkých rôznych prípadov použitia a poskytnutie každému z nich vlastný samostatný virtuálny stroj. Z toho vzišiel aj cloud computing a podniky prestali priamo investovať do serverového hardvéru a namiesto toho sa rozhodli „prenajať si“ virtuálne servery.

Obrovské a drahé dátové centrá spravovali poskytovatelia cloudových služieb po celom svete. Firmy to využili poskytovaním svojich služieb globálne s využitím najširšej možnej škály dátových centier. To bolo urobené hlavne kvôli zníženiu latencie, zlepšeniu zákazníckej skúsenosti a zameraniu sa na väčší trh.

Toto prinútilo autorov softvéru uvažovať aj o distribuovaných systémoch. Softvér písali tak, aby bežal nie na jednom obrovskom počítači, ale na mnohých priemerných konzistentne a spoľahlivo. Zmenšili ste sa vodorovne.

Stále môžete meniť mierku vertikálne. Vďaka virtualizácii sa v skutočnosti stalo jednoduchšie poskytovanie ďalších zdrojov. Vypli ste VM, upravili ste jeho zdroje a zaplatili ste svojmu poskytovateľovi cloudu niečo navyše. Kúsok koláča.

Základné fyzické servery nezmizli. Poskytovatelia cloudových služieb sú teraz zodpovední za správu zložitosti sieťových rozhraní, kompatibility s OS a ďalších desivých patológií.

Kontajnery

Potom prišli kontajnery. Kontajnery boli touto úžasnou ľahkou abstrakciou. Virtuálne prostredie s operačným systémom, ktoré umožňovalo zabaliť a nasadiť softvér ako jednu jednotku. Rovnako ako virtuálne stroje, každý kontajner nevedel o iných kontajneroch, ale zdieľali rovnaké jadro operačného systému.

Toto umožnilo ľuďom nasadiť softvér na servery (fyzické alebo virtuálne, na tom nezáleží) s ešte vyššou úrovňou abstrakcie. Nezaujímal ťa produkčný operačný systém. Pokiaľ to podporovalo vašu technológiu kontajnerizácie, spustil by váš softvér. Ľahšie sa tiež roztáčajú kontajnery, vďaka čomu boli služby škálovateľnejšie ako kedykoľvek predtým.

To ďalej zvýšilo flexibilitu distribuovaných systémov. S technológiami ako Kubernetes môžete mať zástupy kontajnerov, ktoré prevádzkujú komplexnú škálu služieb. Distribuované systémy ponúkajú veľa výhod, vysokú dostupnosť, robustnosť a schopnosť liečiť sa po zlyhaní uzla.

Pretože sú také zložité, zároveň je ťažšie ich navrhnúť, nasadiť, udržiavať, monitorovať a ladiť. To je v rozpore s pôvodným trendom abstrahovania od zložitosti vášho softvéru a delegovania tejto zodpovednosti na vášho poskytovateľa cloudových služieb. Tu prichádza na rad architektúra bez serverov.

Bez servera alebo ako služba (FaaS)

Myšlienka bez servera si získala pozornosť hlavne vďaka AWS Lambda, a tu ju budem používať ako model pre rozhovor o serverless. Princípy, na ktorých je založený FaaS, sú:

Keď nikto nemá prístup k vašim službám, služby nie sú aktívne. Inak tomu nebolo v prípade tradičných riešení hostingu, kde platíte za VPS, ktorý je vždy funkčný, aj keď bol nečinný a nerobil nič užitočnejšie ako počúvanie novej žiadosti.
V architektúre bez servera vaša služba nefunguje, pokiaľ ju niekto skutočne nechce použiť. Keď príde požiadavka, za chodu sa vytvorí služba, ktorá ju vybaví.

Ako to funguje?

Vaša funkcia (napríklad program Python, Go alebo Java) sa nachádza ako súbor na AWS Lambda. S touto funkciou priradíte určité spúšťacie udalosti, napríklad bránu API alebo nový objekt prichádzajúci do vášho segmentu S3. A určité zdroje, ako je databáza alebo iný objektový objekt alebo inštancia EC2.

V reakcii na ktorúkoľvek z pridružených spúšťacích udalostí vytvorí AWS Lambda kontajner s vašou funkciou v ňom. Funkcia sa vykoná a dá odpoveď. Napríklad, ak do vášho vedra S3 príde nový obrázok, môže mať AWS Lambda v sebe kód strojového učenia, ktorý by tento obrázok analyzoval a zapísal jeho výstup do DynamoDB (jedna z dátových služieb AWS).

Nemusíte platiť za celý server, ale iba za množstvo pamäte, ktoré ste pridelili svojej funkcii, počet požiadaviek, ktoré dostanete, a za ako dlho vaša funkcia beží.

Navyše sa nemusíte obávať zmeny veľkosti kontajnerov v reakcii na veľké prichádzajúce pracovné zaťaženie. Ak dôjde k mnohým spúšťacím udalostiam súčasne, potom sa AWS postará o roztočenie nových kontajnerov a plánovanie pracovných záťaží medzi nimi a všetkými ostatnými zložitosťami.

Nie úplné riešenie

Keď prišli virtuálne stroje, fyzické servery neprestali existovať. Keď prišli kontajnery, stále sme používali VM. FaaS je abstrakcia vyššej úrovne a skutočne sa hodí k modernému dizajnu RESTful API, bezstavovým službám a ľahkým jazykom ako Node.js alebo Python.

Stále však beží na fyzickom serveri (spravovanom napríklad AWS), stále počúva prichádzajúce požiadavky (za to jednoducho neplatíte) a stále musíte dáta ukladať vytrvalo, a preto má integrácie pre S3, EC2 a ďalšie služby. Je to napriek tomu užitočná abstrakcia.

Pridajte gestá myši do systému Windows 10 pomocou týchto bezplatných nástrojov
V posledných rokoch sa počítače a operačné systémy veľmi vyvinuli. Boli časy, keď používatelia museli prechádzať správcami súborov pomocou príkazov. R...
Ovládajte a spravujte pohyb myši medzi viacerými monitormi v systéme Windows 10
Správca myši s duálnym displejom umožňuje ovládať a konfigurovať pohyb myši medzi viacerými monitormi spomalením jeho pohybu blízko hranice. Windows 1...
WinMouse vám umožňuje prispôsobiť a vylepšiť pohyb ukazovateľa myši na počítači so systémom Windows
Ak chcete vylepšiť predvolené funkcie kurzora myši, použite freeware WinMouse. Pridáva ďalšie funkcie, ktoré vám pomôžu vyťažiť zo svojej skromnej myš...