Function as a Service (FaaS): tutto ciò che devi sapere

Pubblicato: 2022-06-09

Probabilmente hai sentito parlare di SaaS e potresti aver sentito parlare di PaaS e IaaS, ma hai sentito parlare di Function as a Service (FaaS)?

Il mercato FaaS sta crescendo rapidamente. Secondo Allied Market Research, il mercato valeva 3,01 miliardi di dollari nel 2018. Si prevede che questo numero crescerà fino a 24 miliardi di dollari entro il 2026, il che significa che il settore crescerà a un tasso di crescita annuale composto (CAGR) del 29,7% dal 2020 al 2026.

Guardando quella crescita, è sicuro dire che FaaS è un grosso problema.

Ma cos'è FaaS e come funziona? Per aiutarti a rispondere a queste domande, questo articolo tratterà le basi di FaaS, perché le persone dovrebbero (e non dovrebbero) usare FaaS e lo stato del mercato globale FaaS a partire dal 2022.

Andiamo.

Che cos'è la funzione come servizio (FaaS)?

Function as a Service (FaaS) è ​​una forma di cloud computing che aiuta gli sviluppatori a lavorare meglio eliminando la necessità di mantenere l'infrastruttura delle applicazioni. Quando gli sviluppatori sfruttano FaaS, utilizzano una piattaforma FaaS per creare, eseguire e supervisionare i pacchetti applicativi per loro.

A questo punto, potresti pensare che FaaS suoni come un computer serverless, e lo è. L'elaborazione serverless consente agli sviluppatori di esternalizzare la gestione di database, gateway API, storage, messaggistica e altre infrastrutture a un provider di terze parti. FaaS è un tipo di elaborazione serverless.

Un'immagine che mostra come funziona l'elaborazione serverless
Come funziona l'elaborazione serverless ( Fonte: iviewlabs)

Anche se questa potrebbe essere la prima volta che leggi FaaS, probabilmente l'hai incontrato in natura. Molti programmi e app popolari utilizzano FaaS, come Alexa di Amazon.

Se hai familiarità con Alexa, saprai che puoi espandere le funzioni di Alexa sviluppando "competenze". Come le app, le abilità consentono ad Alexa di fare cose al di fuori della sua configurazione di base. Cose come controllare le notifiche nella tua app, avviare una nuova chat o riprodurre audio personalizzato.

Amazon gestisce tutte le competenze di Alexa tramite AWS Lambda. Quando crei una nuova abilità, la crei come una funzione che distribuisci tramite AWS Lambda. AWS Lambda esegue quindi la funzione per te e gestisce i problemi dell'infrastruttura come la sicurezza e la gestione del database.

Quindi, come funziona FaaS passo dopo passo? Copriamolo dopo.

Cos'è FaaS? Questa guida scompone tutto ciò che devi sapere Fai clic per twittare

Come funziona FaaS?

Per capire FaaS, devi conoscere due termini chiave:

  1. “Architettura monolitica” = un'applicazione autonoma che viene eseguita indipendentemente dalle altre applicazioni. Queste applicazioni gestiscono internamente l'interfaccia utente, le funzioni aziendali e l'interfaccia dati. Il codice dell'architettura monolitica si basa su altre parti di codice.
  2. “Architettura dei microservizi” = un pezzo di codice che gestisce alcune piccole attività. Questi microservizi sono separati (sebbene costituiscano un'intera applicazione insieme).

Ecco un diagramma che mostra come differiscono l'architettura monolitica e l'architettura dei microservizi:

Architettura monolitica e architettura di microservizi
Architettura monolitica e architettura di microservizi ( Fonte: BMC)

Puoi vedere la differenza principale nella pratica tra microservizi e architetture monolitiche quando esegui o aggiorni una funzione. Con un'architettura monolitica, l'intero programma esegue la funzione in una volta (come l'aggiornamento di un'app, ad esempio). Con un'architettura di microservizi, puoi eseguire la funzione di microservizi in modo indipendente.

FaaS è la cosa che aiuta le architetture di microservizi a funzionare.

Quando esegui ogni nuova funzione di microservizio, devi solo creare la funzione. Quindi, il tuo provider FaaS prende la funzione, la esegue e da quel momento in poi gestisce la gestione della funzione.

Poiché FaaS è uno strumento che funziona con l'input da te, è fondamentale notare che ogni funzione FaaS dovrebbe essere responsabile di un solo compito. Questa attività viene quindi eseguita quando viene attivato il relativo trigger. Ad esempio, una funzione che produce una copia della ricevuta dell'utente funzionerà solo se l'utente preme "scarica ricevuta".

FaaS utilizza il "modello di esecuzione basato sugli eventi", il che significa che le tue funzioni si attivano solo quando vengono attivate. Allo stesso modo, non vengono eseguiti in background.

Quindi, cos'altro può fare FaaS?

Quali servizi include FaaS?

Sebbene tutti i provider siano diversi, i provider FaaS generalmente offrono questi servizi:

  • Servizi di autenticazione. Questi gestiscono i processi di accesso e autenticazione per gli utenti del tuo programma.
  • Servizi di banca dati. Questi ti aiutano a archiviare le informazioni nei database in modo che il tuo programma possa usarle. I provider FaaS gestiscono per te alcune attività di manutenzione del database.
  • Archiviazione di file. I provider FaaS possono archiviare dati e file per la tua app, quindi non è necessario ospitarla sul tuo server.
  • Segnalazione. I provider FaaS possono controllare errori o minacce alla sicurezza nel tuo programma e avvisarti quando trovano qualcosa che non va.

Nel complesso, questi servizi aiutano gli sviluppatori a lavorare in modo più intelligente. Copriamo i pro di FaaS dopo.

Pro di un modello FaaS

Con FaaS, gli sviluppatori non devono preoccuparsi dell'infrastruttura o della distribuzione, ma solo di scrivere la logica dell'applicazione. Pertanto, se implementato attualmente, FaaS può ridurre notevolmente il tempo necessario per creare e distribuire un programma.

Anche la creazione e la distribuzione sono più facili con FaaS. Il tempo di provisioning richiede solo pochi secondi anziché ore alla volta. Non sei nemmeno limitato a particolari lingue o risorse. I provider FaaS possono eseguire codice nella maggior parte delle lingue e puoi accelerare il processo di creazione utilizzando le cache e i database offerti dal tuo provider.

Il modello FaaS è molto scalabile e la pianificazione della capacità è molto più semplice. Se hai bisogno di più risorse, puoi semplicemente fare riferimento alle istruzioni del tuo provider FaaS per aggiornare il tuo utilizzo. Molti provider FaaS offrono il ridimensionamento orizzontale, il che significa che se il tuo utilizzo aumenta, il provider ti fornirà semplicemente risorse extra per far fronte al picco.

Inoltre, non devi preoccuparti della manutenzione, del ripristino di emergenza (DR) o della sicurezza.

Infine, FaaS è molto efficiente. I fornitori ti addebitano solo le risorse che utilizzi, quindi probabilmente pagherai molto meno per FaaS rispetto a quanto faresti per il tuo hardware. Allo stesso modo, le tue funzioni non vengono eseguite in background e rimangono inattive. Non è nemmeno necessario pagare per farli rimanere inattivi.

Quindi, FaaS è tutto professionale? Non proprio.

Contro di un modello FaaS

Il modello FaaS rimuove alcune delle maggiori sfide associate allo sviluppo del programma, ma richiede anche di limitare sostanzialmente il controllo. Non puoi prendere molte decisioni in merito al server, alla sicurezza o al database utilizzato dal tuo codice. Invece, dipende dal tuo provider.

Allo stesso modo, il debug è spesso un po' più difficile poiché non hai il pieno controllo del tuo sistema. Anche il test è difficile poiché il codice FaaS non si traduce sempre in modo fluido nell'ambiente di test.

Inoltre, devi rispettare i severi requisiti del tuo fornitore FaaS. Le funzioni FaaS possono completare solo un'azione, quindi se non sei abituato a questo, dovrai cambiare il modo in cui tu e il tuo team scrivete il codice. Allo stesso modo, potrebbe essere necessario riscrivere il codice nelle app esistenti per renderlo adatto alla distribuzione FaaS, quindi FaaS è spesso più adatto a nuovi programmi rispetto a quelli vecchi.

Infine, scegliere FaaS significa spesso impegnarsi a lungo termine con un unico fornitore. Lavori con il sistema e i requisiti del tuo provider quando crei i tuoi programmi. Naturalmente, cambiare provider potrebbe richiedere di rifare parte del tuo lavoro e potenzialmente interrompere le tue funzioni.

Pro vs Contro

Professionisti contro
Distribuisci il codice più velocemente

Il provisioning richiede millisecondi

Codice in qualsiasi lingua

Ripristino automatico di emergenza (DR)

Costo efficiente

scalabile

Perdi il controllo sul server

Il debug è più difficile

Il test richiede più tempo

Sei vincolato al tuo venditore

È necessario scrivere codice adatto a FaaS

FaaS vs SaaS, PaaS e IaaS

Ora che ne sai di più su FaaS, potresti chiederti come si collega ad altre opzioni Anything as a Service (XaaS) come IaaS, SaaS e PaaS.

I servizi IaaS, PaaS e FaaS hanno scopi simili: aiutano le aziende a gestire le applicazioni in modo più economico ed efficace. Tuttavia, ogni opzione offre qualcosa di diverso.

Infrastructure as a Service (IaaS) ti consente di affittare potenza di calcolo (come RAM e CPU). Con IaaS, devi comunque gestire internamente alcune funzioni dell'applicazione (come la sicurezza).

Platform as a Service (PaaS) ti consente di noleggiare strumenti hardware e software per creare la tua app. Un esempio comune è AWS Elastic Beanstalk.

A differenza di IaaS e PaaS, FaaS consente di affittare spazio per eseguire funzioni in modo indipendente. Questa caratteristica lo rende più scalabile.

Ecco un breve riassunto di come i tre funzionano in modo diverso:

Un'immagine che mostra come FaaS differisce da IaaS e PaaS
In che modo FaaS differisce da IaaS e PaaS ( Fonte: thenewstack.io)

Software as a Service (SaaS) non è orientato alla creazione di app o programmi. Invece, ti consente di noleggiare le applicazioni in modo che non sia necessario costruirle internamente. Sono disponibili migliaia di opzioni SaaS, dagli strumenti di analisi dei dati ai plug-in SEO di WordPress.

Dimensioni del mercato, quota e fornitori leader

La crescita di FaaS riflette un cambiamento generale nel modo in cui le organizzazioni stanno sviluppando nuovi programmi.

Nei decenni precedenti, gli sviluppatori hanno creato grandi sistemi come progetti pluriennali. Oggi, molte organizzazioni preferiscono un approccio allo sviluppo delle operazioni di sviluppo (DevOps). DevOps dà priorità allo sviluppo e al miglioramento continuo di un programma a poco a poco.

Un'immagine che mostra come funziona DevOps
Come funziona DevOps ( Fonte: Atlassian)

Allo stesso modo, le organizzazioni utilizzano sempre più i servizi cloud per rendere le cose più sicure ed efficienti. Secondo Oracle, le organizzazioni archivieranno presto nel cloud dati 600 volte più sensibili.

Puoi vedere questa tendenza nei dati raccolti da 7.164 dirigenti di C-suite di Statista. Dal 2019 al 2021, l'uso di un unico servizio cloud pubblico o privato è diminuito e la maggior parte delle organizzazioni ha adottato più soluzioni cloud.

Un diagramma che mostra l'uso della tecnologia cloud
Utilizzo della tecnologia Cloud ( Fonte: Statista)

Crescono anche gli investimenti nel cloud computing. Un altro studio di Statista su centinaia di grandi imprese in tutto il mondo ha mostrato che l'83% delle aziende intervistate ha investito ogni anno più di 1,2 milioni di dollari nel cloud computing pubblico. Questa cifra è in aumento rispetto al 50% nel 2019.

Le persone si stanno rivolgendo a FaaS perché è a prova di futuro e scalabile. Allo stesso modo, fornisce produttività e prestazioni migliori, un time-to-market più rapido per le app e un modo più conveniente per produrre nuovi programmi.

Questi vantaggi attraggono molti settori, comprese le organizzazioni bancarie (o organizzazioni "BFSI"), beni di consumo e vendita al dettaglio, intrattenimento, telecomunicazioni, servizi abilitati per l'informazione e la tecnologia (ITES), assistenza sanitaria e produzione. Ecco quanto ogni settore contribuisce al mercato FaaS:

Un'immagine che mostra quali industrie utilizzano Faas
Quali industrie utilizzano FaaS ( Fonte: MarketsandMarkets)

A differenza di SaaS, non ci sono migliaia di fornitori FaaS tra cui le organizzazioni possono scegliere. La stragrande maggioranza di FaaS utilizza soluzioni offerte dai principali attori, tra cui AWS Lambda, Funzioni di Azure, IBM Cloud Functions, Google Cloud Functions, Alibaba Cloud e Cloudflare Workers.

Tratteremo ciascuno di questi fornitori ora.

AWS Lambda

Lanciato da Amazon nel novembre 2014, AWS Lambda è uno strumento FaaS estremamente popolare. Nel quarto trimestre del 2021, il 33% degli utenti cloud utilizzava un servizio AWS.

Pagina iniziale di AWS Lambda
AWS Lambda

AWS Lambda offre supporto nativo per molti linguaggi di programmazione, inclusi Node.js, C#, Python, Ruby, Go, Java e Powershell. Come accennato in "Che cos'è la funzione come servizio (FaaS)?" Alexa utilizza AWS Lambda per le competenze.

Caratteristiche e funzioni:

  • Si collega ad altri strumenti AWS
  • Monitora le prestazioni del tuo programma con Amazon CloudWatch
  • Oltre 200 integrazioni con strumenti SaaS
  • Puoi distribuire i contenitori docker (AWS ha introdotto questa funzionalità a dicembre 2020)

Professionisti:

  • Puoi creare il tuo back-end utilizzando l'API Lambda o il gateway API Amazon
  • È possibile distribuire funzioni come immagini del contenitore
  • Puoi connetterti a database relazionali con Amazon RDS Proxy
  • Puoi scegliere quanta memoria dedicare a ciascuna funzione

Contro:

  • Se non utilizzi già AWS, la configurazione richiederà molto tempo e fatica

Funzioni di Microsoft Azure

Funzioni di Microsoft Azure è una funzionalità di Microsoft Azure, che Microsoft ha lanciato per la prima volta come "Windows Azure" nel febbraio 2010. Funzioni di Azure consente di eseguire codice basato su eventi tramite FaaS. Nel quarto trimestre del 2021, il 21% degli utenti cloud utilizzava Azure.

Pagina iniziale di Funzioni di Microsoft Azure
Funzioni di Microsoft Azure

Caratteristiche e funzioni:

  • Puoi connettere le tue funzioni a oltre 250 connettori in App per la logica di Azure
  • Supporta JavaScript, C#, F#, Powershell, PHP, Python e Java
  • Fornisce molti tutorial per i nuovi utenti
  • Ti aiuta ad analizzare il tuo programma tramite Azure Application Insights

Professionisti:

  • Funzioni di Azure usa un modello di programmazione integrato
  • Adatto ai team che utilizzano DevOps
  • Più piani disponibili

Contro:

  • Funzioni di Azure non supporta Node.js o Ruby

Funzioni Google Cloud

Google Cloud è la terza soluzione di cloud computing più popolare dopo AWS e Azure. Attualmente ha una quota di mercato del 10%. Google Cloud Functions è una funzionalità FaaS di Google Cloud, un servizio che offre oltre 100 prodotti per un'ampia gamma di usi.

Funzioni di Google Cloud
Google Cloud

Caratteristiche e funzioni:

  • Il debug e la registrazione sono integrati in Google Cloud Functions (tramite CloudTrace e CloudDebugger)
  • Utilizzi i trigger di Google Assistant, Google Cloud, Firebase o qualsiasi applicazione che utilizza HTTP
  • Google Cloud Functions si integra con molti partner di Google

Professionisti:

  • Coloro che desiderano funzionalità multi-cloud o ibride possono utilizzarlo
  • È open-source, quindi puoi passare facilmente a un'altra piattaforma FaaS se preferisci
  • È molto facile da usare
  • Google fornisce molte risorse gratuite ai nuovi utenti

Contro:

  • I servizi basati su container di Google Cloud Function sono meno avanzati rispetto ad altri provider FaaS

IBM Cloud

IBM Cloud deriva da SoftLayer, una piattaforma cloud pubblica che IBM ha acquistato nel giugno 2013. IBM ha trasformato la piattaforma in Bluemix e l'ha lanciata come strumento PaaS nel luglio 2014. Da allora, IBM ha rinominato il servizio come IBM Cloud e ne ha ampliato le funzionalità in FaaS.

Lottando con tempi di inattività e problemi con WordPress? Kinsta è la soluzione di hosting progettata per farti risparmiare tempo! Scopri le nostre caratteristiche
Pagina iniziale di IBM Cloud
IBM Cloud

Nel quarto trimestre del 2021, il 4% degli utenti cloud ha utilizzato IBM Cloud. Funziona sull'ecosistema Apache OpenWhisk.

Caratteristiche e funzioni:

  • Puoi cercare contenuti video
  • Puoi connettere il tuo programma ad altri programmi tramite le API IBM Watson
  • IBM offre funzioni predefinite per alcune attività comuni
  • Supporta Node.js, Python, Swift, PHP, Go, Ruby, Java e .NET Core

Professionisti:

  • Ottimo per la creazione di applicazioni mobili
  • Facile da imparare a usare
  • Monitora la tua app tramite IBM Cloud Monitoring

Contro:

  • Limita il tempo di memoria della tua funzione a dieci minuti o 2048 MB

Alibaba nuvola

Alibaba Cloud non è così ampiamente conosciuto come altre opzioni di cloud computing, ma detiene comunque una discreta quota di mercato del 6%. Lanciato da Alibaba nel 2008, Alibaba Cloud è rivolto alle aziende online e a coloro che utilizzano gli altri servizi di Alibaba.

Pagina iniziale di Alibaba Cloud
Alibaba nuvola

FaaS è una delle offerte di Alibaba Cloud, insieme a una Content Delivery Network (CDN), all'archiviazione dei dati e all'elaborazione di big data.

Caratteristiche e funzioni:

  • Si integra con gli altri servizi informatici di Alibaba
  • A prova di disastro, poiché Alibaba ospita funziona su cluster in più aree
  • Transcodifica video
  • Ragionamento dell'IA
  • Supporta Node.js, Python, Java, PHP e C#

Professionisti:

  • Fornisce un'opzione gratuita per coloro che non hanno bisogno di eseguire molto codice
  • Altamente scalabile
  • Puoi usare molti tipi di trigger

Contro:

  • Può essere difficile spostare le funzioni da Alibaba a un altro provider FaaS

Lavoratori di Cloudflare

Gestito da Cloudflare, Cloudflare Workers è un sistema FaaS adatto ai nuovi sviluppatori e a coloro che desiderano eseguire codice quasi istantaneamente. Cloudflare Workers offre un piano gratuito e prezzi scalabili.

Pagina iniziale di Cloudflare Workers
Lavoratori di Cloudflare

Caratteristiche e funzioni:

  • Supporta JavaScript, C++, Rust e C
  • Puoi archiviare immagini, PDF e altri file su Cloudflare Workers da distribuire come risorse statiche
  • A prova di disastro, poiché Cloudflare Workers utilizza una rete globale di server
  • Si integra con altri prodotti Cloudflare

Professionisti:

  • È più economico di molte altre opzioni FaaS
  • È facile per i nuovi sviluppatori imparare a usarlo
  • Puoi iniziare molto rapidamente
  • Cloudflare offre tutorial e risorse dettagliati che possono aiutarti a creare la tua applicazione

Contro:

  • Cloudflare Workers è meno robusto di altre opzioni e più adatto a chi ha progetti su piccola scala

Migliori Pratiche Faas

Sì, FaaS è una tecnologia, ma è anche una mentalità che gli sviluppatori devono adottare per lo sviluppo di programmi e applicazioni.

Per ottenere il massimo da FaaS, segui queste best practice:

  • Ricorda i limiti di FaaS. FaaS non è adatto a tutti i programmi e se provi a creare un programma non compatibile con FaaS con FaaS, ti costerà tempo, fatica e denaro.
  • Esegui solo funzioni ad azione singola su FaaS. Se si eseguono funzioni con più azioni, si interrompe l'ambiente isolato in cui le funzioni FaaS funzionano meglio. Questa interruzione rallenterà l'applicazione e ridurrà l'efficienza.
  • Non eseguire funzioni con dipendenze. Le dipendenze creeranno errori e un problema di scalabilità in seguito.
  • Osserva attentamente il tuo tempo di caricamento. Il tuo tempo di caricamento deriva dalle tue librerie o funzioni che richiedono molta memoria. Un tempo di caricamento elevato rallenterà il tuo programma e alla fine frustrerà gli utenti.
  • Riduci il numero di connessioni RDBMS (Relation Database Management System) che utilizzi. Queste connessioni aumenteranno il tempo necessario per il funzionamento delle funzioni e introdurranno un punto di errore nel programma.

Hai bisogno di FaaS?

FaaS è una tecnologia innovativa e rivoluzionaria per alcuni, ma non funzionerà per tutti.

Le organizzazioni che ottengono il massimo da FaaS sono disposte a creare programmi con architetture di microservizi in cui ogni funzione fa solo una cosa. Queste funzioni dovrebbero funzionare in modo indipendente: se sono dipendenti, si verificheranno problemi di scalabilità.

Se vuoi creare un'applicazione con un'architettura monolitica o funzioni che attingono l'una dall'altra, FaaS potrebbe non funzionare bene. Allo stesso modo, se non vuoi impegnarti con un singolo fornitore a lungo termine, FaaS potrebbe essere una scelta miope.

Naturalmente, puoi ancora sfruttare la tecnologia cloud senza FaaS. Potresti, ad esempio, investire in PaaS o IaaS per esternalizzare alcune delle funzioni della tua applicazione nel cloud. Questa opzione offre alcuni dei vantaggi in termini di costi ed efficienza del cloud computing, ma non è necessario creare il programma entro i limiti del modello FaaS.

In alternativa, se non hai bisogno di creare un programma che faccia qualcosa di altamente di nicchia o specializzato, considera di investire in uno strumento SaaS. Alcuni strumenti SaaS sono persino open source, quindi potresti essere in grado di adattare uno strumento esistente alle tue esigenze.

Il mercato FaaS dovrebbe crescere fino a 24 miliardi di dollari entro il 2026... quindi non c'è mai stato un momento migliore per conoscere questo mercato Click to Tweet

Riepilogo

FaaS non è technobabble o una nuova tendenza. È una tecnologia scalabile che dovresti aspettarti di vedere di più nel prossimo decennio.

Spiegare FaaS a volte può sembrare difficile, ma FaaS è solo un servizio che consente agli sviluppatori di scrivere ed eseguire codice utilizzando l'infrastruttura gestita da qualcun altro. Molti servizi che utilizzi regolarmente, come Alexa, utilizzano FaaS. I fornitori FaaS comuni includono IBM Cloud Functions, AWS Lambda, Alibaba Cloud, Google Cloud Functions e Microsoft Azure Functions.

Sebbene FaaS sia molto efficace per alcune aziende, non è adatto a tutti. FaaS funziona in modo ottimale per l'esecuzione di codice senza stato isolato che esegue una singola funzione.

Vorremmo consegnarti il ​​microfono (o la tastiera). Come usi FaaS nella tua attività e hai qualche consiglio per gli altri che esplorano la tecnologia per la prima volta? Per favore, dicci nei commenti qui sotto.