Funcție ca serviciu (FaaS): tot ce trebuie să știți
Publicat: 2022-06-09Probabil ați auzit de SaaS și poate ați auzit de PaaS și IaaS, dar ați auzit de Function as a Service (FaaS)?
Piața FaaS este în creștere rapidă. Potrivit Allied Market Research, piața valora 3,01 miliarde de dolari în 2018. Se așteaptă că acest număr va crește la 24 de miliarde de dolari până în 2026, ceea ce înseamnă că industria va crește la o rată de creștere anuală compusă (CAGR) de 29,7% din 2020 până în 2026.
Privind această creștere, este sigur să spunem că FaaS este o afacere destul de mare.
Dar ce este FaaS și cum funcționează? Pentru a vă ajuta să răspundeți la aceste întrebări, acest articol va acoperi elementele de bază ale FaaS, de ce oamenii ar trebui (și nu ar trebui) să folosească FaaS și starea pieței globale FaaS din 2022.
Sa mergem.
Ce este Function as a Service (FaaS)?
Function as a Service (FaaS) este o formă de cloud computing care ajută dezvoltatorii să lucreze mai bine, eliminând nevoia de a menține infrastructura aplicațiilor. Când dezvoltatorii folosesc FaaS, ei folosesc o platformă FaaS pentru a construi, rula și supraveghea pachete de aplicații pentru ei.
În acest moment, s-ar putea să credeți că FaaS sună ca un computer fără server - și este. Calculul fără server permite dezvoltatorilor să externalizeze gestionarea bazelor de date, gateway-uri API, stocare, mesagerie și alte infrastructuri către un furnizor terță parte. FaaS este un tip de calcul fără server.

Deși poate fi prima dată când citiți despre FaaS, probabil l-ați întâlnit în sălbăticie. Multe programe și aplicații populare folosesc FaaS, cum ar fi Alexa de la Amazon.
Dacă sunteți familiarizat cu Alexa, veți ști că puteți extinde funcțiile Alexa prin construirea de „abilități”. La fel ca aplicațiile, abilitățile îi permit lui Alexa să facă lucruri în afara configurației sale de bază. Lucruri precum verificarea notificărilor în aplicația dvs., începerea unui nou chat sau redarea sunetului personalizat.
Amazon rulează toate abilitățile Alexa prin AWS Lambda. Când construiți o nouă abilitate, o creați ca o funcție pe care o implementați prin AWS Lambda. AWS Lambda rulează apoi funcția pentru dvs. și se ocupă de problemele legate de infrastructură, cum ar fi securitatea și gestionarea bazelor de date.
Deci, cum funcționează FaaS pas cu pas? Să acoperim asta în continuare.
Cum funcționează FaaS?
Pentru a înțelege FaaS, trebuie să cunoașteți doi termeni cheie:
- „Arhitectură monolitică” = o aplicație autonomă care rulează independent de alte aplicații. Aceste aplicații gestionează interfața cu utilizatorul, funcțiile de afaceri și interfața de date. Codul arhitecturii monolitice se bazează pe alte bucăți de cod.
- „Arhitectura de microserviciu” = o bucată de cod care se ocupă de câteva sarcini mici. Aceste microservicii sunt separate (deși formează o întreagă aplicație împreună).
Iată o diagramă care arată cum diferă arhitectura monolitică și arhitectura microserviciilor:

Puteți vedea diferența principală în practică între arhitecturile microservicii și arhitecturile monolitice atunci când executați sau actualizați o funcție. Cu o arhitectură monolitică, întregul program execută funcția deodată (cum ar fi actualizarea unei aplicații, de exemplu). Cu o arhitectură de microservicii, puteți executa funcția de microservicii în mod independent.
FaaS este lucrul care ajută arhitecturile de microservicii să funcționeze.
Când executați fiecare nouă funcție de microserviciu, trebuie doar să creați funcția. Apoi, furnizorul dvs. FaaS preia funcția, o rulează și se ocupă de gestionarea funcției de atunci înainte.
Deoarece FaaS este un instrument care funcționează cu informații din partea dvs., este esențial să rețineți că fiecare funcție FaaS ar trebui să fie responsabilă doar pentru o sarcină. Această sarcină rulează atunci când declanșatorul este activat. De exemplu, o funcție care produce o copie a chitanței utilizatorului va funcționa numai dacă utilizatorul apasă „descărcați chitanța”.
FaaS folosește „modelul de execuție bazat pe evenimente”, ceea ce înseamnă că funcțiile dvs. se activează numai atunci când sunt declanșate. În mod similar, ele nu rulează în fundal.
Deci, ce altceva poate face FaaS?
Ce servicii include FaaS?
Deși toți furnizorii sunt diferiți, furnizorii FaaS oferă în general aceste servicii:
- Servicii de autentificare. Acestea gestionează procesele de conectare și autentificare pentru utilizatorii programului dvs.
- Servicii de baze de date. Acestea vă ajută să introduceți informații în baze de date, astfel încât programul dumneavoastră să le poată utiliza. Furnizorii FaaS gestionează o anumită întreținere a bazei de date pentru dvs.
- Stocarea fișierelor. Furnizorii FaaS pot stoca date și fișiere pentru aplicația dvs., astfel încât nu trebuie să o găzduiți pe propriul server.
- Raportare. Furnizorii FaaS pot urmări erorile sau amenințările de securitate în programul dvs. și vă pot avertiza atunci când găsesc ceva în neregulă.
În general, aceste servicii îi ajută pe dezvoltatori să lucreze mai inteligent. Să discutăm în continuare avantajele FaaS.
Avantajele unui model FaaS
Cu FaaS, dezvoltatorii nu trebuie să-și facă griji cu privire la infrastructură sau implementare - doar scriind logica aplicației. Astfel, atunci când este implementat în prezent, FaaS poate reduce foarte mult timpul necesar pentru construirea și implementarea unui program.
Construirea și implementarea sunt, de asemenea, mai ușoare cu FaaS. Timpul de furnizare durează doar câteva secunde, mai degrabă decât ore la un moment dat. Nici nu sunteți limitat la anumite limbi sau resurse. Furnizorii FaaS pot rula cod în majoritatea limbilor și puteți accelera procesul de construire folosind cache-urile și bazele de date oferite de furnizorul dvs.
Modelul FaaS este foarte scalabil, iar planificarea capacității este mult mai ușoară. Dacă aveți nevoie de mai multe resurse, puteți să consultați instrucțiunile furnizorului dvs. FaaS pentru a vă actualiza utilizarea. Mulți furnizori FaaS oferă scalare orizontală, ceea ce înseamnă că dacă utilizarea dvs. crește, furnizorul vă va furniza pur și simplu resurse suplimentare pentru a face față creșterii.
În plus, nu trebuie să vă faceți griji pentru întreținere, recuperare în caz de dezastru (DR) sau securitate.
În cele din urmă, FaaS este foarte eficient. Furnizorii vă taxează doar pentru resursele pe care le utilizați, așa că probabil veți plăti mult mai puțin pentru FaaS decât ați plăti pentru propriul dvs. hardware. În mod similar, funcțiile dvs. nu rulează în fundal și stau inactiv. Nici nu trebuie să plătiți pentru ca ei să funcționeze.
Deci, este FaaS all-pros? Nu chiar.
Contra unui model FaaS
Modelul FaaS înlătură unele dintre cele mai mari provocări asociate cu dezvoltarea programului, dar vă solicită și să vă limitați în mod substanțial controlul. Nu poți lua multe decizii cu privire la serverul, securitatea sau baza de date pe care o folosește codul tău. În schimb, depinde de furnizorul dvs.
În mod similar, depanarea este adesea puțin mai dificilă, deoarece nu aveți control deplin asupra sistemului dvs. Testarea este, de asemenea, dificilă, deoarece codul FaaS nu se traduce întotdeauna fără probleme în mediul de testare.
În plus, trebuie să respectați cerințele stricte ale furnizorului dvs. FaaS. Funcțiile FaaS pot finaliza o singură acțiune, așa că, dacă nu sunteți obișnuit cu aceasta, va trebui să schimbați modul în care dvs. și echipa dvs. scrieți codul. În mod similar, poate fi necesar să rescrieți codul în aplicațiile existente pentru a-l face potrivit pentru implementarea FaaS - astfel încât FaaS este adesea mai potrivit pentru programele noi decât cele vechi.
În cele din urmă, alegerea FaaS înseamnă adesea angajamentul față de un singur furnizor pe termen lung. Lucrați cu sistemul și cerințele furnizorului dvs. atunci când vă creați programele. Desigur, schimbarea furnizorilor vă poate cere să vă refaceți o parte din munca dvs. și, eventual, să vă întrerupeți funcțiile.
Pro vs Contra
Pro | Contra |
Implementați codul mai rapid Aprovizionarea durează milisecunde Cod în orice limbă Recuperare automată în caz de dezastru (DR) Cost eficient Scalabil | Pierde controlul asupra serverului Depanarea este mai grea Testarea durează mai mult Sunteți blocat la furnizorul dvs Trebuie să scrieți un cod adecvat pentru FaaS |
FaaS vs SaaS, PaaS și IaaS
Acum că știți mai multe despre FaaS, s-ar putea să vă întrebați cum se leagă de alte opțiuni Anything as a Service (XaaS), cum ar fi IaaS, SaaS și PaaS.
Serviciile IaaS, PaaS și FaaS au scopuri similare: ajută companiile să gestioneze aplicațiile mai ieftin și mai eficient. Cu toate acestea, fiecare opțiune oferă ceva diferit.
Infrastructura ca serviciu (IaaS) vă permite să închiriați putere de calcul (cum ar fi RAM și CPU). Cu IaaS, mai trebuie să gestionați unele funcții ale aplicației (cum ar fi securitatea) intern.
Platform as a Service (PaaS) vă permite să închiriați instrumente hardware și software pentru a vă construi aplicația. Un exemplu comun este AWS Elastic Beanstalk.
Spre deosebire de IaaS și PaaS, FaaS vă permite să închiriați spațiu pentru a rula funcții în mod independent. Această caracteristică îl face mai scalabil.
Iată un scurt rezumat al modului în care cele trei funcționează diferit:

Software-ul ca serviciu (SaaS) nu este orientat spre crearea de aplicații sau programe. În schimb, vă permite să închiriați aplicații, astfel încât să nu fie nevoie să le construiți intern. Există mii de opțiuni SaaS disponibile - de la instrumente de analiză a datelor la pluginuri SEO WordPress.
Dimensiunea pieței, cota și furnizorii principali
Creșterea FaaS reflectă o schimbare generală în modul în care organizațiile dezvoltă noi programe.
În deceniile precedente, dezvoltatorii au creat sisteme mari ca proiecte pe mai mulți ani. Astăzi, multe organizații sunt în favoarea unei abordări de dezvoltare a operațiunilor de dezvoltare (DevOps). DevOps prioritizează dezvoltarea și îmbunătățirea continuă a unui program, încetul cu încetul.

În mod similar, organizațiile folosesc din ce în ce mai mult serviciile cloud pentru a face lucrurile mai sigure și mai eficiente. Potrivit Oracle, organizațiile vor stoca în curând de 600 de ori mai multe date sensibile în cloud.
Puteți vedea această tendință în datele culese de la 7.164 de directori C-suite de la Statista. Din 2019 până în 2021, utilizarea unui singur serviciu cloud public sau privat a scăzut, iar majoritatea organizațiilor au adoptat mai multe soluții cloud.

Investițiile în cloud computing sunt, de asemenea, în creștere. Un alt studiu de la Statista pe sute de întreprinderi mari din întreaga lume a arătat că 83% dintre companiile chestionate au investit anual peste 1,2 milioane USD în cloud computing public. Această cifră este în creștere de la 50% în 2019.
Oamenii apelează la FaaS pentru că este pregătit pentru viitor și scalabil. În mod similar, oferă o productivitate și performanță mai bune, un timp de lansare pe piață mai rapid pentru aplicații și o modalitate mai rentabilă de a produce noi programe.
Aceste beneficii atrag multe industrii, inclusiv organizații din domeniul bancar (sau organizații „BFSI”), bunuri de larg consum și retail, divertisment, telecomunicații, servicii de informare și tehnologie activate (ITES), asistență medicală și producție. Iată cât de mult contribuie fiecare industrie la piața FaaS:


Spre deosebire de SaaS, nu există mii de furnizori FaaS între care organizațiile să aleagă. Marea majoritate a FaaS utilizează soluții oferite de jucători importanți, inclusiv AWS Lambda, Azure Functions, IBM Cloud Functions, Google Cloud Functions, Alibaba Cloud și Cloudflare Workers.
Vom acoperi acum fiecare dintre acești furnizori.
AWS Lambda
Lansat de Amazon în noiembrie 2014, AWS Lambda este un instrument FaaS extrem de popular. În T4 2021, 33% dintre utilizatorii de cloud au folosit un serviciu AWS.

AWS Lambda oferă suport nativ pentru multe limbaje de programare, inclusiv Node.js, C#, Python, Ruby, Go, Java și Powershell. După cum am menționat în „Ce este funcția ca serviciu (FaaS)?” Alexa folosește AWS Lambda pentru abilități.
Caracteristici și funcții:
- Se conectează la alte instrumente AWS
- Monitorizează performanța programului tău cu Amazon CloudWatch
- Peste 200 de integrări cu instrumente SaaS
- Puteți implementa containere docker (AWS a introdus această caracteristică în decembrie 2020)
Pro:
- Vă puteți construi propriul backend folosind API-ul Lambda sau gateway-ul Amazon API
- Puteți implementa funcții ca imagini container
- Vă puteți conecta la baze de date relaționale cu Amazon RDS Proxy
- Puteți alege câtă memorie să dedicați fiecărei funcții
Contra:
- Dacă nu utilizați deja AWS, configurarea acestuia va dura mult timp și efort
Funcții Microsoft Azure
Microsoft Azure Functions este o capacitate a Microsoft Azure, pe care Microsoft a lansat-o pentru prima dată ca „Windows Azure” în februarie 2010. Azure Functions vă permite să executați cod bazat pe evenimente prin FaaS. În T4 2021, 21% dintre utilizatorii de cloud au folosit Azure.

Caracteristici și funcții:
- Vă puteți conecta funcțiile la peste 250 de conectori în Azure Logic Apps
- Suportă JavaScript, C#, F#, Powershell, PHP, Python și Java
- Oferă multe tutoriale pentru noii utilizatori
- Vă ajută să vă analizați programul prin Azure Application Insights
Pro:
- Azure Functions utilizează un model de programare integrat
- Potrivit pentru echipele care folosesc DevOps
- Mai multe planuri disponibile
Contra:
- Azure Functions nu acceptă Node.js sau Ruby
Funcții Google Cloud
Google Cloud este a treia cea mai populară soluție de cloud computing în spatele AWS și Azure. În prezent are o cotă de piață de 10%. Google Cloud Functions este o caracteristică FaaS a Google Cloud — un serviciu care oferă peste 100 de produse pentru o gamă largă de utilizări.

Caracteristici și funcții:
- Depanarea și înregistrarea în jurnal sunt integrate în Google Cloud Functions (prin CloudTrace și CloudDebugger)
- Utilizați declanșatoare de la Google Assistant, Google Cloud, Firebase sau orice aplicație care utilizează HTTP
- Google Cloud Functions se integrează cu mulți parteneri Google
Pro:
- Cei care doresc capabilități multi-cloud sau hibride îl pot folosi
- Este open-source, așa că vă puteți muta cu ușurință pe o altă platformă FaaS, dacă preferați
- Este foarte usor de folosit
- Google oferă multe resurse gratuite utilizatorilor noi
Contra:
- Serviciile bazate pe containere ale Google Cloud Function sunt mai puțin avansate decât alți furnizori FaaS
IBM Cloud
IBM Cloud provine de la SoftLayer, o platformă cloud publică pe care IBM a cumpărat-o în iunie 2013. IBM a transformat platforma în Bluemix și a lansat-o ca instrument PaaS în iulie 2014. De atunci, IBM a rebrandat serviciul ca IBM Cloud și și-a extins funcțiile în FaaS.

Începând cu T4 2021, 4% dintre utilizatorii de cloud au folosit IBM Cloud. Funcționează pe ecosistemul Apache OpenWhisk.
Caracteristici și funcții:
- Puteți căuta conținut video
- Vă puteți conecta programul la alte programe prin intermediul API-urilor IBM Watson
- IBM oferă funcții predefinite pentru unele sarcini comune
- Suportă Node.js, Python, Swift, PHP, Go, Ruby, Java și .NET Core
Pro:
- Excelent pentru construirea de aplicații mobile
- Usor de invatat sa folosesti
- Monitorizează aplicația dvs. prin IBM Cloud Monitoring
Contra:
- Limitează timpul de memorie al funcției la zece minute sau 2048 MB
Alibaba Cloud
Alibaba Cloud nu este la fel de cunoscut ca alte opțiuni de cloud computing, dar încă deține o cotă de piață decentă de 6%. Lansat de Alibaba în 2008, Alibaba Cloud este orientat către afacerile online și către cei care folosesc celelalte servicii Alibaba.

FaaS este una dintre ofertele Alibaba Cloud, alături de o rețea de livrare de conținut (CDN), stocare de date și procesare de date mari.
Caracteristici și funcții:
- Se integrează cu celelalte servicii de calcul ale Alibaba
- Dovada dezastrelor, deoarece Alibaba găzduiește funcții pe clustere în mai multe zone
- Transcodare video
- Raționamentul AI
- Suportă Node.js, Python, Java, PHP și C#
Pro:
- Oferă o opțiune gratuită pentru cei care nu au nevoie să ruleze mult cod
- Foarte scalabil
- Puteți utiliza mai multe tipuri de declanșatoare
Contra:
- Poate fi dificil să mutați funcții de la Alibaba la alt furnizor FaaS
Lucrătorii Cloudflare
Condus de Cloudflare, Cloudflare Workers este un sistem FaaS care este potrivit pentru dezvoltatorii noi și cei care doresc să ruleze cod aproape instantaneu. Cloudflare Workers oferă un plan gratuit și prețuri scalabile.

Caracteristici și funcții:
- Suportă JavaScript, C++, Rust și C
- Puteți stoca imagini, fișiere PDF și alte fișiere pe Cloudflare Workers pentru a le implementa ca active statice
- Dovada dezastrelor, deoarece Cloudflare Workers utilizează o rețea globală de servere
- Se integrează cu alte produse Cloudflare
Pro:
- Este mai ieftin decât multe alte opțiuni FaaS
- Este ușor pentru dezvoltatorii mai noi să învețe să folosească
- Puteți începe foarte repede
- Cloudflare oferă tutoriale și resurse detaliate care vă pot ajuta să vă construiți aplicația
Contra:
- Cloudflare Workers este mai puțin robust decât alte opțiuni și este mai potrivit pentru cei cu proiecte la scară mică
Cele mai bune practici Faas
Da, FaaS este o tehnologie, dar este și o mentalitate pe care dezvoltatorii trebuie să o adopte față de dezvoltarea de programe și aplicații.
Pentru a profita la maximum de FaaS, urmați aceste bune practici:
- Amintiți-vă limitările FaaS. FaaS nu este potrivit pentru fiecare program și dacă încercați să creați un program care nu este prietenos cu FaaS cu FaaS, vă va costa timp, efort și bani.
- Rulați doar funcții cu o singură acțiune pe FaaS. Dacă executați funcții cu mai multe acțiuni, perturbați mediul izolat în care funcțiile FaaS funcționează cel mai bine. Această întrerupere va încetini aplicația dvs. și va reduce eficiența.
- Nu rulați funcții cu dependențe. Dependențele vor crea erori și o problemă de scalabilitate mai târziu.
- Urmăriți-vă cu atenție timpul de încărcare. Timpul de încărcare provine din biblioteci sau funcții care necesită multă memorie. Un timp mare de încărcare va încetini programul și, în cele din urmă, va frustra utilizatorii.
- Reduceți numărul de conexiuni ale sistemului de management al bazelor de date relaționale (RDBMS) pe care le utilizați. Aceste conexiuni vor crește timpul necesar pentru ca funcțiile să funcționeze și vor introduce un punct de eșec în programul dumneavoastră.
Ai nevoie de FaaS?
FaaS este o tehnologie inovatoare și care schimbă jocul pentru unii, dar nu va funcționa pentru toată lumea.
Organizațiile care obțin cel mai mult de la FaaS sunt dispuse să construiască programe cu arhitecturi de microservicii în care fiecare funcție face un singur lucru. Aceste funcții ar trebui să funcționeze independent - dacă sunt dependente, veți întâmpina probleme de scalabilitate.
Dacă doriți să construiți o aplicație cu o arhitectură monolitică sau cu funcții care se bazează una pe cealaltă, este posibil ca FaaS să nu funcționeze bine. În mod similar, dacă nu doriți să vă dedicați unui singur furnizor pe termen lung, FaaS ar putea fi o alegere miop.
Desigur, puteți folosi în continuare tehnologia cloud fără FaaS. Ai putea, de exemplu, să investești în PaaS sau IaaS pentru a externaliza unele dintre funcțiile aplicației tale către cloud. Această opțiune îți va oferi unele dintre beneficiile de cost și eficiență ale cloud computing-ului, dar nu ar fi nevoie să-ți construiești programul în limitele restricțiilor modelului FaaS.
Alternativ, dacă nu aveți nevoie să construiți un program care face ceva foarte de nișă sau specializat, luați în considerare investiția într-un instrument SaaS. Unele instrumente SaaS sunt chiar open-source, așa că este posibil să puteți adapta un instrument existent pentru nevoile dvs.
rezumat
FaaS nu este technobabble sau o nouă tendință. Este o tehnologie scalabilă la care ar trebui să vă așteptați să o vedeți mai mult în următorul deceniu.
Explicarea FaaS poate părea uneori dificilă, dar FaaS este doar un serviciu care permite dezvoltatorilor să scrie și să ruleze cod folosind infrastructura întreținută de altcineva. Multe servicii pe care le utilizați în mod regulat, cum ar fi Alexa, folosesc FaaS. Furnizorii obișnuiți de FaaS includ IBM Cloud Functions, AWS Lambda, Alibaba Cloud, Google Cloud Functions și Microsoft Azure Functions.
Deși FaaS este foarte eficient pentru unele companii, nu se va potrivi tuturor. FaaS funcționează cel mai bine pentru a rula cod izolat, fără stat, care îndeplinește o singură funcție.
Am dori să vă predăm microfonul (sau tastatura). Cum utilizați FaaS în afacerea dvs. și aveți vreun sfat pentru alții care explorează tehnologia pentru prima dată? Vă rugăm să ne spuneți în comentariile de mai jos.