De ce revoluția fără server a ajuns într-un impas

Punctele cheie

  • De câțiva ani ni se promite că calculul serverless va deschide o nouă eră fără un sistem de operare specific pentru rularea aplicațiilor. Ni s-a spus că o astfel de structură va rezolva numeroase probleme de scalabilitate. În realitate, lucrurile stau diferit.
  • Deși mulți consideră tehnologia serverless o idee nouă, rădăcinile acesteia pot fi urmărite până în 2006, când au apărut Zimki PaaS și Google App Engine - ambele utilizează o arhitectură serverless.
  • Există patru motive pentru care revoluția serverless a ajuns într-un impas: de la suportul limitat pentru limbajele de programare până la problemele de performanță.
  • Calculul serverless nu este atât de inutil. Deloc. Cu toate acestea, nu ar trebui considerat o înlocuire directă a serverelor. Pentru unele aplicații, poate fi un instrument util.

Serverul este mort, trăiască serverul!

Așa sună strigătul de război al susținătorilor revoluției serverless. Este suficient să aruncăm o privire rapidă asupra presei din domeniu din ultimii câțiva ani pentru a ajunge ușor la concluzia că modelul tradițional de server este mort și că, în câțiva ani, toți ne vom folosi de arhitecturi serverless.

Așa cum știe oricine din domeniu și așa cum am subliniat și în articolul nostru despre starea calculului serverless, nu este așa. În ciuda numeroaselor articole despre beneficiile revoluției serverless, aceasta nu a avut loc. De fapt, cercetările recente arată, că această revoluție a ajuns, probabil, într-un impas.

Unele dintre promisiunile pentru modelele serverless au fost, fără îndoială, realizate, dar nu toate. Departe de toate.

În acest articol vreau să discut despre motivele unei astfel de situații. De ce lipsa de flexibilitate a modelelor serverless rămâne în continuare un obstacol pentru adopția lor mai largă, deși continuă să fie utile în circumstanțe specifice și bine definite.

Ce promiteau susținătorii calculului serverless

Înainte de a trece la problemele calculului serverless, haideți să vedem ce ar fi trebuit să ofere. Promisiunile revoluției serverless au fost numeroase și - uneori - foarte ambițioase.

Pentru cei care nu sunt familiarizați cu termenul, iată o definiție scurtă. Calculul fără server definește o arhitectură în care aplicațiile (sau părți ale aplicațiilor) sunt executate la cerere în medii de execuție care sunt de obicei găzduite de la distanță. În plus, sistemele fără server pot fi găzduite și local. În ultimii câțiva ani, construcția de sisteme durabile fără server a fost principala preocupare a administratorilor de sistem și a companiilor SaaS, deoarece (se susține) această arhitectură oferă câteva avantaje cheie comparativ cu modelul „tradițional” client-server:

  1. Modelele fără server nu necesită ca utilizatorii să își mențină propriile sisteme de operare sau chiar să dezvolte aplicații compatibile cu anumite OS-uri. În schimb, dezvoltatorii creează cod comun, îl încarcă pe o platformă fără server și monitorizează execuția acestuia.
  2. Resursele din cadrele fără server sunt de obicei plătite pe minute (sau chiar pe secunde). Aceasta înseamnă că clienții plătesc doar pentru timpul în care codul este efectiv executat. Aceasta este o diferență semnificativă față de VM-ul tradițional în cloud, unde mașina stă de cele mai multe ori inactivă, dar pentru care trebuie plătit.
  3. Problema scalabilității a fost, de asemenea, rezolvată. Resursele din cadrele fără server sunt alocate dinamic, astfel încât sistemul poate gestiona cu ușurință vârfurile bruște de cerere.

Pe scurt, modelele fără server oferă soluții flexibile, ieftine și scalabile. Este surprinzător că nu ne-am gândit la această idee mai devreme.

Este aceasta într-adevăr o idee nouă?

De fapt, ideea nu este nouă. Conceptul care permite utilizatorilor să plătească doar pentru timpul în care codul este efectiv executat există de când a fost introdus în cadrul Zimki PaaS în 2006, și cam în acea perioadă Google App Engine a propus o soluție foarte similară.

De fapt, ceea ce numim acum modelul „fără server” este mai vechi decât multe tehnologii care sunt acum considerate „native cloud” și care oferă practic același lucru. Așa cum s-a menționat, modelele fără server sunt, în esență, doar o continuare a modelului de afaceri SaaS, care există de câteva decenii.

De asemenea, este important de recunoscut că modelul serverless nu este o arhitectură FaaS, deși între ele există o legătură. FaaS este, în esență, partea orientată pe computație a arhitecturii serverless, dar nu reprezintă întreaga sistemă.

Deci, de ce toată această agitație? Ei bine, pe măsură ce viteza de penetrare a internetului în țările în dezvoltare continuă să crească rapid, cererea de resurse de calcul crește de asemenea. De exemplu, în multe țări cu sectoare de comerț electronic în rapidă expansiune, pur și simplu nu există infrastructură de calcul pentru aplicațiile de pe aceste platforme. Aici intervine utilizarea platformelor serverless plătite.

Problemele modelului serverless

Problema este că modelele serverless au... probleme. Nu mă înțelegeți greșit: nu spun că sunt proaste în sine sau că nu oferă o valoare semnificativă pentru unele companii în anumite circumstanțe. Dar afirmarea principală a «revoluției» — că arhitectura serverless va înlocui rapid tradiționala — nu se va realiza niciodată.

Iată de ce.

Suport limitat pentru limbajele de programare

Majoritatea platformelor serverless permit rularea doar a aplicațiilor scrise în anumite limbaje. Acest lucru limitează grav flexibilitatea și adaptabilitatea acestor sisteme.

Se consideră că platformele serverless suportă majoritatea limbajelor de bază. AWS Lambda și Azure Functions oferă, de asemenea, un wrapper pentru rularea aplicațiilor și funcțiilor în limbaje nesuportate, deși acest lucru vine adesea cu costuri de performanță. Deci, pentru majoritatea organizațiilor, de obicei, această limitare nu contează prea mult. Dar iată în ce constă problema. Se presupune că unul dintre avantajele modelelor serverless este că aplicațiile mai puțin cunoscute, folosite rar, pot fi utilizate mai ieftin, deoarece plătiți doar pentru timpul lor de execuție. Și aplicațiile mai puțin cunoscute, folosite rar, sunt adesea scrise în... limbaje de programare mai puțin cunoscute, folosite rar.

Aceasta subminează unul dintre avantajele cheie ale modelului serverless.

Legătura cu furnizorul

A doua problemă cu platformele fără servere sau, cel puțin, cu modul în care sunt implementate în prezent, este că acestea nu sunt de obicei asemănătoare una cu cealaltă la nivel operațional. Există practic nicio standardizare în ceea ce privește scrierea funcțiilor, implementarea și gestionarea. Aceasta înseamnă că migrarea funcțiilor de pe o platformă pe alta durează extrem de mult timp.

Cea mai dificilă parte a trecerii la un model fără server este că nu sunt funcțiile de calcul, care de obicei sunt doar fragmente de cod, ci modul în care aplicațiile sunt legate de sistemele conectate, cum ar fi stocarea obiectelor, gestionarea identității și cozile. Funcțiile pot fi mutate, dar restul aplicației nu poate. Aceasta este o opoziție totală față de platformele ieftine și flexibile promise.

Unii susțin că modelele fără server au apărut recent și că nu a fost timpul necesar pentru a le standardiza funcționarea. Dar ele nu sunt atât de noi, așa cum am menționat mai sus, iar multe alte tehnologii cloud, precum containerele, au devenit deja mult mai convenabile datorită dezvoltării și implementării pe scară largă a unor bune standarde.

Performanță

Performanța de calcul a platformelor fără server este greu de măsurat, în parte deoarece furnizorii caută să păstreze informațiile secrete. Majoritatea susține că funcțiile de pe platformele externe, fără server, funcționează la fel de repede ca cele de pe serverele interne, cu câteva probleme inevitabile de latență.

Cu toate acestea, unele fapte indică contrariul. Funcțiile care nu au rulat anterior pe o anumită platformă sau care nu au rulat de ceva vreme necesită timp pentru a se inițializa. Probabil, acest lucru se datorează faptului că codul lor a fost mutat pe un suport de date mai puțin accesibil, deși, așa cum este cazul benchmark-urilor, majoritatea furnizorilor nu vă vor spune despre mutarea datelor.

Desigur, există câteva modalități de a o ocoli. Una dintre ele constă în optimizarea funcțiilor pentru orice limbaj cloud pe care funcționează platforma dumneavoastră fără server, dar aceasta subminează oarecum afirmația că aceste platforme sunt „flexibile.”

O altă abordare constă în asigurarea desfășurării regulate a programelor esențiale pentru performanță, astfel încât acestea să rămână „freshe”. Această a doua abordare, desigur, contravine într-o oarecare măsură afirmației că platformele serverless sunt mai economice, deoarece plătești doar pentru timpul de funcționare al programelor tale. Furnizorii de cloud au implementat modalități noi de a reduce lansările reci, dar multe dintre acestea necesită „scalare la unu” (scale to one), ceea ce subminează valoarea inițială a FaaS.

Problema „lansării reci” poate fi parțial rezolvată prin desfășurarea sistemelor serverless pe cont propriu, dar acest lucru vine cu propriile costuri și rămâne o opțiune de nișă pentru echipele bine dotate.

Nu poți desfășura aplicații întregi

În cele din urmă, poate cea mai importantă cauză pentru care arhitecturile serverless nu vor înlocui modelele tradiționale în curând: acestea (în general) nu permit desfășurarea de aplicații complete.

Mai precis, acest lucru nu este fezabil din punct de vedere al costurilor. Monolitul tău de succes nu merită să fie transformat într-un set de patruzeci de funcții conectate prin opt gateway-uri, patruzeci de cozi și o duzină de instanțe de Baze de Date. Din acest motiv, serverless este mai potrivit pentru dezvoltări noi. Practic, nicio aplicație existentă (arhitectură) nu poate fi portată. Poți migra, dar va trebui să începi de la zero.

Aceasta înseamnă că, în cele mai multe cazuri, platformele serverless sunt utilizate ca un supliment la serverele interne pentru a executa sarcini care necesită resurse de calcul mari. Aceasta le deosebește foarte mult de celelalte două forme de tehnologii cloud – containere și mașini virtuale, care oferă o modalitate integrată de desfășurare a calcului la distanță. Acest lucru ilustrează una dintre dificultățile tranziției de la microservicii la sistemele serverless.

Desigur, aceasta nu este întotdeauna o problemă. Posibilitatea de a utiliza periodic enorme resurse de calcul, fără a cumpăra hardware propriu, poate aduce beneficii reale și pe termen lung pentru multe organizații. Dar dacă unele aplicații sunt pe servere interne, iar altele pe arhitecturi cloud fără server, atunci gestionarea ajunge la un nou nivel de complexitate.

Trăiască revoluția?

În ciuda tuturor acestor plângeri, nu am nimic împotriva soluțiilor fără server ca atare. Promit. Doar că dezvoltatorii trebuie să înțeleagă—mai ales dacă explorează pentru prima dată modelele fără server—that aceasta nu este o înlocuire directă a serverelor. În schimb, consultați sfaturile și resursele noastre despre crearea aplicațiilor fără server și decideți cea mai bună modalitate de a aplica acest model.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster