Prečo je revolúcia bez servera uviaznutá

Kľúčové body

  • Už niekoľko rokov sa nám sľubuje, že bezserverová výpočtová technika prinesie novú éru bez špecifického operačného systému na spustenie aplikácií. Bolo nám povedané, že táto štruktúra vyrieši veľa problémov so škálovateľnosťou. V skutočnosti je všetko inak.
  • Zatiaľ čo mnohí považujú bezserverové pripojenie za nový nápad, jeho korene možno vystopovať až do roku 2006 s príchodom Zimki PaaS a Google App Engine, ktoré používajú architektúru bez servera.
  • Existujú štyri dôvody, prečo sa revolúcia bez servera zastavila, od obmedzenej podpory programovacích jazykov až po problémy s výkonom.
  • Bezserverová výpočtová technika nie je až taká zbytočná. Vôbec nie. Nemali by sa však považovať 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 revolúcie bez serverov. Stačí letmý pohľad na priemyselnú tlač za posledných niekoľko rokov a je ľahké dospieť k záveru, že tradičný model servera je mŕtvy a že v priebehu niekoľkých rokov budeme všetci používať architektúry bez serverov.

Ako každý z brandže vie a ako sme na to poukázali aj v našom článku o stav bezserverových počítačov, toto je nesprávne. Napriek mnohým článkom o zásluhách bezserverová revolúcia, sa to nikdy nekonalo. V skutočnosti, ukazuje najnovší výskumže táto revolúcia sa možno dostala do slepej uličky.

Niektoré zo sľubov modelov bez servera sa určite splnili, ale nie všetky. Nie každý.

V tomto článku sa chcem pozrieť na dôvody tohto stavu. Prečo je nedostatočná flexibilita modelov bez servera stále prekážkou ich širšieho prijatia, aj keď zostávajú užitočné za špecifických, dobre definovaných okolností.

Čo sľubovali adepti bezserverových počítačov

Predtým, ako sa pustíme do výziev bezserverových počítačov, pozrime sa, čo mal poskytnúť. Prísľub revolúcie bez serverov boli početné a niekedy veľmi ambiciózne.

Pre tých, ktorí tento pojem nepoznajú, je tu rýchla definícia. Bezserverová výpočtová technika definuje architektúru, v ktorej aplikácie (alebo časti aplikácií) bežia na požiadanie v runtime prostrediach, ktoré sú zvyčajne vzdialené. Okrem toho môžu byť systémy bez servera hostené doma. Budovanie odolných bezserverových systémov bolo v posledných rokoch hlavným problémom systémových administrátorov a spoločností SaaS, keďže (tvrdí sa) táto architektúra ponúka niekoľko kľúčových výhod oproti „tradičnému“ modelu klient-server:

  1. Modely bez servera nevyžadujú, aby si používatelia udržiavali svoje vlastné operačné systémy alebo dokonca vytvárali aplikácie kompatibilné s konkrétnymi operačnými systémami. Namiesto toho vývojári vytvárajú zdieľaný kód, nahrávajú ho na platformu bez servera a sledujú jeho spustenie.
  2. Prostriedky v rámcoch bez servera sa zvyčajne účtujú po minútach (alebo dokonca po sekundách). To znamená, že klienti platia len za čas, kedy kód skutočne spúšťajú. To je v porovnaní s tradičným cloudovým VM, kde je stroj väčšinu času nečinný, ale musíte zaň zaplatiť, priaznivo.
  3. Vyriešený bol aj problém škálovateľnosti. Prostriedky v bezserverových rámcoch sú dynamicky prideľované, takže systém môže ľahko zvládnuť náhly nárast dopytu.

Stručne povedané, modely bez servera poskytujú flexibilné, lacné a škálovateľné riešenia. Je prekvapujúce, že nás tento nápad nenapadol skôr.

Je to naozaj nový nápad?

V skutočnosti táto myšlienka nie je nová. Koncept umožňujúci používateľom platiť iba za čas, počas ktorého je kód skutočne spustený, existuje už od jeho predstavenia Zimki PaaS v roku 2006 a približne v rovnakom čase Google App Engine ponúkal veľmi podobné riešenie.

V skutočnosti to, čo teraz nazývame „bezserverový“ model, je staršie ako mnohé technológie, ktoré sa teraz nazývajú „cloudové natívne“, ktoré poskytujú takmer to isté. Ako bolo uvedené, modely bez serverov sú v podstate len rozšírením obchodného modelu SaaS, ktorý existuje už desaťročia.

Je tiež potrebné si uvedomiť, že bez servera nie je architektúra FaaS, hoci medzi nimi existuje spojenie. FaaS je v podstate výpočtovo-centrická časť architektúry bez servera, ale nepredstavuje celý systém.

Tak o čom je ten rozruch? Keďže miera penetrácie internetu v rozvojových krajinách neustále rastie, súčasne sa zvyšuje aj dopyt po výpočtových zdrojoch. Napríklad mnohé krajiny s rýchlo rastúcim sektorom elektronického obchodu jednoducho nemajú výpočtovú infraštruktúru pre aplikácie na týchto platformách. Tu prichádzajú na rad platené platformy bez serverov.

Problémy s modelmi bez servera

Háčik je v tom, že modely bez servera majú... problémy. Nechápte ma zle: nehovorím, že sú samé o sebe zlé alebo za určitých okolností neprinášajú významnú hodnotu niektorým spoločnostiam. Ale hlavné tvrdenie „revolúcie“ – že architektúra bez serverov rýchlo nahradí tradičnú architektúru – sa nikdy nenaplní.

Preto.

Obmedzená podpora programovacích jazykov

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

Bezserverové platformy sa považujú za platformy podporujúce väčšinu hlavných jazykov. AWS Lambda a Azure Functions tiež poskytujú obal na 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í toto obmedzenie zvyčajne nie je veľký problém. Ale tu ide o to. Jednou z výhod bezserverových modelov má byť, že málo známe, málo používané programy môžu byť použité lacnejšie, pretože platíte len za čas, počas ktorého bežia. A málo známe, málo používané programy sú často napísané v... málo známych, málo používaných programovacích jazykoch.

To podkopáva jednu z kľúčových výhod modelu bez servera.

Väzba predajcu

Druhým problémom bezserverových platforiem alebo prinajmenšom spôsobu, akým sú v súčasnosti implementované, je to, že zvyčajne nie sú podobné na prevádzkovej úrovni. Neexistuje prakticky žiadna štandardizácia z hľadiska funkcií zápisu, nasadenia a správy. To znamená, že migrácia funkcií z jednej platformy na druhú je mimoriadne časovo náročná.

Najťažšou časťou prechodu na model bez servera nie sú výpočtové funkcie, ktoré sú zvyčajne len útržky kódu, ale spôsob, akým aplikácie komunikujú s pripojenými systémami, ako je ukladanie objektov, správa identity a fronty. Funkcie je možné presúvať, ale zvyšok aplikácie nie. Ide o presný opak sľubovaných lacných a flexibilných platforiem.

Niektorí tvrdia, že modely bez servera sú nové a nebol čas na štandardizáciu ich fungovania. Nie sú však také nové, ako som uviedol vyššie, a mnohé ďalšie cloudové technológie, ako sú kontajnery, sa už stali oveľa použiteľnejšími vďaka vývoju a širokému prijatiu dobrých štandardov.

produktivita

Výpočtový výkon platforiem bez servera je ťažké merať, čiastočne preto, že predajcovia majú tendenciu uchovávať informácie v súkromí. Väčšina tvrdí, že funkcie na vzdialených platformách bez serverov bežia rovnako rýchlo ako na interných serveroch, s výnimkou niekoľkých nevyhnutných problémov s latenciou.

Jednotlivé fakty však svedčia o opaku. Funkcie, ktoré predtým neboli spustené na konkrétnej platforme alebo neboli spustené nejaký čas, bude chvíľu trvať, kým sa inicializujú. Je to pravdepodobne spôsobené skutočnosťou, že ich kód bol prenesený na niektoré menej dostupné pamäťové médium, hoci – ako pri benchmarkoch – väčšina predajcov vám o migrácii údajov nepovie.

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 beží vaša platforma bez servera, ale to trochu podkopáva tvrdenie, že tieto platformy sú „agilné“.

Ďalším prístupom je zabezpečiť, aby sa programy dôležité pre produktivitu spúšťali pravidelne, aby boli čerstvé. Tento druhý prístup je, samozrejme, trochu v rozpore s tvrdením, že platformy bez servera sú nákladovo efektívnejšie, pretože platíte len za čas, počas ktorého sú vaše programy spustené. Poskytovatelia cloudu zaviedli nové spôsoby, ako znížiť studené štarty, ale mnohé z nich vyžadujú „škálu na jednu“, čo podkopáva pôvodnú hodnotu FaaS.

Problém so studeným štartom možno čiastočne vyriešiť interným prevádzkovaním systémov bez serverov, ale to má svoje vlastné náklady a zostáva to len okrajová možnosť pre tímy s dobrými zdrojmi.

Nie je možné spustiť celé aplikácie

Nakoniec, možno najdôležitejší dôvod, prečo architektúry bez serverov v dohľadnej dobe nenahradia tradičné modely: (zvyčajne) nedokážu spustiť celé aplikácie.

Presnejšie povedané, je to nepraktické z hľadiska nákladov. Váš úspešný monolit by sa pravdepodobne nemal zmeniť na súbor štyroch tuctov funkcií spojených ôsmimi bránami, štyridsiatimi frontami a tuctom databázových inštancií. Z tohto dôvodu je serverless vhodnejší pre nový vývoj. Takmer žiadna existujúca aplikácia (architektúra) sa nedá migrovať. Môžete migrovať, ale musíte začať od nuly.

To znamená, že vo veľkej väčšine prípadov sa platformy bez serverov používajú ako doplnok k back-end serverom na vykonávanie výpočtovo náročných úloh. To ich veľmi odlišuje od ostatných dvoch foriem cloudových technológií – kontajnerov a virtuálnych strojov – ktoré ponúkajú holistický spôsob vykonávania vzdialených výpočtov. To ilustruje jednu z výziev prechodu z mikroslužieb na bezserverové.

Samozrejme, nie vždy je to problém. Schopnosť pravidelne využívať obrovské výpočtové zdroje bez toho, aby ste museli kupovať vlastný hardvér, môže mnohým organizáciám priniesť skutočné a trvalé výhody. Keď sa však niektoré aplikácie nachádzajú na interných serveroch a iné na cloudových architektúrach bez serverov, správa nadobúda 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. Úprimne. Vývojári len musia pochopiť – najmä ak skúmajú bezserverové po prvýkrát – že táto technológia nie je priamou náhradou serverov. Namiesto toho si pozrite naše tipy a zdroje pre vytváranie aplikácií bez servera a rozhodnúť, ako najlepšie použiť model.

Zdroj: hab.com

Pridať komentár