Architetture a Microservizi

0 Comments

I micro-servizi sono un modello di architettura software che consente di organizzare un sistema software come un insieme di servizi indipendenti di piccole dimensioni che comunicano tra loro tramite interfacce ben definite. Ciascun servizio e’ controllato da un team autonomo.

Le architetture a micro-servizi assieme alle pratica DevOps permettono di scalare e sviluppare le applicazioni in modo più rapido e semplice.

Opposto al modello a micro-servizi e’ quello monolitico, nelle architetture monolitiche tutti i processi sono strettamente collegati tra loro e vengono eseguiti come un singolo servizio. Ciò significa che se un processo dell’applicazione sperimenta un picco nella richiesta, è necessario ridimensionare l’intera architettura. Aggiungere o migliorare una funzionalità dell’applicazione monolitica diventa più complesso, in quanto sarà necessario aumentare la base di codice. Tale complessità limita la sperimentazione e rende più difficile implementare nuove idee. Le architetture monolitiche rappresentano un ulteriore rischio per la disponibilità dell’applicazione, poiché la presenza di numerosi processi dipendenti e strettamente collegati aumenta l’impatto di un errore in un singolo processo.

Con un’architettura basata su microservizi, un’applicazione è realizzata da componenti indipendenti che eseguono ciascun processo applicativo come un servizio. I servizi sono realizzati per le funzioni aziendali e ogni servizio esegue una sola funzione. Poiché autonomo, ogni servizio può essere aggiornato, distribuito e ridimensionato in maniera piu’ sicura ed efficiente.

Caratteristiche dei microservizi

Autonomia

Ciascun servizio nell’architettura basata su micro-servizi può essere sviluppato, distribuito, eseguito e ridimensionato senza influenzare il funzionamento degli altri componenti. I servizi non devono condividere alcun codice o implementazione con gli altri. Qualsiasi comunicazione tra i componenti individuali avviene attraverso interfacce (tipicamente messaggi) ben definite.

Ciascun servizio risolve un problema specifico utilizzando la migliore tecnologia a questo scopo.

Vantaggi dei microservizi

Agilità

I micro-servizi promuovono le organizzazioni di team indipendenti di dimensioni ridotte che diventano proprietari del servizio che gestiscono. I team agiscono in contesti ridotti e ben delineati così che possano lavorare in modo più indipendente e rapido.

Scalabilità e flessibilità

I micro-servizi ti consentono di scalare ciascun servizio in modo indipendente per rispondere alla richiesta delle funzionalità che la tua applicazione supporta. Ciò permette ai team di ridimensionare in modo corretto l’infrastruttura in base alle necessità, misurare in modo accurato i costi di una funzionalità e proteggere la disponibilità dell’applicazione nel caso in cui il servizio sperimenti un amento nella richiesta.

Distribuzione veloce

I micro-servizi supportano l’integrazione continua e la distribuzione continua, così da poter provare nuove idee in modo più semplice e ripristinare impostazioni precedenti quando qualcosa non funziona. Gli errori, dunque, influiscono di meno sul costo delle operazioni, permettendoti di sperimentare, aggiornare il codice in modo più semplice e accelerare il time-to-market delle nuove funzionalità.

Robustezza

L’indipendenza dei servizi aumenta la resilienza di un’applicazione in caso di errori. In un’architettura monolitica, un errore in un unico componente potrebbe avere ripercussioni sull’intera applicazione. Utilizzando un approccio a micro-servizi, le applicazioni possono gestire completamente gli errori di un servizio isolando la funzionalità senza bloccare l’intera applicazione.