Cos'è l'architettura a microservizi e perché usarla

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 vuol dire architettura a 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).

Architettura a microservizi vs monoliti


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.


Architettura a 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.

Architettura a microservizi e integrazione 

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.


Archietttura a 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.

Perché devi avere un'archietttura a microservizi

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

Da monolite a microservizi: come far evolvere un’applicazione legacy

La trasformazione digitale ha introdotto innovazioni tecnologiche, software e applicative, che si sono dimostrate estremamente vantag...
Mia-Platform Team 13 marzo 2020

Cinque libri sulle architetture a microservizi che dovresti leggere

Negli ultimi dieci anni, i microservizi sono stati probabilmente l’argomento a fare più  tendenza e generare maggiore attenzione nel ...
Mia-Platform Team 27 marzo 2020

Architettura applicativa: perché deve evolvere con il mercato

La sfida dell’IT è oggi quella di accompagnare l’evoluzione delle esigenze del mercato e dell’impresa attraverso scelte efficaci a li...
Mia-Platform Team 10 novembre 2020