Cloud și date

Serverless: ce înseamnă să rulezi cod fără server

Computingul serverless explicat: funcții care pornesc la cerere, plata pe execuție, avantaje, limite precum pornirea la rece și când se potrivește.

De Publicația LumeaTehnologiei5 min de citit
Întrerupător pe perete și lampă aprinsă într-un interior, lumina funcționând doar când e pornită
Cuprins 6 secțiuni

Termenul serverless înseamnă, în traducere, „fără server”, dar numele păcălește. Serverele există și aici, doar că nu te mai ocupi tu de ele: nu le alegi, nu le actualizezi, nu le pornești și nu le oprești. Încarci bucăți mici de cod, numite funcții, iar furnizorul de cloud le rulează exact atunci când este nevoie.

Imaginează-ți diferența dintre a avea mașină proprie și a folosi un serviciu de taxi. Mașina proprie costă și când stă în parcare. Taxiul îl plătești doar pe drumul făcut. Computingul serverless urmează a doua logică.

Cum funcționează o funcție serverless?

O funcție serverless este o bucată de cod, de obicei scurtă, care face un singur lucru și se execută când apare un eveniment. Evenimentul poate fi o cerere web, un fișier încărcat într-un spațiu de stocare, un mesaj dintr-o coadă sau o oră programată.

Fluxul arată în patru pași:

  1. Scrii funcția și o încarci la furnizor, fără să alegi un server.
  2. Definești declanșatorul: ce eveniment o pornește.
  3. La eveniment, furnizorul creează un mediu izolat, rulează funcția și întoarce rezultatul.
  4. După execuție, mediul este oprit sau păstrat câteva minute pentru cereri apropiate.

Un exemplu clar: un utilizator încarcă o fotografie într-un spațiu de stocare. Evenimentul „fișier nou” pornește o funcție care produce o miniatură mică, o salvează și se oprește. Între două încărcări nu rulează nimic, deci nu plătești nimic.

Sub capotă, furnizorul folosește mașini virtuale sau containere, pe care le descrii mai bine citind despre Containerele: diferența față de mașinile virtuale. Tu nu le vezi, iar asta este toată ideea.

Cum se plătește un serviciu serverless?

Se plătește pe execuție: numărul de rulări și durata lor, împreună cu memoria folosită. Dacă funcția nu este apelată, nu se taxează nimic, spre deosebire de un server închiriat, care costă oră de oră chiar și când stă degeaba.

Modelul avantajează sarcinile neregulate. O aplicație care primește sute de cereri într-o oră și niciuna în următoarele douăzeci poate costa foarte puțin. În schimb, o aplicație cu încărcare constantă și mare ajunge uneori să coste mai mult decât un server obișnuit, pentru că plătești separat fiecare rulare.

De aceea decizia nu se ia după slogan, ci după un calcul făcut cu cifrele tale: câte cereri, cât durează fiecare, cât variază traficul. Majoritatea furnizorilor oferă și o cotă gratuită lunară, utilă la proiecte mici și la învățare. Principiile generale de facturare le găsești în Costurile în cloud: cum se facturează resursele.

Care sunt avantajele serverless?

Avantajul principal este că munca de administrare dispare. Nu mai aplici actualizări de sistem, nu mai dimensionezi servere și nu mai ții cont de cât de mare ar putea fi încărcarea.

Mai apar și alte beneficii:

  • scalare automată: dacă vin o mie de cereri deodată, furnizorul pornește mai multe copii ale funcției, fără să-i ceri tu;
  • viteză de dezvoltare: echipa se concentrează pe logica aplicației, nu pe infrastructură;
  • cost proporțional cu utilizarea, ceea ce face experimentele ieftine;
  • disponibilitate încorporată: funcțiile rulează de obicei în mai multe locații ale aceleiași regiuni.

Pentru o echipă mică sau pentru o persoană care construiește un prototip, aceste avantaje sunt greu de egalat. Pornirea unui proiect nou se reduce la scrierea codului.

Pasaj subteran de beton luminat, fotografiat noaptea cu expunere lungă, fără mașini pe drum

Ce limite are modelul serverless?

Cea mai cunoscută limită este pornirea la rece: când o funcție nu a mai rulat de ceva timp, prima cerere așteaptă să fie creat mediul de execuție, ceea ce adaugă o întârziere de la câteva zeci de milisecunde la câteva secunde. Cererile următoare, venite repede, merg mult mai bine.

Alte limite practice sunt:

  • durata maximă a unei rulări, de obicei de ordinul minutelor, deci sarcinile foarte lungi nu se potrivesc;
  • lipsa stării locale: funcția nu păstrează date între rulări, așa că tot ce contează trebuie scris într-o bază de date sau într-un spațiu de stocare;
  • dependența de furnizor: modul în care definești evenimentele și permisiunile diferă de la un furnizor la altul;
  • depanare mai grea, pentru că nu poți intra pe „server” să vezi ce se întâmplă.

Sfat: Dacă aplicația ta are nevoie de răspunsuri foarte rapide și constante, măsoară întâi pornirea la rece. Latența este un subiect cu mai multe fațete, iar Latența și lățimea de bandă: ce înseamnă viteza internetului te ajută să o înțelegi.

Când alegi serverless și când nu?

Alegi serverless pentru sarcini scurte, independente și neregulate: prelucrarea de fișiere încărcate, trimiterea de notificări, formulare de contact, mici interfețe de programare, sarcini programate. Nu îl alegi pentru procese care rulează ore în șir, pentru aplicații cu conexiuni permanente sau pentru sisteme cu trafic mare și constant, unde un server clasic iese mai ieftin.

Multe aplicații reale sunt mixte. Partea principală rulează pe servere sau containere, iar sarcinile ocazionale, cum ar fi generarea unui raport nocturn, merg ca funcții. Comunicarea dintre piese se face adesea prin API-uri, iar un model de servicii mai abstract, precum PaaS, este uneori un compromis bun între control și comoditate.

Pe aceeași temă, citește și stocarea în cloud: unde stau de fapt fișierele tale.

Întrebări frecvente

Serverless înseamnă că nu există servere?

Nu. Există, dar le administrează furnizorul. Tu nu alegi hardware-ul și nu te ocupi de actualizări.

Serverless este mai ieftin decât un server obișnuit?

Depinde de încărcare. Pentru trafic mic și neregulat este de obicei mai ieftin, iar pentru trafic mare și constant poate costa mai mult.

Ce este pornirea la rece?

Este întârzierea de la prima rulare a unei funcții rămase inactive, cât timp furnizorul îi pregătește mediul. Rulările următoare, apropiate în timp, sunt mai rapide.

Pot construi un site întreg în stil serverless?

Da, mai ales un site cu pagini statice și câteva funcții pentru formulare sau autentificare. Pentru aplicații foarte complexe, arhitectura devine mai greu de urmărit.

Cine are nevoie de serverless?

În special programatorii și echipele mici. Utilizatorul obișnuit îl folosește fără să știe, în spatele multor aplicații și notificări.

↑