Serverless Computing

Serverless Computing

Posledné dve desaťročia pribudlo v IT svete mnoho inovácií, ako sú napríklad virtuálne servery, cloud computing a kontajnerizácia. Vďaka nim nie je nutné uvažovať na akom fyzickom stroji bežia systémy. „Bezserverová“ architektúra zvyčajne označovaná ako „serverless“ je čoraz populárnejšia, nakoľko používateľ nepotrebuje rozumieť hardvéru alebo operačnému systému, na ktorom beží kód, keďže sa za neho o všetko postará poskytovateľ služieb. Výraz „bezserverový“ neznamená, že servery sa nepoužívajú. Pomenovanie odkazuje predovšetkým na skutočnosť, že organizácia, ktorá využíva tieto služby platí za skutočné využívanie, nie za subskribované pevné množstvo šírky pásma alebo počet serverov. Toto robí túto službu unikátnou. Zjednodušene, platíte len za to, čo reálne potrebujete. Spoločnosti tak už nepotrebujú vynakladať množstvo zdrojov, aby dokázali svoje idey uviesť na trh. V krátkom čase môže vaša aplikácia bežať na serverless architektúre a obsluhovať milióny požiadaviek.

„Serverless“ je IT model určený pre vývoj a prevádzku aplikácií v cloude, ktorý umožňuje programátorom vytvárať a spúšťať aplikačný kód bez nutnosti správy serverov, či backendovej infraštruktúry. Poskytovateľ cloudových služieb prevádzkuje fyzické servery a dynamicky prideľuje svoje zdroje používateľom, ktorí môžu nasadiť svoj kód priamo do produkcie.

„Serverless“ sa v praxi najčastejšie skloňuje ako Function-as-a-Service (FaaS). FaaS je kategória služieb cloud computingu, ktorá poskytuje platformu umožňujúcu zákazníkom vyvíjať, prevádzkovať a spravovať funkčnosti aplikácií bez zložitosti budovania a údržby infraštruktúry, ktorá je zvyčajne spojená s vývojom a spustením aplikácie. Prvou ponukou FaaS od veľkého poskytovateľa verejného cloudu bola v roku 2014 služba AWS Lambda spoločnosti Amazon, po ktorej nasledovali Google Cloud Functions, Microsoft Azure Functions, OpenWhisk od IBM/Apache a Oracle Cloud Fn v roku 2017. Serverless ale nie je len FaaS, je to celý balík služieb, ktoré sú schopné zareagovať na konkrétne udalosti, alebo požiadavky. Tie sa môžu v prípade nevyužitia znížiť dokonca na nulu, pričom poskytovanie, správu a fakturáciu zabezpečuje poskytovateľ cloudu a zákazník sa tým nemusí zaťažovať. Okrem FaaS tieto služby zahŕňajú:

  • Serverless databázy a úložisko:
    Základom dátovej vrstvy sú databázy (SQL a NoSQL) a úložisko (najmä objektové úložisko). Serverless prístup k týmto technológiám zahŕňa prechod od poskytovania „inštancií“ s definovanou kapacitou a limitmi pripojení, na lineárne škálujúce sa databázy a úložiská. Možnosť škálovania v cloudovej službe prispieva k nákladovej efektivite, čo znamená, že platíte za dodatočný výpočtový výkon iba vtedy, ak ho potrebujete.
  • Event streaming a posielanie správ medzi službami:
    Serverless architektúry sú vhodné pre event-driven a stream-processing typy úloh. Typickým príkladom je napríklad Amazon Kinesis, ktorý zbiera, spracúva a analyzuje streamy dát v reálnom čase.
  • API gateway:
    API gateway funguje ako proxy pre webové akcie a umožňuje smerovanie HTTP requestov, limitovanie počtu požiadaviek za sekundu, CORS, štatistiky používania API, alebo prezeranie logov odpovedí na požiadavky.

  • Výhody serverless computingu:

  • Vylepšená produktivita vývojárov:
    Serverless umožňuje vývojovým tímom sústrediť sa na písanie kódu, nie na správu infraštruktúry. Poskytuje vývojárom oveľa viac času na inováciu a optimalizáciu funkčnosti front-endových aplikácií a obchodnej logiky.
  • Nižšie náklady:
    Pri zaužívaných cloudových alebo backendových službách neraz platíte taktiež za nevyužitý priestor, alebo neaktívny čas CPU, pri serverless platíte len za reálne využívanú kapacitu a čas.
  • Vyvíjajte v akomkoľvek jazyku:
    Serverless je polyglotné prostredie, ktoré umožňuje vývojárom programovať v akomkoľvek jazyku alebo frameworku – Java, Python, JavaScript, node.js...
  • Zjednodušené cykly vývoja/DevOps:
    Serverless zjednodušuje nasadenie, nakoľko vývojári netrávia čas definovaním infraštruktúry potrebnej na integráciu, testovanie, poskytovanie a nasadzovanie kódu do produkcie.
  • Efektívny výkon za nízke náklady:
    Pri určitých pracovných zaťaženiach ako napríklad paralelné spracovanie, spracovanie streamov, či určité úlohy spracovania údajov, býva serverless model častokrát rýchlejší a cenovo výhodnejší ako iné typy infraštruktúr.
  • Prehľadnosť využitia:
    Serverless platformy poskytujú takmer úplný prehľad o využití a môžu systematicky agregovať štatistiky o používaní.

  • Nevýhody:

  • Vyššie náklady na stabilný alebo predvídateľný výkon:
    Pretože serverless sa podľa potreby škáluje nahor a nadol v reakcii na záťaž, ponúka výrazné úspory nákladov. Neponúka však rovnaké úspory pre zaťaženie predvídateľnými, stabilnými alebo dlhotrvajúcimi procesmi. V týchto prípadoch môže byť tradičné serverové prostredie jednoduchšie a nákladovo efektívnejšie.
  • Latencia:
    V prípade procesov ktoré sa istú dobu nepoužili, môže pri obsluhovaní novej požiadavky nastať oneskorenie (cold-start). Vzhľadom na architektúru aplikácie môžu toto oneskorenie pocítiť aj používatelia.
  • Problémy s monitorovaním a ladením:
    Tieto prevádzkové úlohy sú náročné v akomkoľvek distribuovanom systéme, ale architektúra serverless len zvyšuje zložitosť. Pre tímy môže byť napríklad ťažké, alebo nemožné monitorovať alebo ladiť funkcie serverless pomocou existujúcich nástrojov alebo procesov.
  • Závislosť od jedného dodávateľa:
    Aj keď serverless vývojárom uvoľňuje podstatný čas, na to aby sa zamerali na písanie a zlepšovanie svojho kódu, znamená to tiež, že migrácia kódu k novému poskytovateľovi cloudu môže byť častokrát náročná. Je vysoko pravdepodobné, že na to aby sa dosiahli rovnaké výsledky na platforme iného poskytovateľa, bude potrebné čiastočne, alebo dokonca úplne prepísať kód aplikácie. Dôvodom je, že aplikácia môže priamo používať iné služby konkrétneho poskytovateľa.

Prechod na serverless model v posledných rokoch rýchlo naberá na obrátkach. Výskum spoločnosti Datadog zistil, že funkcie AWS Lambda sa v súčasnosti používajú 3,5-krát častejšie v porovnaní s rokom 2019. Najmenej 1 z 5 organizácií používa produkty AWS, Azure alebo Google FaaS. Niekoľko popredných organizácií ako je Slack, Netflix, Autodesk a Coca-Cola, používa serverless aplikácie na poskytovanie samoškálovateľných, vysokovýkonných aplikácií s vysokou dostupnosťou. Serverless architektúra nie je ideálna pre každú situáciu. Výhody serverless však výrazne prevažujú nad nevýhodami. IBM predpovedá, že v roku 2023 až 95 % používateľov zachová alebo zvýši svoje investície do serverless modelu.

Podobné blogy