Durante il nostro ultimo Aperitivo Innovativo, grazie all’intervento di Danilo Poccia (AWS Technical Evangelist), abbiamo parlato di Microservices Architecture nate perché favorite da un contesto caratterizzato da:

  • l’avvento e la diffusione del Cloud Computing
  • lo sviluppo sempre più efficiente delle reti
  • le pratiche di Continuous Delivery
  • l’approccio alla gestione della complessità del software basato su Dmain-Driven Design (DDD)
  • l’organizzazione agile delle aziende organizzate in piccoli team di massimo 8 persone (in gergo chiamati “Two Pizza Team”).

Che cosa sono i Microservices?

Non esiste una definizione scientifica di Microservice, ovvero quel modello identificabile come un’entità Software di piccole dimensioni che esegue specifiche funzioni in un proprio processo e comunica con altri servizi mediante interfacce di programmazione (API) grazie allo sfruttamento di protocolli di rete, principalmente quello HTTP.

Un Microservice, per essere definito tale, deve richiedere un impegno di sviluppo quantificabile in circa 2 settimane di lavoro e contraddistinguersi per una considerevole dose di indipendenza.

Questo significa che ogni entità risulta disaccoppiata dalle altre che compongono l’architettura, vedendo il Microservice esterno come una black-box che espone solo delle Application Programming Interface (API) e che gli altri servizi possono interrogare per scambiare dati ed ottenere risultati.

L’indipendenza che contraddistingue i Microservices porta ad ottenere un altro vantaggio, ovvero la possibilità di essere sviluppato con linguaggi di programmazione e tecnologie particolarmente adeguate alla sue funzionalità.

I vantaggi principali derivanti dall’impiego di Microservices Architecture sono:

  • Velocizzare i tempi di sviluppo: poiché ogni servizio è indipendente dagli altri, oltre che di dimensioni ridotte, per il team risulta molto più semplice l’integrazione di nuove funzionalità. Questo permette di portare in produzione molto più velocemente le modifiche richieste.
  • Sperimentazione di nuove tecnologie: il fatto che il servizio sia di dimensioni ridotte e che richieda un tempo di realizzazione medio di due settimane può permettere al team di decidere di investire su nuove tecnologie ritenute più adeguate per l’attività che il servizio deve svolgere.
  • Migliori performance: l’impiego di tecnologie adeguate al tipo di attività che il software deve realizzare, permette di creare un sistema molto più performante rispetto alla scelta di una tecnologia che funziona in tutti i contesti, come i cosiddetti software monolitici realizzati fino a qualche anno fa.
  • Resilienza: nelle Microservices Architecture quando una componente non funziona solo una parte del sistema smette di funzionare, diversamente da quanto succedeva nelle soluzioni software monolitiche… infatti, con questo approccio a servizi, è possibile isolare il problema ed intervenire su di esso mentre il resto continua a funzionare.
  • Scalabilità: soluzioni software monolitche prevedevano una scalabilità orizzontale, con la replica dell’applicativo nelle varie istanze, il modello a microservizi consente invece di effettuare il provisioning delle sole parti del sistema software che necessitano di scalare, in modo dinamico ed intelligente.
  • Decentralizzazione del dato: nelle Microservices Architecture è consigliata la decentralizzazione del dato per permettere ai servizi di utilizzare lo strato di persistence più adeguato alle performance da ottenere.

 

Microservices
Desideri scoprire quali sono gli elementi da considerare nello sviluppo di una Microservices Architecture?

Scarica il nostro Whitepaper!

 

Leave a Comment