Functions as a Service (FaaS) sau cum să alegi între serviciile Serverless computing

Functions as a Service (FaaS) sau cum să alegi între serviciile Serverless computing

23.04.2021 09:32

Nu credem că mai surprinde pe nimeni faptul că tehnologia Serverless a devenit printre favoritele departamentului de DevOps. Pentru dezvoltatorii de software această tehnologie presupune mai puține griji când vine vorba de infrastructură întrucât resursele de calcul sunt puse la dispoziție de furnizorul soluției de cloud.

Alegerea implementării unei soluții de tip Serverless nu este una deloc ușoară întrucât există o multitudine de opțiuni dintre care poți alege. Jucătorii mari de public-cloud precum AWS Lambda, Google Cloud Functions, Azure Functions sau versiunile open-source precum  Open-Faas, Fn project, Fission sau Kubeless îți oferă posibilitatea creării propriului serviciu.

Bineînțeles, oamenii aleg un ecosistem cloud din motive diferite (de exemplu credite gratuite Azure, implementare prin CloudFormation, sau capabilități specifice precum Google Dataflow) iar alegerea logică este de obicei să fie folosit furnizorul deja contractat. Când ecosistemul nu este factorul decizional, orientarea furnizorului de FaaS este adesea motivul pentru care o companie alege un anumit furnizor.

Cei mai mari furnizori, ca Azure, Google si AWS se orientează către configurabilitate. Ofertele acestora sunt adesea parte vitală a comunicării intre alte servicii din ecosistemul lor.

În ce privește suportul pentru limbaje de programare AWS Lambda si Google Cloud Functions oferă suport pentru multiple limbaje de programare prin capabilități respective de runtime, pe când Azure se orientează mai mult pe susținerea nivelelor avansate de scriere cod.

AWS Lambda oferă suport nativ pentru limbaje ca Java, PowerShell, Golang, Node.js, C#, Python si chiar Ruby. Versatilul Runtime API creează posibilitatea de a folosi orice limbaj de programare pentru a dezvolta funcții personalizate. Suportul pentru multiple limbaje se face creând imagini de containere prin Runtime API.

Azure Functions suportă C#, JavaScript, Python, PowerShell, F#, Java 8 si 11, TypeScript bazat pe versiunile 1.x, 2.x si 3.x. De asemenea suportă implementarea directă din pachete .zip. Promovează implementarea prin FTP, Cloud Sync, Local Git, JSON.

Google Cloud Functions facilitează scrierea in Node.js, Golang, Java, Python si fremework-uri .NET ca C#, F# si Visual Basic. Pachetele din Cloud Functions sunt implementate din Local Machine, Cloud Source Repos, Cloud Console, Source Control si API.

Folosind AWS Lambda aveți posibilitatea de a lăsa in urma probleme legate de servere ca disponibilitate, mentenanță si costuri. AWS este îndrăgit de utilizatori si dezvoltatori datorită modelului de plata pay-per-use (suma de plată este funcție de numărul de interacțiuni, durată si memoria utilizată). AWS este foarte priceput in crearea de servicii serverless de backend precum aplicații web, pentru mobil, IoT si aplicații terțe. Un mare beneficiu este abilitatea de a scala (AWS permite scalarea aplicației prin executarea codului ca răspuns la fiecare trigger). Făcând parte din Amazon Web Services, Lambda se integrează ușor si rapid cu celelalte servicii furnizate de AWS. Managementul operațional este mai simplu decât la alte sisteme serverless, ușor de folosit, prompt si fără bătăi de cap. AWS CloudWatch, mecanism integrat de detectare și rezolvare a problemelor, este un alt aspect pozitiv oferit de furnizor.

Există însă si aspecte mai puțin pozitive care e bine să fie luate în considerare. Unul din ele este legat de timpul de execuție a unui container temporar (care poate sa dureze intre 100ms si 2 minute), iar un altul se referă la memoria utilizată, care este limitată (astfel că funcțiile care au nevoie de multă putere de procesare nu pot fi procesate de AWS Lambda). Pentru ambele aspecte exista metode de evitare. Mai trebuie însă menționat aspectul de lock-in, deoarece alegând AWS veți integra și alte utilitare și produse din ecosistemul Amazon.

Azure vine cu inteligenta artificiala integrata, pentru a oferi servicii automatizare de cea mai buna calitate. Arhitectura serverless Azure Functions are cel mai bun sistem de machine learning si cea mai de precizie automatizare. Acolo unde, in fazele incipiente, programul ar putea avea bug-uri, Azure vine in ajutor si elimina obstacolele. Spre deosebire de AWS Lambda si Google Cloud Functions, Azure Functions oferă mai multe alternative pentru implementarea funcțiilor (Se pot face link-uri catre GitHub si DropBox, Visual Studio, Kudu Console si altele). Un avantaj al Azure Functions este dezvoltarea flexibilă, prin care se pot coda funcțiile chiar din portal sau se pot implementa prin GitHub, Visual Studio Team Services sau alte unelte de dezvoltare suportate.

Ca si in cazul AWS, apare aspectul de lock-in, prin care odată contractat Microsoft ca furnizor, veți fi împins automat să folosiți și alte unelte din ecosistemul lor.

Google Cloud Functions simplifică procesul complicat prin care trece un dezvoltator, trecând peste tehnicile manuale, raționalizând dezvoltarea de aplicații si reducând considerabil costurile. Scalarea containerelor serverless este rapidă, automată si flexibilă. Cloud Functions nu este doar foarte scalabil ci reduce și complexitatea implementării reducând numărul de pași de implementare (un singur pas pentru implementarea unei funcții). Cloud Functions oferă scalabilitate automată însă funcțiile din background scalează gradual depinzând de durata lor, iar scalabilitatea maximă se bazează pe limitele de trafic. Procesarea de date, fișiere si streaming se face în timp real pe platforma Google.

Spre deosebire de AWS, care oferă integrare cu resurse variate din surse diferite, Cloud Functions este integrat cu ecosistemul Google.

Tabelul de mai jos prezintă o comparație între capabilitățile si performanțele platformelor prezentate anterior.

 

AWS Lambda

Azure Functions

Google Cloud Functions

Scalabilitate

Automata

Automata

Manuala

Număr de funcții

Nelimitat

1000/proiect

Nelimitat

Execuții

1000 in paralel/cont/regiune

1000 in paralel

Nelimitat

Timp maxim de execuție

15 min

9 min

10 min

În ce privește modelul de plată, avem următoarele detalii:

AWS Lambda oferă 1 milion de cereri gratis, apoi costurile sunt 0.2$/1 milion cereri, plus 0.00001667$/GB-sec.

Azure Functions oferă 1 milion de cereri gratis, apoi costurile sunt de 0.2$/1 milion de execuții, plus 0.000016$/GB-sec.

Google Cloud Functions oferă 2 milioane de cereri gratis, apoi costurile sunt 0.4$/1 milion de invocări, plus 0.0000165$/GB-sec

Postat în News Cloud Computing De:
Iulian Leadtech
Viziteaza site-ul LEADTech.ro pe ShopMania

Acest site web utilizează Cookie-uri

Folosim cookie-uri pentru a personaliza conținutul și anunțurile, pentru a oferi funcții de social media și pentru a analiza traficul nostru. De asemenea, împărtășim informații despre utilizarea site-ului nostru cu partenerii noștri de socializare, publicitate și analiză, care îl pot combina cu alte informații pe care le-ați furnizat-o sau pe care le-au colectat din utilizarea serviciilor lor. Sunteți de acord cu cookie-urile noastre dacă continuați să utilizați site-ul nostru web.

Mai multe detalii