Che cos’è, importanza e limiti del FaaS (Function as a Service)

Che cos’è, importanza e limiti del FaaS (Function as a Service)

Function as a Service

Le Function as a Service (abbreviato con FaaS) rappresentano un tipo di servizio cloud che permette all’utilizzatore di eseguire codice in risposta ad eventi, senza la necessità di dover gestire complesse infrastrutture, sforzo tipicamente richiesto durante lo sviluppo e l’esecuzione di applicazioni a microservizi. Con i servizi FaaS: hardware, sistemi operativi, web server ed altri middleware sono gestiti completamente dal provider cloud, permettendo allo sviluppatore di focalizzarsi unicamente sullo sviluppo del codice applicativo.

L’utilizzo di questi servizi porta importanti benefici, soprattutto relativi al risparmio economico derivante dall’adozione delle funzioni:

  1. Più codice, meno infrastruttura: con i servizi FaaS, è possibile dividere i server in funzioni, le quali sono scalate automaticamente ed indipendentemente dalla piattaforma, evitando di dover gestire le risorse allocate;
  2. Addebito costi in base al tempo di esecuzione: il costo dell’adozione di servizi FaaS è calcolato unicamente in base al tempo di esecuzione delle funzioni. Non esiste nessun server in idle da pagare, in quanto la piattaforma genera e termina le funzioni invocate. Per queste ragioni, il costo complessivo derivante da queste soluzioni può essere molto più basso rispetto a quello di altri servizi;
  3. Scalabilità automatica: i servizi FaaS scalano automaticamente, senza alcun intervento richiesto;
  4. Affidabilità delle infrastrutture cloud: le funzioni vengono replicate automaticamente tra i diversi data center offerti dal provider cloud, garantendo disponibilità e tolleranza ai guasti.

Le funzioni, per garantire le massime prestazioni, dovrebbero essere leggere e limitate, in modo da generarsi ed eseguirsi nel minor tempo possibile. Infatti, l’idea generale alla base dell’adozione di queste soluzioni è quella di migrare i propri servizi in funzioni isolate, leggere ed indipendenti, per offrire gradi di scalabilità non raggiungibili dalle soluzioni a microservizi.

Le FaaS sono soluzioni adatte principalmente per grandi carichi di lavoro e per algoritmi massicciamente paralleli, data la facilità di questi servizi di generare migliaia di repliche in pochi secondi. Questi servizi possono essere utilizzati per sviluppare servizi di backend mantendo i costi relativamente bassi, ad esempio per lo sviluppo di servizi per stream e data processing, o soluzioni per dispositivi IoT. Infatti, AWS Lambda, servizio FaaS di AWS, e IBM Cloud Functions, servizio FaaS di IBM, addebitano i costi di esecuzione delle funzioni ogni cento millisecondi, permettendo notevoli risparmi rispetto ai servizi basati su virtual machine o a semplici container.

Che cos'è, importanza e limiti del FaaS (Function as a Service)

 

Svantaggi e limitazioni

Le organizzazioni possono incontrare diverse difficoltà quando migrano i propri servizi on-premise su infrastrutture cloud. La scelta di adottare soluzioni cloud è vantaggiosa dal punto di vista economico, dati i risparmi conseguenti all’abbandono di infrastrutture auto gestite, ma presenta svantaggi per quanto concerne la sicurezza, l’affidabilità e la qualità dei servizi richiesti dai provider cloud.
Il primo aspetto riguarda la sicurezza e la privacy, in quanto le informazioni vengono affidate a provider esterni, e queste vengono diffuse e replicate in nodi sparsi per la rete. I cloud pubblici condividono le proprie risorse con un numero indefinito di utenti, mettendo a rischio dati sensibili se vengono scoperte falle nell’infrastruttura da parte di utenti che hanno accesso ai servizi. La scelta di adottare cloud pubblici è naturale in piccole organizzazioni, dove mancano le risorse per mettere in sicurezza un’infrastruttura cloud privata, mentre, in grandi organizzazioni, i dati sensibili vengono spesso elaborati in cloud privati, evitando di mantenere le informazioni più importanti all’esterno del perimetro aziendale.

Un altro problema che sorge dall’adozione di una specifica tecnologia cloud è quella del vendor lock-in, ovvero l’impossibilità di trasferire i propri servizi in altre tecnologie senza impiegare importanti risorse, come eseguire il completo refactoring del codice implementativo dei servizi. Ogni vendor utilizza software e hardware differenti, e manca una standardizzazione per la portabilità delle applicazioni e dei dati mantenuti tra i diversi cloud provider. Per esempio, Google mantiene i propri dati sul framework BigTable, mentre Facebook li mantiene sulla piattaforma Cassandra, e Amazon utilizza Dynamo. La mancanza di interfacce obbliga l’utente a fidarsi completamente del provider, nonostante questo possa perdere valenza tecnologica nel tempo, o nuove soluzioni più allettanti vengano lanciate sul mercato.

La disponibilità dei servizi è un punto cruciale nella scelta del cloud provider. Esistono organizzazioni che richiedono una disponibilità 24/7 dei propri servizi, e non accettano guasti all’infrastruttura. I provider, nonostante le ingenti risorse a disposizione, non possono evitare di mandare in down le loro infrastrutture, nonostante questo accada per poche ore nel corso dell’intero anno. Per far fronte alla paura delle organizzazioni nei confronti di possibili guasti, si definiscono clausole di qualità del servizio, chiamate Service Level Agreement (SLA), che offrono tempi e misure garantite dal provider verso i servizi offerti, e che, se violati, possono essere strumento di denuncia e di risarcimento monetario. Per esempio, i maggiori provider cloud offrono up-time garantito del 99,99% l’anno, che corrisponde a dieci minuti di downtime massimo in ben dodici mesi di servizio eseguito.

Altri svantaggi sono legati all’instabilità infrastrutturale dovuta all’importante numero di utenti che, ogni giorno, utilizza i servizi cloud, portando a possibili picchi di carico con conseguenti colli di bottiglia nelle performance. Inoltre, fattore importante che verrà approfondito successivamente, è la latenza, in quanto i diversi data center cloud sono pochi e, spesso, distanti dalla località in cui viene lanciata la richiesta. La distanza porta ritardi considerevoli, e, in applicazioni real time, sono inaccettabili, dunque sono richieste soluzioni alternative per far fronte agli stringenti vincoli di tempo imposti.

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 *