O noua era pentru aplicatii: serverless computing

Industria IT a creat impresia ca dezvoltarea unei aplicatii web costa o mica avere si este un lucru la care pot avea access doar companiile cu bugete mari si cu resurse umane specializate si dedicate pentru acest scop. In prezent insa, situatia nu se mai prezinta asa datorita unei mici minuni cu numele serverless computing care egaleaza balanta de putere pentru echipele mici de dezvoltatori.

In mod traditional, daca vrei sa construiesti o aplicatie web sau mobila, ai nevoie si de un server. Si nu unul, ci doua pentru redundanta, recomandat in centre de date diferite, pentru geo-rezilienta. Si fiecare server are nevoie de doua din orice: surse, conexiune la retea, memorii, unitati de stocare, toate pentru a oferi o disponibilitate cat mai mare pentru aplicatie. Serverele au nevoie si de mentenanta periodica, ceea ce inseamna downtime si costuri operationale ridicate.

Serverless computing este un serviciu apelat de un API pentru o indeplini o anumita functie. Serviciul ruleaza pe un hardware partajat de mai multi clienti care nu necesita nicio operatiune din partea departamentului IT. Din aces punct de vedere, putem asemana serverless computing ca un produs oferit de un MSP (Managed Service Provider). Daca ne gandim la un script Python care executa anumite actiuni in aplicatia noastra, acel script va avea nevoie de un sistem de operare si de hardware pe care sa fie rulat. Diferenta este ca arhitectura serviciului serverless computing abstractizeaza componentele pe care „sta” scriptul: sistemul de operare si hardware-ul au nevoie in continuare de mentenanta, dar aceasta pica in sarcina furnizorului serviciului de serverless computing.

Toti marii furnizori de cloud ofera servicii de serverless computing: Amazon are in portofoliul sau AWS Lambda, Microsoft are Azure Functions, si Google are Cloud Run si Cloud Functions.

Un alt aspect care trebuie mentionat este capacitatea de scalare a serviciului. Traditional, cand cumparam un server, il cumparam cu o anumita capacitate. Care poate supradimensionata pentru numarul de apelari ale functiei sau subdimensionata daca aplicatia creste peste estimarile initiale. Serviciul de serverless computing este scalabil pentru workload-uri oricat de mari si este elastic, auto-dimensionandu-se pentru numarul de apelari ale functiei.

Costul este si el un factor care lucreaza in favoarea serviciului de serverless computing. Indiferent de gradul de utilizare al server-ului on-premises, costul de achizitie este acelasi si este upfront, iar la acesta se adauga si costurile asociate cu operatiunile de intretinere hardware si software. Toate acestea duc la un TCO ridicat (Total Cost of Ownership). Serviciul de serveless computing este tarifat la timp de procesare: costul este asociat cu timpul necesar executiei functiei, cost care este foarte mic. Daca echipa Dev reuseste sa isi scrie aplicatie intr-o maniera serverless. atunci costurile de dezvoltare si operare ale aplicatiei vor fi foarte mici si chiar predictibile, intrucat toti marii furnizori de cloud ofera calculatoare de costuri pentru a estima costul lunar.

Cele mai notabile diferente dintre abordarea serveless pentru aplicatii si cea traditionala sunt:

  • scalabilitate mult mai mare
  • downtime mult mai redus
  • mentenanta inexistenta pentru infrastructura
  • costuri mai mici si mai predictibile

Ca dezvantaj, cel mai probabil aplicatia trebuie refactorizata (rescrisa) pentru a putea fi construita sub o arhitectura care sa urmeze principiile serverless computing. AWS, dar si ceilalti furnizori de servicii cloud ne ofera o sumedenie de produse care sa ne ajute in construirea aplicatiilor web, aplicatiilor mobile si chiar a aplicatiilor custom interne ale companiei. Produse precum baze de date relationale, serverless computing si gateway-uri API ofera alternative pentru crearea infrastructurilor IT fara costul TCO traditional si operatiunile de mentenanta de zi cu zi.

Mihai Dumitrascu, Sr Systems Engineer