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
Gomorra SQL

Gomorra SQL è un progetto goliardico open source che permette di scrivere le query in dialetto napoletano al posto del classico SQL. Vedi il repository

LEGGI »