Di Mauro De Caro, Territory Manager, Interactive Intelligence
Credetemi, se siete incaricati della valutazione delle tecnologie per la vostra azienda, sapere che cosa sono i microservizi dovrebbe interessarvi!
In breve, “microservizi” o microservice, è un termine utilizzato per descrivere un’architettura software nella quale vari sottosistemi, o servizi, di un’applicazione sono indipendenti o debolmente accoppiati e lavorano insieme in modo transazionale. L’opposto delle architetture software “monolitiche” dove tutti i sottosistemi sono strettamente connessi l’uno all’altro.
La maggior parte delle applicazioni aziendali legacy (CRM, e-mail, comunicazioni unificate/contact center) sono progettate usando un approccio monolitico. Tutti i vari sottosistemi (come ad esempio il login manuale, il routing, il reporting, il recupero/storage dei dati ecc.) sono solitamente progettati per funzionare insieme sullo stesso server. Tipicamente, se un sottosistema non funziona, tutti smettono di funzionare. Se un sottosistema necessita di una patch o di essere aggiornato, lo stesso vale per tutti. Se abbiamo bisogno di ridondanza e scalabilità, tutto deve essere replicato.
Un tale sistema monolitico trarrebbe un grande beneficio dall’essere riprogettato usando microservizi. In che modo? Diamo un’occhiata all’esempio di uno chef nell’affollata cucina di un ristorante…
Anziché che gestire login, routing di oggetti, e l’invio/ricezione dati, gli chef devono essere in grado di cucinare diverse portate quali antipasti, primi, secondi e dessert.
In un’architettura monolitica ci sarebbe un unico chef privato che prepara ogni singola portata specificatamente per voi. Se si tagliasse il dito affettando le verdure per l’antipasto, si arresterebbe la produzione di tutte le portate seguenti. Quando dovrà imparare una nuova ricetta per la zuppa, tutta la produzione verrà interrotta nuovamente.
Dal momento che una situazione del genere non è accettabile, un altro chef sarà in attesa in disparte, pronto a intervenire. Questo approccio risulta problematico per molte ragioni. Prima di tutto, avere due chef altamente qualificati dedicati alla vostra cucina è molto costoso, specialmente se lavorano uno alla volta. In secondo luogo, il passaggio da uno chef all’altro non sempre avviene così agevolmente come ci si aspetterebbe. Inevitabilmente quando il secondo chef prenderà il sopravvento verrà fatta confusione, gli ordini verranno persi e la produzione di piatti verrà rallentata. Quindi, cosa succederà quando dovrete organizzare le cene importanti? Il vostro chef non sarà in grado di tenere il passo…
Ora immaginate una cucina che usi microservizi. Invece di avere uno (o due) chef che sanno fare tutto, avete una schiera di “microchef”, e ognuno di loro sa eseguire solo una piccola mansione (ma lo fa molto bene). Abbiamo un cuoco che sa fare la zuppa. Uno che sa cuocere il pane. Un altro che griglia la carne, uno che crea i dessert… questo è il quadro. Ora, se uno chef si fa male o ha bisogno di imparare qualcosa, solo una piccola area verrà interessata piuttosto che tutto il complesso.
Naturalmente avere così tanti chef non sembra gestibile (o economicamente vantaggioso) vero? Ebbene no, non se non li spostiamo in una cucina cloud dove molteplici commensali consumano il loro cibo.
Una volta accoppiati i microservizi alla tecnologia cloud con bilanciamento di carico e auto scaling, vedremo i reali benefici.
Anche se voi non state ordinando una zuppa è probabile che qualcun’altro lo farà, cosicché il microchef adibito alla preparazione della zuppa sarà (sicuramente) messo al lavoro usando il bilanciamento di carico. Se più persone ordinano la zuppa allo stesso tempo, la tecnologia auto scaling incaricherà più microchef di svolgere il lavoro, e li manderà a casa una volta terminato il picco della cena per assicurarsi di non pagare personale in più. Se viene aggiunta una nuova ricetta della zuppa sul menù sarà insegnata solo ai nuovi microchef per non distrarre gli altri mentre stanno cucinando. Il bilanciamento di carico distribuirà il menù aggiornato con la nuova zuppa a tutti i nuovi clienti che arriveranno, non ci sarà quindi nessun tempo di inattività quando il menù verrà cambiato.
Questo concetto di aggiornare costantemente il menù senza dover smettere di accettare nuovi clienti (o senza causare un impatto negativo sull’esperienza dei clienti esistenti) nel mondo del software è chiamato “continuous delivery”. I giorni di patch e aggiornamenti sono finiti.
Le piattaforme software basate su microservizi garantiscono oggi un’esperienza di funzionamento estremamente elevata, sono infinitamente scalabili e non richiedono interruzioni di servizio per la manutenzione.
Se siete nel mercato delle nuove tecnologie cloud, assicuratevi di fare al vostro venditore le seguenti domande:
Ho bisogno di contattarti se voglio raddoppiare il mio numero di utenti?
Possono verificarsi delle interruzioni di servizio per la manutenzione e l’aggiornamento?
Se la risposta a entrambe le domande è sì, la vostra soluzione probabilmente non sta utilizzando microservizi e voi non state beneficiando dei vantaggi che forniscono.