De ce revoluția fără server este blocată

Puncte cheie

  • De câțiva ani ni s-a promis că computerul fără server (serverless) va deschide o nouă eră fără un sistem de operare specific pentru a rula aplicații. Ni s-a spus că o astfel de structură ar rezolva o mulțime de probleme de scalabilitate. De fapt, totul este diferit.
  • În timp ce mulți văd tehnologia fără server ca o idee nouă, rădăcinile acesteia pot fi urmărite din 2006 cu Zimki PaaS și Google App Engine, ambele utilizând o arhitectură fără server.
  • Există patru motive pentru care revoluția serverless a blocat, de la suport limitat pentru limbajul de programare până la probleme de performanță.
  • Calculul fără server nu este chiar atât de inutil. Departe de. Cu toate acestea, ele nu ar trebui privite ca un înlocuitor direct pentru servere. Pentru unele aplicații, acestea pot fi un instrument la îndemână.

Serverul este mort, traiasca serverul!

Acesta este strigătul de luptă al adepților revoluției fără server. O privire rapidă asupra presei din industrie din ultimii ani este suficientă pentru a concluziona că modelul tradițional de server este mort și că în câțiva ani vom folosi cu toții arhitecturi fără server.

După cum știe oricine din industrie și așa cum am subliniat și în articolul nostru despre starea de calcul fără server, este gresit. În ciuda multor articole despre merit revoluție fără server, nu a avut loc niciodată. De fapt, studii recente aratăcă această revoluție poate să fi ajuns într-o fundătură.

Unele dintre promisiunile pentru modelele fără server s-au împlinit cu siguranță, dar nu toate. Nu toată lumea.

În acest articol vreau să iau în considerare motivele acestei afecțiuni. De ce lipsa de flexibilitate a modelelor fără server este încă un obstacol în calea adoptării lor pe scară largă, deși rămân utile în circumstanțe specifice, bine definite.

Ce au promis adepții de calcul fără server

Înainte de a trece la problemele de calcul fără server, să vedem ce au avut de oferit. Promisiunile unei revoluții fără server au fost numeroși și – uneori – foarte ambițioși.

Pentru cei care nu sunt familiarizați cu termenul, iată o scurtă definiție. Calculul fără server definește o arhitectură în care aplicațiile (sau părțile aplicațiilor) rulează la cerere în medii de rulare care sunt de obicei găzduite de la distanță. În plus, sistemele fără server pot fi găzduite. Construirea de sisteme robuste fără server a fost o preocupare majoră a administratorilor de sistem și a companiilor SaaS în ultimii ani, deoarece (se pretinde) această arhitectură oferă câteva avantaje cheie față de modelul „tradițional” client/server:

  1. Modelele fără server nu necesită utilizatorilor să-și întrețină propriile sisteme de operare sau chiar să creeze aplicații compatibile cu anumite sisteme de operare. În schimb, dezvoltatorii creează cod partajat, îl încarcă pe o platformă fără server și îl urmăresc rulând.
  2. Resursele din cadrele fără server sunt de obicei facturate la minut (sau chiar secunde). Aceasta înseamnă că clienții plătesc doar pentru timpul în care execută codul. Acest lucru se compară favorabil cu VM-ul tradițional în cloud, unde mașina este inactivă de cele mai multe ori, dar trebuie să plătiți pentru asta.
  3. S-a rezolvat și problema scalabilității. Resursele din cadrele fără server sunt alocate dinamic, astfel încât sistemul să poată face față cu ușurință creșterilor bruște ale cererii.

Pe scurt, modelele fără server oferă soluții flexibile, cu costuri reduse și scalabile. Sunt surprins că nu ne-am gândit la această idee mai devreme.

Este aceasta cu adevărat o idee nouă?

De fapt, ideea nu este nouă. Conceptul de a permite utilizatorilor să plătească numai pentru timpul în care codul rulează efectiv a existat de când a fost introdus în Zimki PaaS în 2006 și cam în același timp, Google App Engine a venit cu o soluție foarte similară.

De fapt, ceea ce numim acum modelul „fără server” este mai vechi decât multe dintre tehnologiile numite acum „nativ în cloud” care oferă aproape același lucru. După cum sa menționat, modelele fără server sunt în esență doar o extensie a modelului de afaceri SaaS care există de zeci de ani.

De asemenea, merită să recunoaștem că modelul fără server nu este o arhitectură FaaS, deși există o legătură între cele două. FaaS este în esență partea centrată pe calcul a unei arhitecturi fără server, dar nu reprezintă întregul sistem.

Deci, de ce tot acest hype? Ei bine, pe măsură ce rata de penetrare a Internetului în țările în curs de dezvoltare continuă să crească vertiginos, la fel crește și cererea de resurse de calcul. De exemplu, multe țări cu sectoare de comerț electronic în creștere rapidă pur și simplu nu au infrastructura de calcul pentru aplicații pe aceste platforme. Aici intervin platformele fără server plătite.

Probleme cu modelele fără server

Problema este că modelele fără server au... probleme. Nu mă înțelege greșit: nu spun că sunt rele în sine sau nu oferă o valoare semnificativă unor companii în anumite circumstanțe. Dar principala pretenție a „revoluției” - că arhitectura fără server o va înlocui rapid pe cea tradițională - nu ajunge niciodată la bun sfârșit.

De aceea.

Suport limitat pentru limbaje de programare

Majoritatea platformelor fără server permit rularea numai aplicațiilor scrise în anumite limbi. Acest lucru limitează sever flexibilitatea și adaptabilitatea acestor sisteme.

Se consideră că platformele fără server acceptă majoritatea limbilor majore. AWS Lambda și Azure Functions oferă, de asemenea, un wrapper pentru rularea aplicațiilor și funcțiilor în limbi neacceptate, deși acest lucru are adesea un cost de performanță. Deci, pentru majoritatea organizațiilor, această limitare nu este, de obicei, mare lucru. Dar aici este chestia. Unul dintre avantajele modelelor fără server ar trebui să fie că programele obscure, utilizate rar pot fi folosite mai ieftin, deoarece plătiți doar pentru timpul în care rulează. Iar programele obscure, rar folosite sunt adesea scrise în... limbaje de programare obscure, rar folosite.

Acest lucru subminează unul dintre avantajele cheie ale modelului fără server.

Obligatoriu pentru un furnizor

A doua problemă cu platformele fără server, sau cel puțin modul în care sunt implementate în prezent, este că de obicei nu seamănă la nivel operațional. Practic nu există standardizare în ceea ce privește funcțiile de scriere, implementare și management. Aceasta înseamnă că migrarea funcțiilor de la o platformă la alta necesită extrem de mult timp.

Cea mai grea parte a trecerii la un model fără server nu sunt caracteristicile de calcul, care sunt de obicei doar fragmente de cod, ci modul în care aplicațiile comunică cu sistemele conectate, cum ar fi stocarea obiectelor, managementul identității și cozile. Funcțiile pot fi mutate, dar restul aplicației nu. Acesta este exact opusul platformelor ieftine și flexibile promise.

Unii susțin că modelele fără server sunt noi și că nu a existat timp pentru a standardiza modul în care funcționează. Dar nu sunt atât de noi, așa cum am menționat mai sus, și multe alte tehnologii cloud, cum ar fi containerele, au devenit deja mult mai convenabile datorită dezvoltării și adoptării pe scară largă a standardelor bune.

productivitate

Performanța de calcul a platformelor fără server este dificil de măsurat, parțial pentru că furnizorii tind să păstreze informațiile secrete. Majoritatea susțin că funcțiile de pe platformele de la distanță, fără server, rulează la fel de repede ca și pe serverele interne, cu excepția unor probleme inevitabile de latență.

Cu toate acestea, unele dovezi sugerează contrariul. Funcțiile care nu au rulat anterior pe o anumită platformă sau nu au rulat de ceva timp, au nevoie de ceva timp pentru a se inițializa. Acest lucru se datorează probabil că codul lor a fost portat pe un mediu de stocare mai puțin accesibil, deși - ca și în cazul benchmark-urilor - majoritatea vânzătorilor nu vă vor spune despre portarea datelor.

Desigur, există mai multe modalități de a ocoli acest lucru. Una este să optimizați funcțiile pentru orice limbaj de cloud pe care rulează platforma dumneavoastră fără server, dar asta subminează oarecum afirmația că aceste platforme sunt „agile”.

O altă abordare este să vă asigurați că programele critice pentru performanță rulează în mod regulat pentru a le menține „proaspete”. Această a doua abordare, desigur, contravine puțin la afirmația conform căreia platformele fără server sunt mai rentabile, deoarece plătiți doar pentru timpul de rulare a programelor. Furnizorii de cloud au introdus noi modalități de reducere a lansărilor la rece, dar multe dintre ele necesită „scale to one”, ceea ce subminează valoarea inițială a FaaS.

Problema pornirii la rece poate fi soluționată parțial prin rularea internă a sistemelor fără server, dar acest lucru vine cu propriile costuri și rămâne o opțiune de nișă pentru echipele bine resurse.

Nu puteți rula aplicații întregi

În cele din urmă, poate cel mai important motiv pentru care arhitecturile fără server nu vor înlocui modelele tradiționale în curând este că acestea (în general) nu pot rula aplicații întregi.

Mai exact, este nepractic din punct de vedere al costurilor. Monolitul tău de succes probabil nu ar trebui transformat într-un set de patru duzini de funcții legate între ele de opt porți, patruzeci de cozi și o duzină de instanțe de bază de date. Din acest motiv, serverless este mai potrivit pentru noile dezvoltări. Practic, nicio aplicație existentă (arhitectură) nu poate fi portată. Puteți migra, dar trebuie să începeți de la zero.

Acest lucru înseamnă că, în marea majoritate a cazurilor, platformele fără server sunt folosite ca o completare a serverelor de back-end pentru a efectua sarcini intensive din punct de vedere computațional. Acest lucru este foarte diferit de celelalte două forme de cloud computing, containere și mașini virtuale, care oferă o modalitate holistică de a efectua calcularea la distanță. Aceasta ilustrează una dintre provocările migrării de la microservicii la sistemele fără server.

Desigur, aceasta nu este întotdeauna o problemă. Abilitatea de a utiliza periodic resurse de calcul uriașe fără a cumpăra propriul hardware poate aduce beneficii reale și de durată multor organizații. Dar dacă unele aplicații sunt pe servere interne, iar altele sunt pe arhitecturi cloud fără server, atunci managementul intră la un nou nivel de complexitate.

Traiasca revolutia?

În ciuda tuturor acestor plângeri, nu mă opun soluțiilor fără server în sine. Sincer. Doar că dezvoltatorii trebuie să înțeleagă - mai ales dacă explorează modele fără server pentru prima dată - că această tehnologie nu este un înlocuitor direct pentru servere. În schimb, consultați sfaturile și resursele noastre despre construirea de aplicații fără server și decideți cum să aplicați cel mai bine acest model.

Sursa: www.habr.com

Adauga un comentariu