Blog
Scopri la nostra cultura aziendale, lo sviluppo dei prodotti ed altro ancora!
Modello architetturale dei microservices
Pubblicato da Vincenzo Autiero il 22 Feb, 2018

I microservices rappresentano una specializzazione delle architetture orientate ai servizi (SOA) per la realizzazione di sistemi software modulari in ambito enterprise. L'approccio prevede il partizionamento in una suite di piccoli servizi disaccoppiati ed indipendenti dal resto dell'architettura.

In contrapposizione alle architetture monolitiche questo modello architetturale offre una maggiore flessibilità in quanto le componenti software possono scalare indipendentemente e le risorse hardware possono essere opportunamente dimensionate in base alle necessità di ogni singolo servizio. Ogni servizio definisce un confine dal punto di vista funzionale ed un contratto per l'utilizzo delle funzionalità che espone.

Questo modello architetturale favorisce la Continuous delivery ed il deployment di sistemi complessi semplificando in tal modo l'evoluzione dello stack tecnologico in ambito aziendale.

Non esiste una definizione formale per le architetture microservices proviamo piuttosto a descrivere le caratteristiche comuni alla maggior parte delle architetture che si ritengono tali.

Un componente è un'unità di software indipendente, intercambiabile ed aggiornabile. I microservices partizionano le funzionalità in servizi i quali comunicano mediante richieste http o RPC.

Il vantaggio principale di questo approccio consiste nel fatto che, a differenza di un sistema monolitico che necessita di un redeploy globale per qualsiasi cambiamento apportato al codice, i servizi sono indipendenti tra di loro e circoscrivono gli impatti delle modifiche introdotte.

Lo scopo, infatti, di una buona architettura microservices è minimizzare gli impatti definendo i confini applicativi (service boundaries) ed i contratti per l'utilizzo delle funzionalità.

Inoltre, per loro natura, i microservices rispondono in maniera efficiente ai requisiti di scalabilità quali clonazione, decomposizione funzionale e partizionamento dei dati. Le componenti software possono scalare indipendentemente e le risorse hardware possono essere opportunamente dimensionate in base alle necessità di ogni singolo servizio.

Scale Cube scalabilità sulle 3 dimensioni (scale cube)

E' doveroso dire che i benefici non sono soltanto di natura tecnica.

Dal punto di vista organizzativo, infatti, il lavoro può essere pianificato affidando i moduli dell'intero progetto a più team di sviluppo, autonomi e formati da un gruppo ristretto di persone. Il team di sviluppo è cross-functional e possiede l'intero range di skills richiesti sia per la realizzazione (full stack) che per il management.

Il team, inoltre, è responsabile del proprio prodotto nell'ambito di tutto il suo ciclo di vita dalla realizzazione al supporto in produzione. In questo modo le persone dello sviluppo instaurano uno stretto contatto con gli utenti finali attraverso il supporto che offrono giornalmente.

Vincenzo Autiero
Esperto di sistemi enterprise IT e fondatore di Latitude della quale riveste il ruolo di CEO.