Storia e mission

La nostra storia, i nostri valori, i nostro obiettivi, il nostro ecosistema

SMI Technologies & Consulting

Smart Managed Innovation, servizi ICT

Younified

La nuova azienda specializzata in servizi di assistenza per l’automotive

WYL

Un rivoluzionario sistema di Intelligenza Artificiale al servizio delle tue passioni

SM Innovation Polska

La rivoluzione della service integration. Un riferimento chiave per le imprese del territorio

Younified Platform

Fatture, Time Sheet, Contabilità, Logistica, IOT: servizi per monitorare la tua attività

Whistleblowing

La soluzione di SMI per la gestione delle segnalazioni whistleblowing
27 Novembre 2024

Serverless computing: cos’è, architettura ed esempi

Attenzione, competenze e capacità di focalizzare i punti di forza e i potenziali limiti sono fattori prioritari davanti a una tecnologia in grado di rivoluzionare lo sviluppo delle applicazioni. Ridisegnando il rapporto tra le risorse necessarie per eseguire un’applicazione e l’utente finale. Questo è lo spazio in cui agisce il serverless computing, un paradigma di cruciale importanza in ambito cloud.

Cos’è il serverless computing

La premessa d’obbligo per capire cos’è il serverless computing è non considerare il significato letterale del termine perché, nonostante il nome, si tratta di un ambiente di sviluppo in cui i server ci sono. Il punto è che però non sono i protagonisti, in quanto il serverless computing è un modello di sviluppo cloud native, che consente di progettare e distribuire applicazioni tramite logiche event-driven, semplificando il compito dello sviluppatore.

Sia le risorse hardware, sia quelle software necessarie per eseguire un’applicazione sono presenti nell’infrastruttura IT del provider di servizi cloud; perciò, allo sviluppatore è richiesto soltanto di creare un software, senza dover considerare l’infrastruttura IT. 

Architettura del serverless computing: cosa c’è da sapere

Scrittura del codice e ottimizzazione della logica di business sono i due focus dello sviluppatore nell’ambito del serverless computing, che non prevede il dovere di gestire i server. In quest’ottica, l’architettura serverless ha cambiato radicalmente la modalità con cui le aziende sviluppano e distribuiscono applicazioni e servizi, sfruttando un modello di esecuzione del cloud computing dove è il cloud service provider a gestire l’allocazione e il provisioning dei server. Nel considerare una piattaforma serverless, le peculiarità da valutare sono le prestazioni, la scalabilità, la sicurezza e l’efficienza dei costi. Anche perché l’architettura serverless è una soluzione ideale per diversi scenari applicativi: dalle app web al backend IoT, è una scelta che assicura efficienza e convenienza. Per tale motivo, laddove in termini di sviluppo bisogna gestire singoli eventi, che non necessitano della personalizzazione degli ambienti, l’architettura serverless emerge come un modello perfetto.

Faas e Baas, caratteristiche e differenze

Quanto espresso finora fa capire come il serverless computing sia disponibile con un modello a servizi. Ci sono diverse tipologie e la più diffusa è l’offerta FaaS (Function-as-a-Service), che si differenzia dal paradigma BaaS (Backend-as-a Service). Quest’ultimo permette agli sviluppatori di effettuare un outsourcing di tanti elementi nel backend di un’applicazione, sia web che mobile. Si basa perciò su servizi raggiungibili da remoto, che sfruttano API e SDK, per agevolare l’attività delle aziende in termini di crittografia, gestione del database e sistemi di autenticazione degli utenti.  

Seppur simile come approccio e compiti dello sviluppatore, nel FaaS c’è un maggior controllo in confronto al BaaS; utilizzare il primo significa scrivere il codice e lanciare l’esecuzione della funzione, perché non serve la conoscenza di tecniche di deployment o la configurazione in reti di calcolatori, compiti che rientrano nella gestione del provider.

Nel complesso, quindi, ci sono varie differenze tra FaaS e BaaS, a partire dalla modalità di attivazione del servizio, che nel primo caso prevede una risposta in reazione a un evento e un environment effimero, realizzato tramite tecnologia a container per ridurre i costi e i tempi relativi alle risorse utilizzate.

Un’altra divergenza tra i due modelli concerne la progettazione di un’app, che nel FaaS è il risultato di molteplici funzioni che interagiscono ad eventi, mentre nel BaaS determina tutto il provider e allo sviluppatore non serve conoscere neppure la struttura.

Esempi e casi d’uso del serverless computing

Grazie al crescente successo, il panorama delle piattaforme serverless continua ad evolvere e offrire diverse opzioni. Soprattutto ad essere utilizzato per implementare in maniera efficace tecnologie emergenti come l’IA, che si sposano bene con il cloud. Dal punto di vista applicativo, il serverless computing è indicato per realizzare:  

  • Applicazioni IoT, web e blockchain
  • Chatbot e assistenti virtuali
  • Elaborare Big Data & Analytics
  • Gestione automatizzata del database
  • Importazione di eventi
  • Proxy API
  • Servizi di backend (BaaS)

Tra i fornitori stanno emergendo player alternativi ai più datati; dell’ultimo gruppo fanno parte Amazon Web Services Lambda (2014), Microsoft Azure Functions (2016) e Google Cloud Functions (2017), nel primo rientrano invece IBM Cloud Functions e Alibaba Cloud Functions Compute.

L’uso di AWS Lambda

 AWS Lambda è un servizio di elaborazione serverless che esegue il codice in risposta a eventi e gestisce automaticamente le risorse di elaborazione sottostanti. Ecco alcuni casi d'uso.  

Elaborazione di flussi di dati in tempo reale

  • Analisi di log: Lambda può essere utilizzato per elaborare log provenienti da diverse fonti, come applicazioni web, dispositivi mobili e sensori IoT, per estrarre informazioni utili e generare metriche.
  • Elaborazione di flussi di dati: Lambda può elaborare dati in tempo reale provenienti da servizi di streaming come Amazon Kinesis, per eseguire analisi, filtraggio e aggregazione.
  • Trasformazione di dati: Lambda può essere utilizzato per trasformare dati da un formato a un altro, ad esempio da JSON a CSV o viceversa.

Backend web e mobile

  • API RESTful: Lambda può essere utilizzato per creare API RESTful scalabili ed efficienti, che rispondono alle richieste degli utenti in modo rapido e affidabile.
  • Autenticazione e autorizzazione: Lambda può gestire l'autenticazione degli utenti e l'autorizzazione all'accesso alle risorse.
  • Elaborazione di richieste asincrone: Lambda può gestire attività in background, come l'invio di email o l'elaborazione di pagamenti, senza bloccare l'applicazione principale.

Automazione IT

  • Reazione agli eventi: Lambda può essere attivato da eventi provenienti da altri servizi AWS, come l'aggiunta di un file a un bucket S3 o la modifica di un record in un database DynamoDB, per eseguire azioni automatiche.
  • Gestione dell'infrastruttura: Lambda può essere utilizzato per automatizzare attività di gestione dell'infrastruttura, come il provisioning di nuove istanze EC2 o l'aggiornamento di configurazioni.
  • Pianificazione di attività: Lambda può eseguire attività pianificate, come l'esecuzione di backup o l'invio di report.

Internet of Things (IoT)

  • Elaborazione di dati da dispositivi IoT: Lambda può elaborare i dati provenienti da dispositivi IoT, come sensori e attuatori, per eseguire analisi in tempo reale, inviare avvisi o controllare dispositivi.
  • Integrazione con servizi IoT: Lambda può essere utilizzato per integrare dispositivi IoT con altri servizi AWS, come Amazon Kinesis o AWS IoT Core.

Machine learning

  • Inferenza di modelli di machine learning: Lambda può essere utilizzato per eseguire l'inferenza di modelli di machine learning, ad esempio per classificare immagini o tradurre testo.
  • Addestramento di modelli di machine learning: Lambda può essere utilizzato per addestrare modelli di machine learning su larga scala, sfruttando la scalabilità e l'elasticità del servizio.

Questi sono solo alcuni esempi di come AWS Lambda può essere utilizzato. La sua flessibilità e scalabilità lo rendono una soluzione ideale per un'ampia gamma di casi d'uso, consentendo alle aziende di creare applicazioni e servizi efficienti, affidabili e convenienti.

Vantaggi e svantaggi del serverless computing

Già dalle righe precedenti si possono intuire parte dei vantaggi e degli svantaggi inerenti all’utilizzo del serverless computing. Vediamoli meglio, partendo dai primi. 

Maggiore produttività nello sviluppo

Il primo e più immediato beneficio legato al ricorso del serverless computing è l’incremento della produttività nello sviluppo delle applicazioni. Non dovere occuparsi di configurare server e piattaforme, permette agli sviluppatori di focalizzarsi interamente sulla programmazione; un aspetto che si traduce in una riduzione del tempo necessario per arrivare al risultato finale.

Flessibilità

Da una parte c’è l’immediata disponibilità delle risorse IT necessarie per eseguire le funzioni previste dagli sviluppatori, dall’altra la possibilità di chiudere tante istanze nello stesso istante. Due dinamiche diverse della stessa medaglia, quella della flessibilità che rende le piattaforme serverless computing in grado di adattarsi alle necessità del momento.

Scalabilità

Non è subito visibile perché è il cloud service provider a gestire l’allocazione delle risorse, tuttavia, come spiegato in precedenza, la scalabilità dei servizi è uno dei vantaggi più evidenti e convenienti del serverless computing.

Pay-per-use

Per le aziende che vogliono pianificare un investimento per sviluppare applicazioni spendendo soltanto per ciò di cui si ha necessità, il serverless computing è la soluzione ideale. Anche in questo caso torna d’attualità l’impossibilità della gestione dell’infrastruttura, di cui si occupa il cloud service provider, lasciando al cliente le risorse di cui necessita. Le uniche che deve pagare.

Svantaggi

Limitata personalizzazione

Non dover configurare nulla implica anche degli svantaggi per il cliente, perché i provider di servizi cloud possono determinare vincoli all’interazione con i loro componenti, oppure limitare la flessibilità e personalizzazione del sistema. 

Vendor lock-in

Strettamente connesso a quanto detto sopra è l’obbligo di restare legato alle tecnologie di un vendor. È l’aspetto negativo del voler delegare il controllo dell’ambiente IT, che assicura la riduzione dei costi operativi ma può far emergere vincoli difficilmente aggirabili. Perché dover cambiare provider significa spendere più denaro per rispettare le specifiche previste dal nuovo fornitore.

Come evolverà il serverless in futuro

Potenziale enorme per emergere come uno standard di riferimento per lo sviluppo di applicazioni, a patto di riuscire a superare alcuni ostacoli. È il futuro cui appare destinato il serverless computing, un modello elaborativo che ha determinato un cambiamento rilevante nella creazione e distribuzione delle applicazioni cloud native da parte degli sviluppatori. 

La scalabilità automatica combinata alla mancata gestione dell’infrastruttura offre un modello conveniente ed efficace che permette alle aziende di generare innovazione in maniera più rapida rispetto al passato. Ciò significa poter recuperare un gap con i competitor, oppure conquistare una posizione di vantaggio rispetto ai concorrenti.

Le possibili evoluzioni future

Il serverless computing è per certi aspetti paradossale. Da un lato rende più semplice lo sviluppo delle applicazioni, ma questo discorso vale soltanto per le applicazioni cloud native. Se si parla di migrazione, il lavoro preparatorio comporta una riprogettazione spesso complessa e ancor più spesso poco conveniente da effettuare. Anche interfacciare applicazioni serverless con i database esistenti può costituire un aspetto tutt’altro che agevole da sostenere.

Come abbiamo visto, la natura effimera dell’architettura serverless, esalta il concetto di istanza, ma risulta problematica nel caso in cui si preveda una sostenuta attività di monitoraggio e debugging, ad esempio, per quelle applicazioni caratterizzate da continui cicli CI/CD. Va precisato che si tratta comunque di limiti attuali, in quando certamente le tecnologie serverless evolveranno per rendersi sempre più utili anche nei confronti dei contesti operativi appena citati.

Come sempre, quando si tratta di implementare per la prima volta una nuova tecnologia in cloud, la politica dei piccoli passi potrebbe rivelarsi la migliore. Una volta selezionata un’applicazione di riferimento, potrebbe essere utile identificare i componenti caratterizzati da un buon livello di disaccoppiamento e provare ad eseguirla in ambiente serverless. Se l’iniziativa si dimostra in grado di restituire i vantaggi che abbiamo citato nel corso dei precedenti paragrafi, sarà sempre più semplice motivare e sostenere una crescente modernizzazione basata sul serverless computing.

Un documento molto utile per inquadrare gli scenari evolutivi di questa tecnologia esclusiva del cloud è senza dubbio Demystifing Serverless Computing, pubblicato da Forrester. Negli ultimi anni il serverless computing ha avuto un tasso di crescita complessivo nell’ordine del 700%, il che ci offre sia una prospettiva di grande potenziale in ambito IT, sia la relativa gioventù che il mercato di queste applicazioni inevitabilmente comporta.

Le architetture di serverless computing evolveranno per supportare una varietà di funzioni sempre più elevata, con una serie di servizi destinati a facilitarne e rendere sempre più efficiente l’impiego, ad esempio per quanto concerne l’interoperabilità con le principali tecnologie di containerizzazione disponibili.

Tale prospettiva, oltre a facilitare ancora di più lo sviluppo di applicazioni cloud native, incoraggerebbe ulteriormente i processi di migrazione delle applicazioni legacy, sulla base di una pipeline di modernizzazione che prevede una containerizzazione iniziale dei vari componenti che è possibile disaccoppiare e la loro successiva esecuzione su architetture serverless, nella prospettiva di godere dei principali vantaggi offerti da questa tecnologia.

Un crescente supporto ai container standardizzati consentirebbe inoltre in un certo senso una riduzione del lock-in, grazie alla straordinaria portabilità di cui godono i container stessi, qualora ritrovassero sulle piattaforme serverless le applicazioni in grado di eseguirli ed orchestrarli.

Un altro fronte di grande prospettiva è relativo al supporto delle tecnologie emergenti, in particolare per quanto concerne le applicazioni IoT e le applicazioni basate sulla blockchain, la cui natura decentralizzata trova più di una analogia di design con i presupposti del serverless computing.

L’ulteriore sfida sarà rendere questi servizi sempre più disponibili sul cloud pubblico e sempre più interoperabili con le applicazioni tradizionali, sfruttando ad esempio le proprietà di proxy API delle architetture serverless, che consentono di rendere accessibili anche un software piuttosto datato grazie a semplici API REST.

Serverless computing: cos’è, architettura ed esempi ultima modifica: 2024-11-27T14:30:33+01:00 da Sara Comi

Altri articoli che potrebbero interessarti:

22 Novembre 2023

Cloud computing: i vantaggi per le aziende

I servizi e le applicazioni in cloud abilitano moltissime attività di business per le organizzazioni impegnate nel loro percorso di trasformazionale digitale. Grazie al cloud gli utenti aziendali possono semplicemente loggare su un web browser per accedere ai dati e alle applicazioni necessarie per svolgere il proprio lavoro senza alcuna preoccupazione di carattere informatico.