La tecnologia Serverless ha generato molta eccitazione nella comunità tecnologica suscitando molta curiosità e ricevendo qualche critica in misura limitata. È una tecnologia che ha avuto inizio con il lancio di AWS Lambda nel 2014, seguito poco dopo da Azure Functions nel 2016.
Google ha successivamente seguito con il rilascio delle funzioni Google Cloud nel luglio 2018. Quindi, cos’è la tecnologia serverless? Per rispondere al meglio a questa domanda, torniamo indietro ai tempi del calcolo tradizionale basato su server.
Nel modello IT tradizionale, eri responsabile praticamente di tutto. Come proprietario di un’azienda, avresti dovuto pianificare il budget per i server e altri dispositivi di rete come router e switch, e rack per ospitare i server.
Avresti anche dovuto preoccuparti di ottenere un data center pulito e sicuro e assicurarti che possa fornire adeguatamente raffreddamento, alimentazione ridondante e servizio internet. Una volta configurato, avresti dovuto installare il sistema operativo e successivamente distribuire le tue applicazioni. Inoltre, ti sarebbe stato richiesto di configurare sistemi di monitoraggio e implementare funzionalità di sicurezza come firewall e sistemi di prevenzione, rilevamento e intrusione.
Come potreste aver capito, questo è intensivo di risorse, costoso e sfiancante.
Poi cloud computing si è fatto strada nel mondo tecnologico, rivoluzionando completamente il modo in cui distribuisciamo e gestiamo server e applicazioni. Ha inaugurato una nuova era in cui i sviluppatori potevano facilmente creare server cloud e database in poco tempo e iniziare a lavorare sulle loro applicazioni. Nessun problema con i problemi associati alla computazione IT tradizionale come tempi di inattività, attrezzature costose e noleggio di data center.
Mentre il cloud computing ha portato con sé la convenienza e le economie di scala nel distribuire risorse IT, alcune aziende acquistavano in eccesso unità di spazio su server e risorse come RAM e CPU in previsione di un aumento di traffico o attività di rete che potrebbe sovraccaricare le applicazioni.
Sebbene sia una mossa prudente, l’esito non intenzionale è l’utilizzo insufficiente delle risorse server che spesso vanno perse. Anche con l’autoscaling, ancora, uno spike imprevisto e improvviso potrebbe rivelarsi costoso. Inoltre, dovresti comunque eseguire altre attività come la configurazione di bilanciamenti del carico che sono anche probabili di aumentare i costi operativi.
È evidente che nonostante il cambio verso il cloud, alcuni colli di bottiglia persistono e hanno il potenziale di aumentare i costi e causare sprechi di risorse. E qui entra in gioco Serverless computing.
Cos’è il Serverless Computing
Il calcolo senza server è un modello cloud che fornisce servizi di backend agli utenti su base pay-as-you-go. In parole semplici, il fornitore cloud assegna risorse di calcolo e addebita solo per il tempo in cui le applicazioni sono in esecuzione. Questo equivale a passare da un piano mensile per il pagamento del cavo a pagare solo quando si stanno guardando i propri programmi TV.
Il termine ‘Serverless‘ potrebbe essere un po’ fuorviante. Ci sono server coinvolti? Certamente, tuttavia, in questo caso, i server e l’infrastruttura sottostante sono gestiti e mantenuti esclusivamente dal fornitore cloud. Pertanto, non devi preoccupartene. Come sviluppatore, il tuo focus è esclusivamente nello sviluppo delle tue applicazioni e nell’assicurarti che funzionino secondo le tue aspettative.
In questo modo, il calcolo senza server elimina il mal di testa legato alla gestione dei server e ti fa risparmiare tempo prezioso per lavorare sulle tue applicazioni.
Servizi di Backend Forniti dal Calcolo Senza Server
A perfect example of serverless backend service is Function-as-a-Service (FaaS) platform. FaaS is a cloud computing model that enables developers to develop, execute, and manage code in response to events without the complexity of building and managing an underlying infrastructure usually associated with the deployment of microservices.
FaaS è una sottocategoria del calcolo senza server con differenze sottili. Il calcolo senza server comprende una vasta gamma di servizi tra cui calcolo, database, archiviazione e API per citarne alcuni. FaaS è focalizzato esclusivamente su un modello di calcolo basato sugli eventi in cui le applicazioni vengono eseguite su richiesta, cioè in risposta a una richiesta.
Esempi di modelli di calcolo FaaS includono:
- AWS Lambda di AWS
- Funzioni di Azure di Microsoft
- Funzioni cloud di Google
- Worker di Cloudflare di Cloudflare
In sintesi, abbiamo visto che con FaaS, si paga solo per il tempo in cui l’applicazione è in esecuzione e il fornitore di cloud fa praticamente tutto per te, compresa la gestione dell’infrastruttura sottostante. Gestire i server è il minimo dei tuoi problemi.
Vantaggi del Calcolo Serverless
Adesso hai un’idea chiara di alcuni dei meriti che il calcolo serverless porta sul tavolo. Approfondiamo i vantaggi nell’abbracciare la tecnologia.
1. Nessuna Gestione del Server
Questo è forse uno dei più grandi vantaggi nell’adottare il modello di calcolo serverless. Anche se il termine ‘serverless’ potrebbe essere frainteso nel senso che non ci sono server coinvolti, il fatto è che le applicazioni continuano comunque a girare su server. Il nocciolo della questione è che la gestione del server è interamente a carico del fornitore di cloud, e questo ti permette di avere più tempo per lavorare sulle tue applicazioni.
2. Scalabilità Facile ed Efficiente
L’infrastruttura serverless fornisce la scalabilità automatica delle applicazioni in risposta a un aumento dell’uso, della domanda o della crescita della base utenti. Se l’applicazione è in esecuzione su più istanze, i server si avvieranno e si fermeranno quando necessario. In un’installazione tradizionale di cloud computing, un picco di traffico o attività può facilmente sovraccaricare le risorse del server portando a incongruenze con l’applicazione in esecuzione.
3. Disponibilità Integrata
Come sviluppatore, non è necessario costruire un’infrastruttura speciale per rendere le tue applicazioni altamente disponibili. Il calcolo senza server ti fornisce un’alta disponibilità integrata per garantire che le tue applicazioni siano attive e in esecuzione quando necessario.
4. Riduzione dei costi operativi
Il calcolo senza server assegna risorse in base all’uso. La tua applicazione avrà bisogno solo di funzioni di backend quando il codice viene eseguito e si scalerà automaticamente in base alla quantità di lavoro.
Ciò fornisce economie di scala poiché ti verrà addebitato solo per il tempo in cui le applicazioni sono in esecuzione. Nel modello tradizionale del server, devi pagare lo spazio del server, i database e altre risorse indipendentemente dal fatto che l’applicazione sia in esecuzione o inattiva.
5. Distribuzioni più veloci delle applicazioni
L’architettura senza server elimina la necessità di configurazione del backend e di caricamento manuale del codice sui server come nella configurazione tradizionale. È facile per gli sviluppatori caricare piccoli stack di codice in modo efficiente e lanciare un ottimo prodotto.
La facilità di distribuzione consente anche agli sviluppatori di aggiornare facilmente e correggere determinate funzionalità del codice senza modificare l’intera applicazione.
Insidie del calcolo senza server
Ci sono svantaggi associati al modello senza server? Scopriamolo.
1. Sicurezza
Le applicazioni male configurate rappresentano uno dei maggiori rischi associati al calcolo serverless. 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. Dove le autorizzazioni sono vaghe, una funzione o un servizio possono avere più autorizzazioni di quelle necessarie, lasciando ampio spazio per violazioni della sicurezza.
2. Blocco del fornitore
Optare per un modello serverless può presentare sfide durante la migrazione verso un altro fornitore. Questo è principalmente perché ogni fornitore ha le proprie caratteristiche e flussi di lavoro che variano leggermente dal resto.
3. Difficoltà nel Testare e Debuggare le Applicazioni
Un’altra sfida posta dal modello serverless è la difficoltà nel riprodurre un ambiente serverless per testare e monitorare le prestazioni del codice prima di andare online. Questo è principalmente perché gli sviluppatori non hanno accesso ai servizi di backend che sono riservati al fornitore Cloud.
4. Difficoltà nel Monitorare le Applicazioni Serverless
Monitorare le applicazioni serverless è un’impresa complessa per gli stessi motivi per cui il debug e il testing sono un compito arduo. Questo è stato aggravato dalla mancanza di strumenti con integrazione ai servizi di backend come AWS Lamba.
Conclusione
Nel frattempo, i fornitori di servizi cloud stanno lavorando senza sosta per affrontare alcuni dei problemi associati al computing serverless, come la difficoltà nel debug e nel monitoraggio delle applicazioni.