Differenza tra Cloud Computing, Serverless Computing e FaaS

Differenza tra Cloud Computing, Serverless Computing e FaaS

Cloud Computing

Per molti anni le aziende hanno comprato e costruito internamente i propri server e data center dove poter installare applicazioni web, databases, backends per applicazioni mobile, ecc.
Una soluzione alternativa è arrivata nell’ultimo decennio con l’avvento di quello che comunemente viene chiamato cloud.
Il cloud computing essenzialmente permette di ottenere risorse computazionali, gestite da terze parti, accessibili via Internet e con pagamento in base al consumo e al tipo di servizio.

Questa tecnologia ha rivoluzionato completamente l’industria dell’Information Technology (IT) poichè ha conferito la possibilità ad aziende medie e piccole di poter usufruire di tecnlologie che precedentemente erano accessibili solo a grandi aziende, le quali potevano permettersi l’acquisto e la gestione di un data center di proprietà, che rappresenta un gran esborso in termini economici.

Differenza tra Cloud Computing, Serverless Computing e Function as a Service (FaaS)

Vantaggi del cloud

Il cloud computing ha portato diversi benefici, associati al tipo di servizio che si utilizza, ma fondamentalmente permette alle aziende di non dover comprare e manternere proprie infrastrutture, facendo sì che i progetti si possano sviluppare molto più velocemente e senza grandi esborsi economici fissi iniziali. Il beneficio principale del cloud quindi è l’agilità, cioè l’abilità di accellerare lo sviluppo di nuovi servizi senza doversi scontrare coi classici problemi di un progetto IT.
Un altro vantaggio è la scalabilità perchè solitamente i servizi cloud permettono un aumento di risorse in modo molto veloce e sicuro.

Oltre ai benefici già citati possono essere considerati tali anche:

  1. Adattabilità: il servizio è personalizzabile sotto molti aspetti e permette di creare vari tipi di applicazioni; copre un vasto campo di utilizzi.
  2. Affidabilità: il fornitore di servizio garantisce affidabilità e in caso di problemi fornisce supporto.
  3. Sicurezza: il cloud provider predispone misure di sicurezza che difficilmente un’azienda adotterebbe in un proprio server.
  4. Multi-tenancy: architettura software in cui una singola istanza del servizio è utilizzata contemporaneamente da più tenants, ovvero i fruitori del servizio.
  5. Riduzione dei costi: legato al multi-tenancy, grazie al quale il fornitore di servizio sfrutta economie di scala per offrire il servizio a costi contenuti.

Svantaggi del cloud

Sebbene i vantaggi del cloud siano molteplici, questo approccio ha anche dei difetti:

  1. Dipendenza da Internet: i servizi cloud sono completamente dipendenti da una connessione ad una rete internet e quindi un’impossibilità della connessione può determinare un blackout di ogni attività ad esso collegata.
  2. Latenza: nel caso di grosse moli di dati e strutture di storage dislocate in diversi luoghi, per effettuare comunicazioni c’è il rischio di impiegare troppo tempo.
  3. Sicurezza informatica e violazione privacy: Poichè i dati sono memorizzati in server su macchine virtuali, spesso sono soggetti a interventi del provider e di conseguenza sorge il rischio di manipolazioni per ricerche di mercato, spionaggio industriale ecc. Il rischio sicurezza aumenta con le reti wireless, più esposte a casi di pirateria informatica.

Serverless Computing e Function as a Service (FaaS)

Il servizio Function as a Service (FaaS) permette che l’utente si occupi soltanto di scrivere funzioni, dette cloud functions, senza doversi preoccupare dell’ambiente di esecuzione e che queste siano immediatamente eseguibili.
Function as a Service fa parte del paradigma “serverless computing”, il quale è un termine coniato dall’industria IT per descrivere un modello di architettura e di programmazione dove applicazioni vengono eseguite sul cloud senza nessun controllo delle risorse sulle quali girano.
In questo caso il termine “serverless” è un ossimoro poichè anche se letteralmente significa “senza server”, i server sono utilizzati lo stesso per eseguire le funzioni degli utenti, i quali lasciano ogni tipo di amministrazione dell’infrastruttura al cloud provider.

Le cloud functions, impacchettate in offerte di tipo FaaS, rappresentano il core del serverless computing, il quale deve parte della sua popolarità anche alle offerte di tipo Backend as a Service (BaaS) che forniscono all’utente database, object storage, messaggistica ecc. . .
Si può quindi dire che applicazioni create in ottica serverless computing sono composte da funzioni cloud eseguite da servizi FaaS e, se necessaria memorizzazione di dati, da servizi BaaS.

Il primo servizio FaaS a prendere piede fu Amazon AWS Lambda a fine 2014 e da allora l’interesse verso il serverless computing, è notevolmente aumentato sia da parte delle aziende che da parte degli studi accademici, i quali fino ad ora non avevano mostrato grande attenzione.

Differenza tra Cloud Computing, Serverless Computing e Function as a Service (FaaS)

Caratteristiche del Serverless

Come già detto, una delle caratteristiche fondamentali delle cloud functions è il poter eseguire funzioni su un ambiente senza preoccuparsi della configurazione di esso. Ci sono anche altre caratteristiche importanti di questo modello, di seguito presentate.

Semplicità

Le funzioni cloud vengono apprezzate dagli utenti perchè per eseguirle non serve capire o saper utilizzare l’infrastruttura cloud sottostante l’ambiente di esecuzione. L’utente si limita a caricare la propria funzione e sa che verrà eseguita in qualche data center in giro per il mondo.

Auto-scaling

I servizi serverless per funzioni cloud sono efficienti sia quando vengono richiamate periodicamente con poca frequenza sia quando c’è un utilizzo intensivo parallelo. Il sistema è pronto a scalare in qualsiasi momento e a fornire tutte le risorse computazionali necessarie.

Varietà di Linguaggi

FaaS, di norma, supporta un’ampia varietà di linguaggi di programmazione come Javascript, Java, Python, Go, C# e Swift. Alcune piattaforme supportano meccanismi di estensione per codici scritti in altri linguaggi purchè siano impacchettati in un’immagine Docker che li supporti.

Costo

L’utilizzo viene misurato e l’utente paga solo per il tempo e per le risorse utilizzate per l’esecuzione delle funzioni serverless.
Il sistema ha la possibilità di creare centinaia di istanze diverse qualora necessario oppure di scalare fino a zero se non richiesto e in questo caso l’utente non paga nulla.
Gli utenti delle cloud functions potrebbero quindi risparmiare denaro perchè le funzioni vengono eseguite solo quando accadono degli eventi specifici e di conseguenza pagano solo per il tempo che queste rimangono in esecuzione.
Di solito c’è un salario che prevede un importo ogni 100ms di esecuzione in base alla memoria massima scelta.

Funzionamento

Il modello serverless funziona in modo differente: è event-driven. Un evento che viene scatenato esternamente attiva l’esecuzione del codice applicativo attraverso un trigger.
Le funzioni vengono eseguite su containers che possono essere su macchine virtuali (VM) e server vicini o anche molto lontani.

I container utilizzati sono:

  1. Stateless: non memorizzano lo stato di un’esecuzione precedente.
  2. Temporanei: possono essere eseguiti per un periodo di tempo breve e definito dal provider.
  3. Event-driven: vengono istanziati ed eseguono le funzioni automaticamente quando attivati da eventi.
  4. Totalmente gestiti da un provider cloud: l’utente non può interferire in alcun modo sull’infrastruttura di esecuzione della funzione.

Il processo che porta all’esecuzione di una funzione serverless si può riassumere con un livello di astrazione elevata coi seguenti passaggi:

  1. Il Cloud provider viene notificato o rileva un evento.
  2. Un container viene creato e carica il codice della funzione.
  3. Quando il container è pronto, gli viene inviato l’evento.
  4. Il container esegue la funzione.
  5. Finita l’esecuzione la funzione ritorna il risultato dell’elaborazione.
  6. Dopo un tempo predefinito di inutilizzo il container viene terminato.

Limitazioni del Serverless

L’architettura serverless ha anche delle limitazioni, dovute alle tecnlologie del momento e anche all’architettura stessa.

  1. Esecuzioni lunghe: le funzioni cloud hanno tempi massimi di esecuzioni predefiniti (ad esempio AWS Lambda 900 secondi, IBM Cloud Functions 600 secondi, Azure functions 300 secondi.) e questo rende difficile utilizzarle per compiti che necessitano tempi di esecuzioni più lunghi, come upload di grandi moli di dati, machine learning, ecc.
    Per applicazioni che necessitano operazioni lunghe, al momento sarebbero meglio soluzioni “serverful”.
  2. Controllo Hardware: essendo l’hardware gestito interamente dal cloud provider qualora il cliente volesse modificare l’ambiente di esecuzione o l’infrastruttura risulterebbe impossibile in un’architettura serverless.
  3. Costi: il costo è stato anche inserito nei benefici del serverless computing ma si trova anche nei limiti poichè in base alla quantità di funzioni che verranno eseguite il totale potrebbe superare quello di un’altra soluzione cloud come PaaS o IaaS.
    Una soluzione FaaS potrebbe risultare imprevedibile sotto il punto di vista economico qualora non ci fosse certezza sulla quantità di computazione necessaria.
  4. Vendor lock-in: l’applicazione è fortemente dipendente dal fornitore di servizi cloud e ciò comporta significativi cambiamenti qualora si volesse cambiare gestore. Questo problema è noto con il nome di “vendor lock-in”.
  5. Tempi maggiori alle prime esecuzioni: l’operazione nella quale viene istanziato un nuovo container per eseguire una funzione viene detta cold start. Questo richiede un tempo maggiore di esecuzione rispetto ad un container, non ancora distrutto, nel quale è già stata invocata una stessa funzione almeno una volta. Questo caso viene chiamato warm start.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *