AWS Lambda a Azure Functions: budúcnosť "bez serverov"
„Bezserverová“ architektúra, bežne označovaná jednoducho ako serverless, sa stala vo svete softvérovej architektúry v posledných rokoch mimoriadne trendovým výrazom. Vďaka nej si už viac nemusíte robiť starosti so správou virtuálnych počítačov alebo s platením nečinného hardvéru. Serverless prináša neobmedzený rozsah a vysokú dostupnosť pre každú spoločnosť na svete, od malých startupov až po nadnárodné korporácie. Taká je vízia najpoužívanejších služieb z tejto oblasti – AWS Lambda od Amazon a Azure Functions od Microsoft.
Serverless je horúcou témou a prispeli k tomu aj najväčší dodávatelia cloudu na svete, ktorí do rozvoja tejto infraštruktúry investujú nemalé množstvo prostriedkov. Výraz „bezserverový“ však neznamená, že servery sa vôbec nepoužívajú. Označenie odkazuje najmä na fakt, že spoločnosť, ktorá využíva tieto služby platí za konkrétne využívanie, nie za predplatené pevné množstvo šírky pásma alebo počet serverov. To robí túto službu jedinečnou. Zjednodušene, platíte iba za to, čo skutočne potrebujete. Spoločnosti tak už nepotrebujú investovať veľké zdroje, aby mohli svoje nápady uviesť na trh. V priebehu niekoľkých minút môže vaša aplikácia bežať na spravovanej infraštruktúre či obsluhovať milióny požiadaviek.
Princípy serverless computingu
Jadrom každej aplikácie je kód, ktorý tvorí jej logiku a funkčnosť, či už sa jedná o počítačovú hru alebo podnikový softvér. Tento kód je potrebné spustiť. Zvyčajne chod aplikácií zabezpečuje počítač, server alebo skupina serverov. Servery, aj tie virtuálne, nepatria medzi lacné zariadenia, ich údržba býva náročná a vyžadujú kvalifikovaných a skúsených správcov. Navyše, keď sa napríklad spomínaný podnikový softvér nepoužíva, drahé servery sú nečinné a nevyužité.
Namiesto toho, aby ste postavili komplexnú serverovú infraštruktúru, vám technológia serverless umožní spustiť kód v spravovanej oblasti výpočtových zdrojov a platiť iba za čas, kedy kód skutočne beží. Pri serverless ako zákazník neplatíte za prázdnu kapacitu, ale iba za zdroje skutočne potrebné na spustenie vašich aplikácií a iba vtedy, ak sú tieto aplikácie skutočne spustené. Serverless teda v skutočnosti neodkazuje na úplnú absenciu serverov, ale vzťahuje sa najmä na skúsenosti zákazníka, keďže servery sú preňho „neviditeľné“ – nespravuje ich, nerieši, ani s nimi nijako nekomunikuje.
Serverless je teda model vykonávania cloudových výpočtov, ktorý:
- automaticky poskytuje výpočtové zdroje potrebné na spustenie kódu aplikácie na požiadanie alebo v reakcii na konkrétnu udalosť;
- automaticky prispôsobuje tieto zdroje podľa zvyšovania alebo znižovania dopytu;
- keď aplikácia prestane bežať, automaticky zníži zdroje na nulu.
Serverless zahŕňa služby, postupy a stratégie, ktoré vám umožňujú vytvárať agilnejšie aplikácie, aby ste mohli rýchlejšie inovovať a reagovať na zmeny. Služby založené na tomto princípe, akými sú AWS Lambda či Azure Functions, majú automatické škálovanie, vstavanú vysokú dostupnosť a fakturačný model s platbou za hodnotu. Sú to výpočtové služby riadené udalosťami, ktoré umožňujú spúšťať kód v reakcii na udalosti bez správy akýchkoľvek serverov. Serverless aplikácie sú cloudové systémy založené na udalostiach, bežia v bezstavových výpočtových kontajneroch, ktoré sú spustené udalosťami, sú pominuteľné (môžu trvať jedno vyvolanie) a sú plne spravované poskytovateľom cloudu. Vývoj aplikácií sa spolieha výlučne na kombináciu služieb tretích strán, logiku na strane klienta a diaľkové volania procedúr hostované v cloude (funkcie ako služba – FaaS) .
Aké sú výhody serverless architektúry?
Bezserverové výpočty ponúkajú oproti tradičnej cloudovej alebo serverovej infraštruktúre množstvo výhod. Mnohým vývojárom ponúkajú väčšiu škálovateľnosť, väčšiu flexibilitu a rýchlejšie uvedenie na trh, a to všetko za znížené náklady. Vďaka architektúre bez serverov si vývojári nemusia robiť starosti s nákupom, poskytovaním a správou serverov typu backend. Hlavné výhody serverless prístupu zahŕňajú:
Nižšie náklady – Pri tradičných cloudových alebo backendových službách často platíte aj za nevyužitý priestor alebo nečinný čas CPU, pri serverless platíte len za skutočne využívanú kapacitu a čas.
Zjednodušená škálovateľnosť – Vývojári používajúci bezserverovú architektúru sa nemusia starať o politiky na rozšírenie kódu, serverless technológia spracováva všetky škálovania na požiadanie.
Rýchlejšie vybavenie – Serverless architektúra môže výrazne skrátiť čas uvedenia na trh. Namiesto toho, aby vývojári potrebovali komplikovaný proces nasadenia na zavedenie opráv chýb a nových funkcií, môžu kód pridávať a upravovať po častiach.
Produktivita a agilita – Umožňuje vývojovým tímom zamerať sa na písanie kódu, nie na správu infraštruktúry. Poskytuje vývojárom oveľa viac času na inovácie a optimalizáciu ich funkcií front-end aplikácií a obchodnej logiky.
AWS Lambda verzus Azure Functions
AWS Lambda
AWS Lambda je serverless služba od spoločnosti Amazon. S Lambda môžete spustiť kód prakticky pre akýkoľvek typ aplikácie alebo backendovej služby, a to s nulovou administráciou. Lambda vie presne alokovať potrebný výpočtový výkon, spustiť váš kód na základe prichádzajúcej požiadavky alebo udalosti pre akýkoľvek rozsah návštevnosti. Môžete nastaviť, aby sa váš kód automaticky spúšťal z viac ako 200 AWS služieb a SaaS aplikácií, alebo ho volať priamo z akejkoľvek webovej alebo mobilnej aplikácie. Funkcie Lambda môžete písať vo svojom obľúbenom jazyku (Node.js, Python, Go, Java a ďalšie) a používať bezserverové aj kontajnerové nástroje.
Kľúčové funkcie:
- Nepretržité automatické škálovanie na základe pracovného zaťaženia;
- Náklady optimalizované na milisekundu;
- Konzistentný výkon v akomkoľvek rozsahu;
Azure Functions
Je bezserverové prostredie na báze výpočtov na požiadanie vyvinuté spoločnosťou Microsoft. Ponúka viacero možností nasadenia funkcií, ako napríklad One Drive, GitHub, Kudu Console, DropBox, Visual Studio a Zip. Azure Functions umožňuje implementovať logiku systému do ľahko dostupných blokov kódu. Tieto bloky kódu sa nazývajú „funkcie“. Rôzne funkcie je možné spustiť kedykoľvek, keď potrebujete reagovať na kritické udalosti. Ak sa požiadavky zvyšujú, Azure Functions uspokojuje dopyt s toľkými zdrojmi a inštanciami funkcií, koľko je potrebné – ale iba v prípade potreby. Ak sa požiadavky znižujú, všetky ďalšie zdroje a inštancie aplikácií sa automaticky prerušujú.
Kľúčové vlastnosti:
- Automatizované a flexibilné škálovanie na základe objemu vašej pracovnej záťaže;
- integrovaný programovací model založený na spúšťačoch a väzbách;
- Rozmanitosť programovacích jazykov a možností hostenia;
Functionality | AWS Lambda | Microsoft Azure Functions |
---|---|---|
Scalability & Availability | Automatic scaling | Manual or metered scaling |
Number of functions | Unlimited | Unlimited |
Executions | 1 / 000 parallel executions/ account/ region | Unlimited |
Maximum Execution time | 900 seconds | 600 seconds |
Supported languages | Python / Go / C# / Java / Node.js / Ruby | Java / Python / C# / F# / Node.js / Powershell |
Deployment | Upload .zip or .jar file / AWS SAM / Serverless Framework | Git / Dropbox / visual studio / Kudu console / One drive / Zip deployment / Azure CLI |
Event-sources | S3 / SNS / SQS / SES / DynamoDB / Kinesis / CloudWatch / HTTP | IoT Hub / Service Bus / HTTP / Event grid/hub / Cosmos DB / Storage / and others |
Version | Production-ready | Production-ready |
AWS Lambda i Azure Functions sú veľmi podobné služby, ale majú svoje špecifiká a na základe účelu použitia medzi nimi existujú aj dôležité rozdiely. Všeobecne však nie je možné jednoznačne povedať, ktorá služba je lepšia či horšia. Výber medzi AWS Lamba a Azure Functions ovplyvňujú najmä faktory, ako je váš rozpočet, ciele projektu či časový rámec. Výber teda môže byť výzvou, aj preto je vhodné obrátiť sa na skúseného partnera, ktorý zohľadní všetky aspekty a vyberie riešenie, ktoré z krátkodobého i dlhodobého hľadiska splní vaše očakávania.
Budúcnosť serverless computingu
Veľkosť globálneho trhu serverless computingu bola v roku 2017 ocenená na približne 3,1 miliardy dolárov a predpokladá sa, že do roku 2025 dosiahne takmer 22 miliárd dolárov. Serverless je teda síce pomerne mladou paradigmou, ale neustále sa vyvíja a rastie. Jeho poskytovatelia, najmä Microsoft a Amazon, neustále vylepšujú svoje služby a odstraňujú jeho nedostatky, ako napríklad „studené štarty“. S týmto pokrokom by ste si už teda nemali klásť otázku, či začať serverless využívať, ale aký najvhodnejší prístup zvoliť. V nasledujúcom desaťročí sa serverless veľmi pravdepodobne stane nevyhnutnou súčasťou úspešnej digitálnej transformácie a pomôže urobiť z cloudu hybnú silu globálneho trhu.
Technologický nadšenec s vášňou pre programovanie a nové technológie. ...
Peter Pokoraczki DevOps Engineer & Cloud Architect