Architettura a microservizi: i vantaggi per il business e per l’IT

Mia-Platform Team 24 giugno 2020

Le imprese, oggi, hanno necessità di eliminare la complessità e rigidità dell’architettura di sviluppo software esistente, adottando uno stile architetturale capace di evolversi con rapidità e continuità nel tempo, in accordo con le esigenze di business. Possiamo trovare una risposta a queste esigenze nelle architetture a microservizi, che stanno emergendo per la loro flessibilità in rapporto alle esigenze imprenditoriali.


Ma che cosa sono i microservizi? Varia letteratura attribuisce l’introduzione del termine “micro-web-services” a Peter Rodgers, che lo utilizzò durante una presentazione per addetti del settore nel 2005: i microservizi vengono definiti come servizi di piccole dimensioni, finalizzati a eseguire una singola funzione.


Cosa sono i microservizi

I microservizi sono uno stile architetturale in cui il processo di sviluppo di un’applicazione avviene costruendola come un insieme di piccoli servizi, ciascuno dei quali funziona in maniera indipendente e comunica con gli altri tramite API (application programming interface).

Grazie a queste proprietà, usando i microservizi è possibile sviluppare un’applicazione in maniera agile e flessibile: l’ambiente IT in cui i microservizi vengono eseguiti può essere, a seconda delle esigenze, on-premise oppure cloud privato o pubblico.

Quando si utilizzano i microservizi, per ottenere buoni risultati, anche le dimensioni del team di sviluppo devono rimanere molto contenute (2-5 sviluppatori). Un ruolo chiave, in tale stile architetturale, è giocato dal principio SRP (single responsibility principle), secondo cui ciascun oggetto o modulo di servizio è responsabile di una sola funzione dell’applicazione.


Architettura a microservizi, le differenze con altri stili

Come accennato, sviluppare software secondo lo stile architetturale a microservizi significa progettare un’applicazione come una suite di servizi di dimensioni ridotte e fra loro autonomi.
Questo stile architetturale condivide con l’architettura SOA (service-oriented architecture), già creata un decennio fa, i servizi come componenti chiave, ma presenta alcune differenze.

Nella tecnica di sviluppo basata su microservizi, ciascuno di essi è “fine-grained” e agisce in un contesto ben delimitato (bounded context); inoltre, comunica con gli altri microservizi tramite interfacce di programmazione (API) indipendenti dal linguaggio, lasciando al team di sviluppo la libertà di utilizzare strumenti tra i più diversi. Infine, la comunicazione viene gestita utilizzando protocolli e tecnologie “lightweight” (HTTP/REST).

Nello stile di progettazione SOA, invece, i servizi sono “coarse-grained”, non hanno limitazioni in termini dimensionali, e si affidano a un enterprise service bus (ESB) per comunicare tra loro, usando tecnologie e protocolli con maggiori requisiti di banda (SOAP/WSDL).

Una differenza ancora più sostanziale intercorre tra lo stile architetturale a microservizi e quello tradizionale, monolitico, in cui l’applicazione è progettata come una singola unità e al crescere delle dimensioni potrebbe presentare problemi di gestione. In definitiva, l’architettura a microservizi si presta a far proprio il metodo Agile, il cui obiettivo fondamentale, nello sviluppo software, è saper rispondere al cambiamento continuo delle esigenze dell’utente.


Microservizi e benefici di business

In virtù delle proprietà sin qui esposte, i microservizi permettono di ottenere vari vantaggi. Il primo è in termini di agilità e organizzazione del lavoro: essendo di piccole dimensioni, e dedicati a singole funzioni, i microservizi risultano più semplici da sviluppare e gestire tra i team.
Con i microservizi, inoltre, il time-to-market di rilascio di nuovi prodotti si riduce, perché lo sviluppo diventa meno problematico, più fluido e rapido. Scalabilità e flessibilità sono superiori, in quanto le performance di ciascun microservizio si possono espandere in modo indipendente, utilizzando risorse distribuibili su molteplici server.

L’adattabilità alle esigenze di business è favorita dal fatto che i microservizi si possono considerare mattoncini di codice riutilizzabili in modo semplice e rapido per creare sempre nuove funzionalità. Utilizzando API per comunicare tra loro, i microservizi garantiscono anche una maggior apertura all’integrazione con altre applicazioni e servizi.
Tale capacità d’integrazione di applicazioni e servizi di terze parti consente di espandere i propri canali di distribuzione e sviluppare la propria offerta di prodotti e servizi attraverso nuove partnership commerciali.


Microservizi, i vantaggi per l’IT

Anche a livello di gestione dell’IT, i vantaggi sono numerosi e importanti. La gestione ed evoluzione del software diventa più semplice, potendo basarsi su principi come i già descritti “bounded context” e SRP, indirizzati a creare codice il più possibile pulito e flessibile.
La fase di deployment del codice è semplificata dalla compatibilità dei microservizi con le metodologie di sviluppo CI/CD (continuous integration/continuous deployment), mentre, in termini di adattabilità tecnologica, i microservizi non pongono vincoli, e possono essere sviluppati scegliendo i linguaggi e le tecnologie più appropriati per gli scopi da raggiungere.
Come già accennato, la natura indipendente di ciascun microservizio lo rende un componente costituito da codice e funzioni riutilizzabili. Infine, il principio SRP, isolando gli ambiti delle funzionalità, fornisce maggiori garanzie di affidabilità dei singoli servizi.

 

Conclusione

L’architettura software basata su microservizi e API si posiziona come la più indicata per realizzare e amministrare nel tempo applicazioni in evoluzione continua, come le moderne app digitali. Usando un’architettura a microservizi diventa più facile e rapido creare prodotti e servizi agili, innovativi e rispondenti alle dinamiche del mercato.

 

Leggi il Paper 

Post Correlati