Microservizi e sistemi distribuiti

Tutta la decade degli anni 90 e quella successiva ha visto nel modello architetturale a tre livelli, il suo indiscusso vincitore. Suddividere un software in strati, in particolare: Data access layer, Service layer e Presentation layer, è stato considerato il metodo da seguire per una progettazione professionale.

L’aumento della complessità dei software, la frammentazione dei device, i nuovi paradigmi di sviluppo agile, ed il cloud hanno messo in discussione questo modello e permesso l’affermarsi di nuovi, entusiasmanti modelli innovativi!


Microservizi.

Un microservizio è un software di ridotte dimensioni e completo nella sua specifica area di competenza, gestito da un team ridotto, rilasciatile in produzione facilmente ed in grado di comunicare con altri software utilizzando protocolli di comunicazioni standard, privilegiando HTTP REST.

Ogni microservizio è parte di ecosistema più grande, in cui rappresenta un anello della catena. I linguaggi di programmazione utilizzata da tutto l’ecosistema possono essere differenti, poiché i singoli microservizi dialogano tra di loro in modo standard e possono essere considerati completi nella loro inutilità, se presi singolarmente.

I vari microservizi rilasciati all’interno di un ecosistema costituiscono un sistema distribuito: Tanti piccoli software  molto specializzati che dialogano e lavorano autonomamente per ottenere un risultato finale molto più complesso.

I vantaggi di questo approccio architetturale sono molteplici.

Aggiornamento e manutenzione.

Sostituire o aggiornare un singolo elemento in un sistema distribuito risulta molto più agevole e veloce se paragonato ad un sistema monolitico multi strato. Il rilascio infatti, avviene solo per il singolo microservizio.

Scalabilità.

Ogni singolo microservizio può utilizzare un singolo server o oltre, con possibilità di scalare verso livelli molto alti di velocità e concorrenza.

Robustezza.

Spesso, un malfunzionamento di un microservizio non blocca tutto l’ecosistema.