L'hosting di applicazioni software su Internet di solito significa fornire e gestire server virtuali o fisici, insieme a sistemi operativi e processi dei server. Con FaaS, tutto l'hardware fisico, i sistemi operativi delle macchine virtuali e i software del server Web vengono gestiti automaticamente dal provider cloud. Invece di avere un'applicazione su un server, le aziende possono eseguirla direttamente in cloud.
FaaS (Function-as-a-Service) è un servizio di cloud computing che offre agli utenti la possibilità di eseguire codice come Javascript, Linux, HTML ecc.. in risposta a eventi, senza dover costruire alcuna infrastruttura complessa (ovvero l'infrastruttura associata a creazione e avvio di app a microservizi).
In altre parole per effettuare il deploy di un servizio devi rendere disponibile un server fisico o una Virtual Machine(VM), gestire un sistema operativo, avere una connessione stabile e rendere operativi tutti i sottoservizi (per es. Web Server, Database, ecc…) prima ancora che aver sviluppato il servizio che intendi fornire!
Attraverso un FaaS invece ti focalizzi solo sulle singole funzioni della tua applicazione.
# | Codice | Container | Runtime | Sistema operativo | Hardware |
---|---|---|---|---|---|
Legacy | SI | SI | SI | SI | SI |
Virtual Machine | SI | SI | Si | SI | NO |
Containers | SI | SI | NO | NO | NO |
Faas | SI | NO | NO | NO | NO |
FaaS non è la stessa cosa, ma è un sottoinsieme di "Serverless e Functions as a Service". L'elaborazione serverless si concentra su una particolare categoria di servizi, ad esempio database, messaggistica, API o storage, in cui la gestione, la configurazione e la fatturazione dei server sono invisibili agli utenti finali. FaaS, tuttavia, è una delle tecnologie di architettura serverless più centrali. Si concentra su paradigmi di elaborazione basati su eventi che coinvolgono interi codici applicativi eseguiti solo in risposta alle richieste.
Dalla prospettiva dell'utente, il Function as a Service è un ambiente precostruito per lo sviluppo o l'implementazione di software. Il fornitori di servizi cloud (CSP) possiede e gestisce l'intero stack di tecnologia, tra cui tutto l'hardware, il middleware e il software.
In altri modelli di servizi cloud, l'utente paga, in un periodo di tempo definito, per l'accesso continuo a determinate macchine o container virtuali e per le risorse che consumano.
Nel modello FaaS, i clienti pagano solo per il tempo e le risorse necessarie per produrre una funzione.
In una struttura di prezzo di CSP, ad esempio, la durata di una funzione e l'implementazione delle risorse sono misurate in "secondi per gigabye", arrotondati al millisecondo più vicino.
Il FaaS è uno strumento utilissimo e questi sono tutti i benefici che otterrai utilizzandolo:
- Ti focalizzi sul codice e non sull’infrastruttura: lo abbiamo già accennato, puoi dividere alcune componenti applicative in funzioni implementate tramite FaaS rendendone indipendente lo sviluppo e la scalabilità;
- Paghi solo ciò che usi: la gestione della domanda è automatizzata, non devi “spegnere” ed “accendere” nulla, una volta sviluppato, il FaaS si attiva in base all’evento che hai definito, svolge le sue attività e va in stand-by e tu pagherai solo per le risorse utilizzate mentre il FaaS svolge le sue attività.
- Scala automaticamente: non devi impostare trigger, soglie, capacità e qualsiasi altra variabile. Il FaaS opera autonomamente per fornire le massime prestazioni.
- Alta Affidabilità: il FaaS ti permette di sfruttare la sua struttura nativa per ottenere alta affidabilità a livello mondiale senza alcun costo aggiuntivo a tuo carico.
- C'è meno trasparenza che coinvolge l'infrastruttura di back-end poiché viene gestita esternamente
- Il costo può essere difficile da prevedere o incorporare nei budget a causa del modello pay-per-use
- A causa dell'introduzione abbastanza recente di FaaS, devono ancora essere sviluppate soluzioni a problemi come il monitoraggio delle funzioni e il debug remoto
FaaS va molto bene in alcune aree verticali come, per esempio, la traduzione di comandi vocali, l’analisi di immagini grafiche: singole attività che devono essere eseguite in modo veloce e asincrono dal resto delle applicazioni. Può essere utilizzato in vari modi, dalle app Web e parlare con API e chatbot online alla personalizzazione dell'interfaccia utente di un sito Web con test A/B e geolocalizzazione e altro ancora. Alcuni dei casi d'uso più popolari per FaaS sono le API per applicazioni Web e mobili, elaborazione multimediale, elaborazione dati e Internet of Things (IoT).