Monoliti e Microservizi: due architetture a confronto

Con la corsa alla digitalizzazione si è diffusa molto rapidamente la filosofia DevOps che, mettendo in sinergia sviluppatori, project manager e addetti alle infrastrutture, consente di rilasciare continuamente aggiornamenti e prodotti software senza sacrificare la qualità e l’utilizzo delle nuove tecnologie. Questo sta portando verso una graduale migrazione dallo sviluppo di software monolitico allo sviluppo di software a micro servizi.

Le applicazioni sviluppate con l’architettura monolitica contengono in un unico posto tutte le componenti come l’interfaccia utente, il sistema di autenticazione, la logica di business e le iterazioni con il database. Ad esempio, le vecchie applicazioni in PHP e ASP sono quasi tutte realizzate con questa architettura.

I monoliti sono difficili da gestire. La manutenzione è spesso un grande problema: correggere o aggiungere nuove funzionalità, specialmente su software di grandi dimensioni, risulta molto difficile perché si rischia di andare a modificare altre parti di codice che vengono richiamate da altre funzionalità. Inoltre è necessario comprendere nella totalità del codice quali righe andare a modificare, questo comporta dei monopoli da parte degli sviluppatori e la non condivisione della conoscenza. Oltre ai tempi tecnici notevolmente allungati, la messa in linea delle modifiche richiede ogni volta il completo deploy di tutta l’applicazione con i conseguenti disservizi generati agli utenti. La scalabilità, se non orizzontale, è praticamente nulla e l’affidabilità bassa poiché è molto facile che un problema all’interno di un modulo possa bloccare l’intero applicativo.

Un’alternativa ai monoliti è l’innovativa architettura a microservizi che, mediante la realizzazione di moduli che comunicano tra loro attraverso API, consente di realizzare componenti indipendenti e in caso di un eventuale malfunzionamento su uno di questi servizi, gli altri continueranno comunque a funzionare.  

Grazie alle più moderne tecnologie come Kubernetes e Docker ciascun modulo può essere scalato in maniera indipendente e duplicato su più server. Diversi sviluppatori possono lavorare contemporaneamente su diversi servizi andando a velocizzare il ciclo di sviluppo. Per natura i microservizi sono amici del modello DevOps e della metodologia CI/CD (Continuous Integration/Continuous Deployment). Al contrario dei monoliti, un aggiornamento non creerà un disservizio diffuso su tutta l’applicazione, ma solamente sul determinato modulo. Lo stesso ragionamento vale per eventuali malfunzionamenti: si blocca un servizio, ma gli altri continuano a funzionare e l’applicazione a microservizi non crolla

Ti potrebbero interessare anche questi articoli
Repository consigliati
Riccardo Riggi
Infinite Storage Glitch

Lo sapevi che esiste un modo per avere spazio disco infinito sul cloud? L’utente GitHub DvorakDwarf ha trovato una soluzione divertente, ma per niente affidabile,

LEGGI »
Repository consigliati
Riccardo Riggi
Awesome Italian Tech Communities

Questo repository GitHub ha l’obiettivo di promuovere la community italiana del mondo tech. Ci sono gruppi Telegram, podcast, canali YouTube e tanto altro. Frequentare una

LEGGI »
Repository consigliati
Riccardo Riggi
Guida Galattica per il profilo LinkedIn

Guido Penta ci propone un nuovo repository GitHub con una guida approfondita sull’ottimizzazione di un profilo LinkedIn. Vi invito a leggerlo perché contiene diversi spunti

LEGGI »