Prečo bezserverová revolúcia uviazla na mŕtvom bode

Kľúčové body

  • Už niekoľko rokov nám sľubujú, že serverless výpočty otvoria novú éru bez konkrétneho operačného systému pre spúšťanie aplikácií. Hovorilo sa, že tento prístup vyrieši mnohé problémy so škálovateľnosťou. V skutočnosti je všetko inak.
  • Hoci mnohí považujú serverless technológiu za novú myšlienku, jej korene možno vystopovať až do roku 2006, keď sa objavili Zimki PaaS a Google App Engine — v oboch prípadoch sa využíva serverless architektúra.
  • Existujú štyri dôvody, prečo serverless revolúcia zachádza do slepej uličky: od obmedzenej podpory programovacích jazykov po problémy s výkonnosťou.
  • Serverless výpočty nie sú úplne zbytočné. Oproti tomu. Avšak nemali by byť považované za priamu náhradu serverov. Pre niektoré aplikácie môžu byť užitočným nástrojom.

Server je mŕtvy, nech žije server!

Toto je bojový pokrik prívržencov serverless revolúcie. Stačí sa rýchlo pozrieť na odbornú tlač za posledné niekoľko rokov a ľahko dojít k záveru, že tradičný serverový model je mŕtvy a že o niekoľko rokov všetci budeme používať serverless architektúry.

Ako je známe každému v odbore, a ako sme tiež uviedli v našom článku o stave serverless výpočtov, nie je to tak. Napriek mnohým článkom o výhodách serverless revolúcie, táto revolúcia sa vlastne nikdy neuskutočnila. V skutočnosti posledné štúdie ukazujú, že táto revolúcia možno zašla do slepej uličky.

Niektoré z sľubov pre serverless modely boli nepochybne splnené, ale nie všetky. Ani zďaleka nie všetky.

V tomto článku chcem preskúmať dôvody takéhoto stavu. Prečo absencia flexibility serverless modelov ostáva prekážkou ich širšieho prijatia, hoci sú stále užitočné v konkrétnych, jasne definovaných okolnostiach.

Čo sľubovali prívrženci serverless výpočtov

Predtým, ako prejdeme k problémom serverless výpočtov, pozrime sa, čo mali poskytnúť. Sľuby serverless revolúcie boli početné a — občas — veľmi ambiciózne.

Pre tých, ktorí nie sú oboznámení s termínom, tu je stručná definícia. Bezserverové výpočty definujú architektúru, v ktorej aplikácie (alebo časti aplikácií) bežia na požiadanie v prostrediach, ktoré sú zvyčajne hosťované vzdialene. Navyše, bezserverové systémy je možné hostiť aj na vlastnej infraštruktúre. Počas posledných niekoľkých rokov bolo vytvorenie udržateľných bezserverových systémov hlavnou starosťou systémových administrátorov a SaaS spoločností, keďže (ako sa tvrdí) táto architektúra ponúka niekoľko kľúčových výhod v porovnaní s "tradičným" klient-server modelom:

  1. Bezserverové modely nevyžadujú, aby používatelia udržiavali vlastné operačné systémy alebo dokonca vytvárali aplikácie kompatibilné s určitými OS. Namiesto toho vyvíjajúci tvoria spoločný kód, nahrávajú ho na bezserverovú platformu a sledujú jeho vykonávanie.
  2. Zdroje v bezserverových rámcoch sú zvyčajne účtované za minúty (alebo dokonca sekundy). To znamená, že klienti platia len za čas, keď sa kód skutočne vykonáva. To vynikajúco kontrastuje s tradičnou cloudovou VM, kde zariadenie väčšinu času nepracuje, ale platí zaň sa musí.
  3. Problém škálovateľnosti bol tiež vyriešený. Zdroje v bezserverových rámcoch sú prideľované dynamicky, takže systém ľahko zvládne náhle nárasty dopytu.

Jednoducho povedané, bezserverové modely poskytujú flexibilné, cenovo efektívne, škálovateľné riešenia. Je prekvapujúce, že sme na túto myšlienku nepomysleli skôr.

Je to naozaj nová myšlienka?

V skutočnosti nie je myšlienka nová. Koncept, ktorý umožňuje používateľom platiť len za čas, keď je kód skutočne spustený, existuje od doby, kedy bol zavedený v rámci Zimki PaaS v roku 2006, a približne v tej istej dobe Google App Engine ponúkol veľmi podobné riešenie.

V skutočnosti to, čo dnes nazývame "bezserverovým" modelom, je staršie ako mnohé technológie, ktoré teraz nazývame "nativními cloudovými", a ktoré zabezpečujú takmer to isté. Ako už bolo uvedené, bezserverové modely sú v podstate iba pokračovaním obchodného modelu SaaS, ktorý existuje už niekoľko desaťročí.

Je tiež potrebné uznať, že bezserverový model nie je architektúra FaaS, hoci medzi nimi existuje spojenie. FaaS je v podstate výpočtovo orientovaná časť bezserverovej architektúry, no nepredstavuje celú systémovú štruktúru.

Tak na čo je táto celá pozornosť? Nuž, keďže rýchlosť penetrácie internetu do rozvojových krajín naďalej rýchlo rastie, zároveň rastie dopyt po výpočtových zdrojoch. Napríklad v mnohých krajinách s rýchlo rastúcimi sektormi elektronického obchodu prakticky neexistuje výpočtová infraštruktúra pre aplikácie na týchto platformách. A práve tu sa objavujú platené bezserverové platformy.

Problémy bezserverových modelov

Zádrhel je v tom, že bezserverové modely majú... problémy. Nerobte si zle, nehovorím, že sú samé o sebe zlé alebo že neposkytujú významnú hodnotu pre niektoré firmy v určitých okolnostiach. Ale hlavné tvrdenie „revolúcie“ - že bezserverová architektúra rýchlo nahradí tradičnú - sa nikdy nenaplní.

A preto.

Obmedzená podpora programovacích jazykov

Väčšina bezserverových platforiem umožňuje spúšťať len tie aplikácie, ktoré sú napísané v určitých jazykoch. To vážne obmedzuje flexibilitu a prispôsobivosť týchto systémov.

Predpokladá sa, že bezserverové platformy podporujú väčšinu hlavných jazykov. AWS Lambda a Azure Functions tiež poskytujú prostredie pre spúšťanie aplikácií a funkcií v nepodporovaných jazykoch, hoci to často súvisí s nákladmi na výkon. Takže pre väčšinu organizácií zvyčajne toto obmedzenie nie je veľmi významné. Ale tu je ten problém. Predpokladá sa, že jednou z výhod bezserverových modelov je, že menej známe, málo používané programy môžu byť využívané lacnejšie, pretože za ne platíte len počas ich spúšťania. A menej známe, málo používané programy sú často napísané v... menej známych, málo používaných programovacích jazykoch.

To podkopáva jednu z kľúčových výhod bezserverového modelu.

Závislosť od dodávateľa

Druhý problém bezserverových platforiem, alebo aspoň spôsobu, akým sú aktuálne implementované, spočíva v tom, že sa na operačnej úrovni zvyčajne veľmi líšia. Takmer neexistuje žiadna štandardizácia v oblasti písania funkcií, nasadzovania a správy. To znamená, že migrácia funkcií z jednej platformy na druhú trvá mimoriadne dlho.

Najťažšia časť prechodu na bezserverový model nie sú výpočtové funkcie, ktoré sú zvyčajne len kódové útržky, ale spôsob, akým sú aplikácie spojené s pripojenými systémami, ako sú úložisko objektov, správa identity a fronty. Funkcie je možné presunúť, ale zvyšok aplikácie už nie. To je úplný opak sľubovaných lacných a flexibilných platforiem.

Niektorí tvrdia, že bezserverové modely sa objavili nedávno a nebolo dostatok času na štandardizáciu ich fungovania. Ale nie sú až také nové, ako som už spomínal, a mnohé ďalšie cloudové technológie, ako sú kontajnery, sa už stali oveľa prístupnejšími vďaka vývoju a širokému prijatiu dobrých štandardov.

Výkon

Výpočtový výkon bezserverových platforiem sa ťažko meria, čiastočne preto, že dodávatelia sa snažia uchovať informácie v tajnosti. Väčšina tvrdí, že funkcie na vzdialených bezserverových platformách fungujú rovnako rýchlo ako na interných serveroch, s výnimkou niekoľkých nevyhnutných problémov so oneskorením.

Avšak jednotlivé fakty naznačujú opak. Funkcie, ktoré predtým neboli spustené na určitej platforme alebo neboli spustené určitý čas, si vyžadujú určitý čas na inicializáciu. Pravdepodobne to súvisí s tým, že ich kód bol prenesený na niektoré menej prístupné médiá, aj keď – rovnako ako v prípade benchmarkov – väčšina dodávateľov vám nepovie o prenose dát.

Samozrejme, existuje niekoľko spôsobov, ako to obísť. Jedným z nich je optimalizácia funkcií pre akýkoľvek cloudový jazyk, na ktorom vaša bezserverová platforma funguje, ale to trochu podkopáva tvrdenie, že tieto platformy sú "flexibilné."

Iný prístup spočíva v zabezpečení pravidelného behu programov, ktoré sú kritické pre výkon, aby zostali „čerstvé“. Tento druhý prístup je samozrejme trochu v rozpore s tvrdením, že bezserverové platformy sú ekonomickejšie, pretože platíte len za čas behu vašich programov. Cloudoví poskytovatelia implementovali nové spôsoby, ako znížiť studené spustenia, no mnohé z nich si vyžadujú „škálovanie na jeden“ (scale to one), čo podrýva pôvodnú hodnotu FaaS.

Problém „studeného spustenia“ sa dá čiastočne riešiť spustením bezserverových systémov vlastnými silami, ale to so sebou nesie vlastné náklady a zostáva to okrajovou možnosťou pre dobre vybavené tímy.

Nemôžete spúšťať celé aplikácie

Nakoniec, možno najdôležitejší dôvod, prečo bezserverové architektúry v blízkej budúcnosti nenahradia tradičné modely: na nich (zvyčajne) nemôžete spúšťať celé aplikácie.

Presnejšie, nie je to rentabilné z hľadiska nákladov. Váš úspešný monolit pravdepodobne nestojí za to, aby ste ho premenili na súbor štyridsiatich funkcií spojenej ôsmymi bránami, štyridsiatimi frontami a desiatkami instance DB. Z tohto dôvodu je bezserverové riešenie lepšie pre nové vývojové projekty. Takmer žiadnu existujúcu aplikáciu (architektúru) nemožno preniesť. Môžete migrovať, ale budete musieť začať od nuly.

To znamená, že v drvivej väčšine prípadov sú bezserverové platformy používané ako doplnok k interným serverom na vykonávanie úloh vyžadujúcich veľké výpočty. To ich veľmi odlišuje od dvoch ďalších foriem cloudových technológií — kontajnerov a virtuálnych strojov, ktoré ponúkajú celistvý spôsob vykonávania vzdialených výpočtov. To ilustruje jednu z ťažkostí prechodu od mikroslužieb k bezserverovým systémom.

Samozrejme, to nie vždy predstavuje problém. Možnosť občasne využívať obrovské výpočtové zdroje bez nutnosti zakúpiť si vlastný hardvér môže priniesť skutočný a dlhodobý prospech pre mnohé organizácie. Avšak, ak sa niektoré aplikácie nachádzajú na interných serveroch a iné na bezserverových cloudových architektúrach, správa sa dostáva na novú úroveň zložitosti.

Nech žije revolúcia?

Napriek všetkým týmto sťažnostiam nie som proti bezserverovým riešeniam ako takým. Čestné slovo. Vývojári by si však mali uvedomiť - najmä ak prví skúmajú bezserverové modely - že táto technológia nie je priamou náhradou serverov. Namiesto toho si prečítajte naše tipy a zdroje na tvorbu bezserverových aplikácií a rozhodnite sa, ako najlepšie aplikovať tento model.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster