Macro o Micro? Architettura Monolite vs Architettura a Microservizi



Lo sviluppo di una nuova applicazione nasce sempre dalla necessità di risolvere un problema. Molte di queste applicazioni iniziano risolvendo qualcosa di molto semplice che però cresce gradualmente diventando sempre più complessa e difficile da gestire. Con la corsa alla digitalizzazione si è diffusa molto rapidamente la filosofia di rilasciare continuamente aggiornamenti. Questo sta portando verso una migrazione dallo sviluppo di software monolitico allo sviluppo di software a microservizi.

Architettura a monolite

L’architettura monolitica è sicuramente l’approccio più convenzionale e storicamente più utilizzato. La parola "monolite" è spesso usata in riferimento a qualcosa di grande e unico. Aggiungere, eliminare o migliorare funzionalità risulta molto difficile, occorre aggiornare l'intero codice, compilare e distribuire una versione aggiornata dell'interfaccia. Questo comporta dei rischi perché si può modificare altre parti di codice che vengono richiamate da altre funzionalità

Architettura a microservizi 

 L’architettura a microservizi, nota anche semplicemente come microservizi ,al contrario di quella a monolite ha l’obiettivo di sviluppare un’applicazione come una collezione di servizi in modo indipendente. L'intera funzionalità è suddivisa in moduli distribuibili in modo indipendente che comunicano tra loro attraverso metodi chiamati API. Ogni servizio copre il proprio ambito e può essere aggiornato, distribuito e ridimensionato in modo indipendente. Un microservizio deve svolgere un solo compito e bene. Questa architettura modulare si adatta molto bene anche a grandi progetti basati su cloud. Rispetto all'architettura monolitica, i microservizi presentano diversi vantaggi:
  • Migliorano la tolleranza ai guasti, poiché l'applicazione è composta da moduli disaccoppiati, gran parte dell'applicazione può continuare a funzionare anche se alcuni moduli falliscono.
  • Libertà di scelta dello stack tecnologico, se qualcuno vuole testare una nuova tecnologia in un singolo servizio può farlo senza influire sul funzionamento dell'intera applicazione. Possiamo anche utilizzare diversi stack tecnologici per scopi diversi che rendono la programmazione più semplice e ottimale nei tempi di esecuzione.
  • Microservizi facili da scalare, i microservizi consentono di inserire risorse nei moduli necessari e mission-critical, essendo in grado di creare un equilibrio armonioso e un consumo più sostenuto di risorse su misura per ogni esigenza.
  • L'aggiornamento, è possibile aggiornare un servizio senza dover ridistribuire il resto dell'applicazione.

Conclusione 

Come nella vita, nulla è perfetto e nemmeno le architetture di microservizi lo è. Un'architettura a microservizi mal progettata, la non armonia e comunicazione tra microservizi e tutte queste disattenzioni non portano mai nulla di buono. Un mio consiglio finale è: abbiamo una potente tecnologia che può renderci la vita migliore o peggiore, decidete voi che strada percorrere e accettatene le conseguenze. 

Commenti

Post popolari in questo blog

#4 Space Invaders - Vola navicella....Vola - Unity Tutorial

Inbox & Outbox pattern - La consegna dei messaggi ai tempi moderni

#1 Design Patterns - Creational Design Patterns: Il Potere di Creare Oggetti con Stile