Ricerca nel sito web

LFCA: Scopri il serverless computing, vantaggi e insidie - Parte 15


La tecnologia Serverless ha generato molto clamore nella comunità tecnologica, suscitando molta curiosità e ricevendo in una certa misura qualche reazione negativa. Si tratta di una tecnologia iniziata con il lancio di AWS Lamba nel 2014, seguita presto da Funzioni di Azure nel corso del 2016.

Google ha poi seguito l'esempio con il rilascio delle funzioni Google Cloud nel luglio 2018. Allora, cos'è la tecnologia serverless? Per rispondere al meglio a questa domanda, riportiamo la nostra mente al tradizionale computing basato su server.

Nel modello IT tradizionale eri responsabile praticamente di tutto. In qualità di imprenditore, dovresti budget per server e altre apparecchiature di rete come router e switch e rack per il lutto dei server.

Dovresti anche preoccuparti di ottenere un data center incontaminato e sicuro e assicurarti che possa fornire sufficientemente raffreddamento, alimentazione ridondante e servizi Internet. Una volta configurato, dovresti installare il sistema operativo e successivamente distribuire le tue applicazioni. Inoltre, ti verrà richiesto di impostare sistemi di monitoraggio e implementare funzionalità di sicurezza come firewall, prevenzione delle intrusioni e sistemi di rilevamento.

Come avrai intuito, questo richiede molte risorse, è costoso ed è faticoso.

Poi il cloud computing ha fatto irruzione nel mondo della tecnologia, rivoluzionando completamente il modo in cui distribuiamo e gestiamo server e applicazioni. Annunciava una nuova era in cui gli sviluppatori avrebbero prontamente installato server e database cloud in pochissimo tempo e avrebbero iniziato a lavorare sulle loro applicazioni. Nessuna preoccupazione per i problemi associati all'elaborazione IT tradizionale, come tempi di inattività, attrezzature costose e noleggio di data center.

Sebbene il cloud computing portasse con sé la comodità e le economie di scala nell’implementazione delle risorse IT, alcune aziende acquistavano in eccesso unità di spazio server e risorse come RAM e CPU in previsione di un picco nel traffico di rete o nell’attività che potrebbe sopraffare le applicazioni.

Sebbene sia una mossa prudente, il risultato indesiderato è il sottoutilizzo delle risorse del server che spesso vanno sprecate. Anche con la scalabilità automatica, un picco imprevisto e improvviso potrebbe rivelarsi costoso. Inoltre, dovresti comunque svolgere altre attività, come la configurazione dei bilanciatori del carico, che probabilmente aumenteranno anche i costi operativi.

È evidente che, nonostante il passaggio al cloud, persistono ancora alcuni colli di bottiglia che possono potenzialmente aumentare i costi e causare sprechi di risorse. Ed è qui che entra in gioco l'elaborazione serverless.

Che cos'è il serverless computing

Il serverless computing è un modello cloud che fornisce servizi backend agli utenti con pagamento in base al consumo. In termini semplici, il fornitore di servizi cloud assegna risorse di elaborazione e addebita solo il tempo di esecuzione delle applicazioni. Ciò equivale a passare da un piano mensile per il pagamento via cavo a pagare solo quando guardi i tuoi programmi TV.

Il termine "Serverless" potrebbe essere un po' fuorviante. Ci sono server coinvolti? Certo, tuttavia, in questo caso, i server e l'infrastruttura sottostante sono esclusivamente gestiti e mantenuti dal fornitore di servizi cloud. In quanto tali, non devi preoccuparti di loro. In qualità di sviluppatore, il tuo obiettivo è esclusivamente sviluppare le tue applicazioni e assicurarti che funzionino in modo soddisfacente.

In tal modo, il serverless computing elimina il problema della gestione dei server e ti fa risparmiare tempo prezioso per lavorare sulle tue applicazioni.

Servizi backend forniti da Serverless Computing

Un esempio perfetto di servizio backend serverless è la piattaforma Function-as-a-Service (FaaS). FaaS è un modello di cloud computing che consente agli sviluppatori di sviluppare, eseguire e gestire codice in risposta a eventi senza la complessità di creare e gestire un'infrastruttura sottostante solitamente associata alla distribuzione di microservizi.

Faas è una sottocategoria del serverless computing con sottili differenze. L'elaborazione serverless comprende un'ampia gamma di servizi tra cui elaborazione, database, archiviazione e API, per citarne alcuni. FaaS si concentra esclusivamente su un modello informatico basato sugli eventi in cui le applicazioni vengono eseguite on-demand, ovvero in risposta a una richiesta.

Esempi di modelli informatici FaaS includono:

  • AWS Lambda di AWS
  • Funzioni di Azure di Microsoft
  • Funzioni cloud di Google
  • Lavoratori Cloudflare di Cloudflare

In sintesi, abbiamo visto che con FaaS paghi solo per il tempo in cui la tua applicazione è in esecuzione e il fornitore di servizi cloud fa praticamente tutto per te, inclusa la gestione dell'infrastruttura sottostante. La gestione dei server è l'ultima delle tue preoccupazioni.

Vantaggi dell'elaborazione serverless

A questo punto avrai una buona idea di alcuni dei vantaggi offerti dal serverless computing. Esaminiamo più a fondo i vantaggi derivanti dall’adozione della tecnologia.

1. Nessuna gestione del server

Questo è forse uno dei maggiori vantaggi derivanti dall’adozione del modello di elaborazione serverless. Anche se il termine "serverless" potrebbe essere frainteso nel senso che non sono coinvolti server, la realtà è che le applicazioni continuano a essere eseguite sui server. Il nocciolo della questione è che la gestione dei server è interamente di competenza del fornitore del cloud e questo ti concede più tempo per lavorare sulle tue applicazioni.

2. Scalabilità semplice ed efficiente

L'infrastruttura serverless fornisce il dimensionamento automatico delle applicazioni in risposta a un aumento dell'utilizzo, della domanda o della crescita della base utenti. Se l'applicazione è in esecuzione su più istanze, i server verranno avviati e arrestati quando richiesto. In una configurazione di cloud computing tradizionale, un picco di traffico o di attività può facilmente sovraccaricare le risorse del server portando a incoerenze con l'applicazione in esecuzione.

3. Disponibilità integrata

In qualità di sviluppatore, non è necessario creare alcuna infrastruttura speciale per rendere le tue applicazioni altamente disponibili. L'elaborazione serverless ti offre un'elevata disponibilità integrata per garantire che le tue applicazioni siano attive e funzionanti quando richiesto.

4. Costi operativi ridotti

L'elaborazione serverless assegna le risorse in base al consumo. La tua applicazione richiederà solo funzioni di backend durante l'esecuzione del codice e si ridimensionerà automaticamente in base alla quantità di carico di lavoro.

Ciò fornisce economie di scala poiché ti viene addebitato solo il tempo di esecuzione delle applicazioni. Nel modello server tradizionale, devi pagare per lo spazio del server, i database e le altre risorse, indipendentemente dal fatto che l'applicazione sia in esecuzione o inattiva.

5. Distribuzioni più rapide delle applicazioni

L'architettura serverless elimina la necessità di configurazione del backend e di caricamento manuale del codice sui server come nella configurazione tradizionale. È facile per gli sviluppatori caricare piccole quantità di codice in modo efficiente e lanciare un ottimo prodotto.

La facilità di distribuzione consente inoltre agli sviluppatori di applicare patch e aggiornare facilmente alcune funzionalità del codice senza alterare l'intera applicazione.

Le insidie del serverless computing

Ci sono degli svantaggi associati al modello serverless? Scopriamolo.

1. Sicurezza

Le applicazioni mal configurate rappresentano uno dei maggiori rischi associati al serverless computing. Se opti per AWS, ad esempio, è prudente configurare autorizzazioni diverse per la tua applicazione che, a loro volta, determineranno come interagiranno con altri servizi all'interno di AWS. Laddove le autorizzazioni sono vaghe, una funzione o un servizio può avere più autorizzazioni di quelle richieste, lasciando ampio spazio a violazioni della sicurezza.

2. Vincolo del fornitore

La scelta di un modello serverless può presentare difficoltà durante la migrazione a un altro fornitore. Ciò è dovuto principalmente al fatto che ogni fornitore ha le proprie funzionalità e flussi di lavoro che variano leggermente rispetto agli altri.

3. Difficoltà nel test e nel debug delle applicazioni

Un'altra sfida posta dal modello serverless è la difficoltà nel riprodurre un ambiente serverless per testare e monitorare le prestazioni del codice prima della messa in funzione. Ciò è dovuto principalmente al fatto che gli sviluppatori non hanno accessibilità ai servizi di backend che sono una riserva del provider cloud.

4. Difficoltà nel monitorare le applicazioni serverless

Il monitoraggio delle applicazioni serverless è un'impresa complessa per gli stessi motivi per cui il debug e il test sono un compito arduo. A ciò si è aggiunta l'indisponibilità di strumenti con integrazione con servizi backend come AWS Lamba.

Conclusione

Il serverless computing continua a guadagnare terreno e adozione tra aziende e sviluppatori per 3 ragioni principali. Il primo è l’accessibilità economica, che implica costi operativi ridotti. In secondo luogo, l’elaborazione serverless facilita la scalabilità automatica e veloce e, infine, gli sviluppatori non devono preoccuparsi dell’infrastruttura sottostante gestita dal fornitore.

Nel frattempo, i fornitori di servizi cloud stanno lavorando 24 ore su 24 per affrontare alcune delle insidie associate al serverless computing, come la difficoltà nel debugging e nel monitoraggio delle applicazioni.