Tra i trend più attuali nel campo dello sviluppo software c’è la scrittura di applicazioni a microservizi, modalità che sta accompagnando di pari passo l’utilizzo sempre più maturo del cloud nelle nuove applicazioni d’impresa.

La suddivisione delle grandi applicazioni aziendali in microservizi, ossia in insiemi di servizi in grado di svolgere specifiche funzioni, si sposa con l’esigenza di rendere più veloce lo sviluppo, di facilitare il controllo su aggiornamenti (e anche governance di applicazioni di terze parti)e riuso delle funzionalità in altre applicazioni.


Come definire i microservizi

Ma cosa sono esattamente i microservizi? Secondo la definizione data da James Lewis e Martin Fowler in “Microservices”, un’architettura a microservizi è un approccio allo sviluppo di una singola applicazione come suite di piccoli servizi, ciascuno in esecuzione in un proprio processo e in comunicazione con gli altri. Progettati e sviluppati per le necessità del dominio di business in cui operano, questi servizi possono essere messi in produzione in modo indipendente, con modalità che possono essere automatizzate.

Come funzionano i microservizi

L’indipendenza dei microservizi è garantita dall’interconnessione attraverso la rete e protocolli universali che non dipendono da ambienti o tecnologie usate come HTTP. Possono quindi essere programmati con differenti linguaggi, ambienti di programmazione, usare storage e database diversi, in funzione della piattaforma sulla quale girano e che può essere differente e, in funzione delle necessità, essere on-premise, cloud privato o pubblico; diversa tra i servizi che supportano una stessa applicazione.

In generale i microservizi hanno piccola dimensione, sono message oriented, sviluppati in modo autonomo in base al contesto applicativo. Spesso anche decentralizzati per esigenze di prestazioni o comodità nel deploy.

Microservizi e nuovi modelli di sviluppo software

I microservizi si associano con lo sviluppo in cloud e il supporto dei processi di continuous integration e continuous development che accompagnano lo sviluppo Agile e l’introduzione del metodo DevOps per accelerare la gestione del ciclo di vita delle applicazioni. I benefici ottenibili riguardano, infatti, l’agilità delle applicazioni (in particolare applicazioni cloud-native), la scalabilità nel deploy e il time to market. Si aggiungono dal lato degli sviluppatori, il vantaggio di una maggiore produttività e debugging e manutenzioni più semplici.


I microservizi per accelerare sviluppo e deploy

La complessità delle attuali applicazioni e degli ambienti di deploy trova nei microservizi una risposta efficace che consente di sviluppare in modo indipendente le componenti che in passato dovevano essere collaudate e rilasciate in blocco. Con i microservizi diventa più facile reimpiegare singole funzioni in applicazioni diverse, sfruttare quanto è già stato sviluppato in nuove applicazioni adatte a nuove esigenze aziendali, oppure offrire servizi all’esterno dell’azienda a clienti e partner, riducendo i tempi dello sviluppo.

I vantaggi dei microservizi

I microservizi offrono la capacità di differenziare gli ambienti d’esecuzione tra on premise, cloud pubblico o privato in funzione delle esigenze di prestazione, costo e sicurezza. Tra i vantaggi che si ottengono scrivendo le applicazioni a microservizi c’è la capacità di facilitare il monitoraggio e il controllo (per parti) nei sistemi complessi, arrivare in profondità al cuore del sistema per poter capire, per esempio, se eventuali problemi di performance o di sicurezza sono dovuti a un errore del codice oppure a una cattiva distribuzione tra servizi che girano in container eseguiti nel data center aziendale e in esterno, presso i provider di cloud pubblico.

Come sfruttare i microservizi

Per ottenere il massimo vantaggio nella creazione delle applicazioni a microservizi è importante realizzare nel modo più efficace la segmentazione delle funzionalità in modo da tradurle in componenti autonome, dotate di vita propria nello sviluppo, negli aggiornamenti e nei deploy. Nello sviluppo dei microservizi vale il principio della singola responsabilità così come è definito nelle regole dello sviluppo Agile: ovvero in ogni oggetto software, così come in ogni modulo di servizio creato, deve avere la responsabilità di una singola funzione dell’applicazione.