Serverless e microservizi: quale architettura è migliore per la tua azienda?

Interno della cupola del Campidoglio di Washington DC, sede della Camera dei rappresentanti e del Senato

Quando le aziende devono creare un'applicazione, una delle decisioni più importanti che i loro leader devono prendere è il tipo di sviluppo software utilizzare. Sebbene ci siano molte architetture software tra cui scegliere, le architetture serverless e di microservizi sono sempre più popolari grazie alla loro scalabilità, flessibilità e prestazioni. Inoltre, con la spesa per i servizi cloud che dovrebbe raddoppiare nei prossimi quattro anni, sia le istanze serverless che di microservizi dovrebbero crescere rapidamente poiché sono ampiamente utilizzate negli ambienti di cloud computing.

Mentre le architetture serverless sono generalmente preferite dalle startup e dalle aziende che devono costruire rapidamente e scalare rapidamente, i microservizi sono più popolari tra le Organizzazioni che richiedono una gestione più pratica dell'infrastruttura di backend. Le soluzioni serverless e microservizi sono offerte da tutte le principali aziende di tecnologia cloud computing, tra cui Microsoft (Azure), Amazon (AWS Lambda), IBM e Google Cloud.

Ecco uno sguardo più approfondito su ciò che rende unici i serverless e i microservizi e su come scegliere quello giusto per te.

Cos'è il serverless?

Il serverless, noto anche come architettura serverless o serverless computing, è un approccio allo sviluppo del software che consente agli sviluppatori di creare ed eseguire il codice delle applicazioni senza doversi preoccupare della gestione dell'infrastruttura sottostante.

In un ambiente serverless, le attività di manutenzione come l'installazione dei sistemi operativi (OS) e degli aggiornamenti software, la gestione della sicurezza, il monitoraggio e altro vengono esternalizzate a un fornitore di servizi cloud.

Nonostante il nome, un framework serverless non significa computing senza server. Tuttavia, nelle piattaforme serverless, il CSP (anziché lo sviluppatore) gestisce il provisioning dei server, lasciandoli loro il tempo di concentrarsi sul codice e sulla logica aziendale. Un altro vantaggio delle applicazioni serverless è che consentono ai provider di cloud di fornire risorse su un modello on-demand, che è più flessibile ed economico. Con il serverless, la fatturazione comincia all'inizio dell'esecuzione e si interrompe al termine della stessa. Insieme all'Infrastructure as a Service (IaaS) e al Function as a Service (FaaS), il serverless è diventato un'offerta di servizi cloud leader.

Che cosa sono i microservizi?

I microservizi, o architettura di microservizi, sono un approccio architettonico di cloud computing in cui l'intera applicazione è composta da molte parti più piccole indipendenti e interconnesse. Le applicazioni di microservizi hanno spesso un proprio stack che include un database e un modello di gestione del database.

I microservizi comunicano utilizzando una combinazione di representational state transfer (API REST), event streaming e broker di messaggi. In genere, i microservizi sono classificati in base alle loro capacità aziendali (ad esempio, microservizi per i motori di ricerca o l'elaborazione degli ordini online), con un servizio di separazione chiamato contesto limitato.

Come per il serverless, il successo dei microservizi è strettamente legato a quello dell'infrastruttura cloud. Con i casi d'uso dell'infrastruttura cloud in crescita esponenziale in tutto il mondo, la spesa per i microservizi dovrebbe raggiungere i 6 miliardi di dollari nei prossimi quattro anni.

Sebbene si parli spesso di microservizi nel contesto della loro definizione architettonica, può essere più facile comprendere il loro valore aziendale analizzandoli attraverso la lente dei loro vantaggi più noti:

  • Modifica o aggiornamento del codice senza influire sul resto di un'applicazione.
  • Facilità di modifica di stack e linguaggi di programmazione.
  • Utilizzo di componenti altamente scalabili indipendenti l'uno dall'altro.

Serverless e microservizi: differenze importanti da considerare

Sia le architetture serverless che quelle di microservizi condividono l'obiettivo di migliorare la flessibilità e la scalabilità delle applicazioni complesse. Sebbene condividano molte somiglianze, ci sono alcune differenze importanti da considerare, tra cui le seguenti:

Scalabilità

Sia i servizi serverless che i microservizi sono considerati "altamente scalabili", ovvero consentono alle soluzioni software di aggiungere utenti mantenendo comunque un elevato livello di prestazioni.

La differenza sta nel livello di controllo rispetto al livello di automazione che le due architetture offrono a un'organizzazione. Le tecnologie serverless consentono alle singole funzioni di scalare automaticamente in base agli eventi di attivazione, mentre i microservizi consentono di scalare ogni servizio in modo indipendente, su richiesta. Sebbene l'approccio ai microservizi richieda una configurazione più manuale, offre agli sviluppatori anche un maggiore controllo.

Sviluppo

Ancora una volta, quando si tratta di sviluppo, la differenza tra l'implementazione di serverless e microservizi si riduce al livello di controllo richiesto dalla tua organizzazione.

I microservizi richiedono che ogni servizio e funzione sia creato, testato e distribuito in modo indipendente utilizzando un container come quelli creati da Docker e/o una piattaforma di orchestrazione di container come Kubernetes. Sebbene questo approccio offra una maggiore personalizzazione rispetto al serverless, richiede anche più coordinamento, tempo e supervisione da parte degli sviluppatori.

D'altra parte, il serverless è progettato per cicli di sviluppo e implementazione rapida con elevata agilità e complessità ridotta. In un'architettura serverless, la gestione dell'infrastruttura sottostante, come l'installazione e la configurazione di un sistema operativo, la gestione dei server e l'aggiornamento del software, viene esternalizzata a un CSP. Ciò consente di impacchettare, implementare e scalare automaticamente le funzioni dell'applicazione.

Gestione dell’infrastruttura

In un'architettura serverless, tutto il provisioning, la gestione e la scalabilità dell'infrastruttura sono gestiti da una terza parte (in genere un CSP), consentendo agli sviluppatori di concentrarsi esclusivamente sulla logica aziendale e sulla scrittura, oltre all'implementazione di codice.

Inoltre, in un modello serverless, il codice viene eseguito più vicino all'utente, diminuendone la latenza e migliorando velocità e prestazioni. Tuttavia, sebbene in un modello serverless gli sviluppatori possano concentrarsi maggiormente sulla scrittura di codice, hanno poco o nessun controllo sull'infrastruttura sottostante, come il sistema operativo o il provisioning dei server.

In un'architettura di microservizi, gli sviluppatori sono tenuti a gestire lo stack che supporta ogni microservizio che intendono distribuire. Ciò include l'infrastruttura, i processi di sviluppo e le configurazioni di rete applicabili. Sebbene i microservizi offrano un maggiore controllo sull'ambiente di sviluppo, richiedono anche un livello più elevato di competenza da parte degli sviluppatori quando si tratta di DevOps, la metodologia che consente lo sviluppo di applicazioni.

Granularità e architettura monolitica

La granularità indica quanto un sistema è suddiviso in parti più piccole. Sia l'architettura serverless che quella dei microservizi sono considerate più granulari rispetto alla precedente architettura monolitica.

L'architettura monolitica combina tutte le funzionalità di un'applicazione, come l'interfaccia utente, la logica e le operazioni di database, che si dividono tra serverless e microservizi. La semplicità dell'architettura monolitica era, ed è tuttora, interessante per alcune aziende che hanno bisogno di sviluppare applicazioni semplici con un obiettivo unico.

L'architettura basata sui microservizi è più granulare dell'architettura monolitica, ma non tanto quanto quella serverless. L'architettura dei microservizi suddivide le applicazioni monolitiche in servizi più piccoli e indipendenti che possono essere implementati separatamente. L'architettura serverless è ancora più granulare. I modelli serverless suddividono ogni applicazione in singole funzioni che sono ancora più piccole dei servizi. In un'architettura serverless, ogni funzione rappresenta un frammento della logica aziendale e viene eseguita solo quando viene attivata da un evento specifico.

Runtime

In un ambiente serverless, la gestione dell'infrastruttura critica necessaria per sviluppare e distribuire il codice viene esternalizzata a un CSP, incluso il runtime, l'ambiente in cui un'applicazione o un servizio è programmato per l'esecuzione. Ciò significa che i dati memorizzati durante l'esecuzione di una funzione vengono persi nell'istante in cui la funzione è completa.

Le architetture di microservizi, invece, vengono spesso eseguite su macchine virtuali dedicate, o VM, il che consente loro di memorizzare il proprio stato.

Costo

Le architetture di microservizi sono spesso meno efficienti in termini di costi rispetto a quelle serverless a causa dei loro modelli di fatturazione. Mentre le funzioni serverless vengono fatturate in base al numero di eventi che attivano la distribuzione del codice, i microservizi richiedono il pagamento anticipato dei costi in base al provisioning dell'infrastruttura e di altre risorse.

Con un'architettura a microservizi, le organizzazioni pagano le risorse indipendentemente dal fatto che vengano utilizzate, mentre in un'architettura serverless, agli utenti viene addebitato solo quanto effettivamente utilizzato.

Microservizi serverless

A seconda delle esigenze di un'organizzazione, è possibile combinare il meglio delle architetture serverless e di microservizi in un modello noto come "microservizi serverless".

I microservizi serverless sono un framework architettonico ibrido in cui i microservizi sono realizzati come una funzione serverless. Le funzioni serverless sono particolarmente adatte ai microservizi grazie alla loro elevata scalabilità e possono essere facilmente integrate con i servizi gestiti, riducendo talvolta i costi di un'operazione di microservizi.

Questo approccio consente agli sviluppatori di concentrarsi sulla creazione di funzioni più specializzate rispetto a quelle tipiche di un ambiente serverless (ma senza il problema della gestione dell'infrastruttura). Combinare le architetture serverless e microservizio produce molti degli stessi benefici dell'uso indipendente delle architetture, tra cui scalabilità, efficienza dei costi e flessibilità. Ci sono però anche alcune sfide che vale la pena considerare.

Sfide dei microservizi serverless

  1. Limiti delle funzioni: definire i imiti delle funzioni può essere problematico in un ambiente di microservizi serverless e i team di sviluppo spesso hanno difficoltà a definire i ruoli di ciascuna funzione. A volte, questo li porta ad estendere la logica su troppe funzioni fino a quando non ha più senso.
  2. Prestazioni: è difficile garantire che le prestazioni delle applicazioni rimangano elevate in qualsiasi ambiente serverless a causa di diversi problemi; in particolare, un problema chiamato "partenze a freddo". Le partenze a freddo si verificano quando una funzione viene attivata dopo un periodo di inattività. Ciò può causare ritardi di due o tre secondi quando è richiesta una nuova istanza di container e non sono disponibili contenitori caldi.
  3. Monitoraggio: può essere difficile monitorare le applicazioni in architetture di microservizi serverless e scoprire qual è la causa principale di un problema. Le applicazioni possono essere create con numerosi microservizi e funzioni, il che rende difficile il tracciamento delle richieste nell'ambiente, necessario per comprendere molti problemi comuni.

Casi d'uso di serverless e microservizi

Con la continua crescita dell'uso del cloud computing e la ricerca da parte delle aziende di nuovi modi per sfruttare la tecnologia per creare nuovo valore aziendale, si stanno espandendo sia i casi d'uso serverless che quelli dei microservizi.

Casi d'uso serverless

Intelligenza artificiale (AI) e machine learning (ML)

Gli ultimi anni hanno visto una crescita enorme dei casi d'uso aziendali per le applicazioni di  intelligenza artificiale (AI) e machine learning (ML), specialmente nell'AI generativa. In particolare, il serverless aiuta ad abilitare la cosiddetta AI basata sugli eventi, in cui un flusso costante di intelligenza orienta le capacità decisionali in tempo reale.

Hybrid cloud

Il cloud ibrido combina cloud pubblicocloud privato e infrastruttura on-premise per creare un'unica infrastruttura IT flessibile e conveniente. Il serverless aiuta a supportare le aziende che stanno adottando una strategia di hybrid cloud fornendo l'agilità, la flessibilità e la scalabilità di cui la tecnologia ha bisogno.

Big data analytics

Il serverless riduce drasticamente i costi e la complessità della scrittura e della distribuzione del codice per le applicazioni di dati. Gli ambienti serverless consentono agli sviluppatori di concentrarsi sul codice e sulla logica aziendale, piuttosto che su tutte le attività di routine di gestione dell'infrastruttura.

Casi d'uso di microservizi

Cloud computing

Sebbene i microservizi non siano richiesti per gli ambienti di cloud computing, le loro architetture li rendono un'ottima soluzione grazie ai loro componenti applicativi distribuiti. Le architetture a microservizi consentono ai servizi e alle funzioni di funzionare in modo indipendente e di essere distribuiti per supportare un'applicazione. Inoltre, l'elevata scalabilità dei microservizi consente di eseguire più istanze su un server, un altro vantaggio per gli ambienti di cloud computing.

Elaborazione dei dati in tempo reale

Le applicazioni che richiedono l'elaborazione dei dati quasi in tempo reale, come quelle che supportano veicoli autonomi o video in streaming, sono particolarmente adatte ai microservizi. I microservizi consentono di eseguire le operazioni in tempo reale in modo da fornire output immediati, consentendo il funzionamento di questi tipi di applicazioni.

Refactoring

Il refactoring, quando un'azienda decide di riprogettare le proprie funzionalità IT, è un caso d'uso comune per le architetture di microservizi. Spesso, i reparti IT cercano di passare da un modello monolitico a qualcosa di più flessibile ed efficiente, che i microservizi possono fornire.

Serverless o microservizi: quale è la soluzione più adatta alla tua azienda?

La scelta dell'architettura giusta per la tua applicazione è una delle decisioni più importanti che la tua azienda possa prendere. Ecco alcune domande per determinare se sono più adatte le architetture serverless o di microservizi:

  • Che tipo di applicazione stai sviluppando?
  • Quanto velocemente deve essere costruita?
  • Quanto denaro puoi a investire?
  • Che livello di controllo ti serve avere sull'infrastruttura sottostante?
  • Quanto pensi che sia complesso il processo?
  • Hai più iterazioni in programma?

Sebbene questi siano solo alcuni esempi di domande che potresti porti, dovrebbero aiutarti a creare un framework per prendere una decisione.

In genere, le aziende che desiderano spostare velocemente e iterare spesso scelgono un'architettura serverless, mentre le aziende con applicazioni più complesse ed esigenti, e a cui non importa un ciclo di sviluppo più lungo, utilizzano i microservizi. Ma si tratta pur sempre di generalizzazioni e, prima di prendere una decisione, dovresti considerare i punti di forza e di debolezza di entrambe le tecnologie.

Inizia ora

Il serverless computing offre un modo più semplice ed economico per creare e gestire applicazioni nel cloud. Scopri IBM Cloud Code Engine, una piattaforma serverless con pagamento a consumo che consente agli sviluppatori di distribuire applicazioni e workflow serverless senza bisogno di competenze in Kubernetes.

Autore

Mesh Flinders

Staff Writer

IBM Think

Vista dall'alto di un uomo d'affari che usa il telefono cellulare nel cortile dell'ufficio

Insight imperdibili. Iscriviti alla nostra newsletter.

Vai oltre l'hype con le notizie degli esperti su AI, quantum computing, cloud, sicurezza e molto altro.

Iscriviti oggi