Uno sguardo “diverso” ai microservizi
Di microservizi si parla ormai da alcuni anni: numerosi sono gli articoli dedicati, su blog e siti di informatica, a questa innovativa tipologia architetturale con la quale progettare applicativi software. Dell’argomento ci siamo occupati a più riprese anche sulle pagine di MokaByte.
L’approccio tipico che si ha nel parlare di microservizi consiste nell’analizzare un aspetto tecnico identificandone i vantaggi e gli svantaggi. Meno frequenti invece sono gli interventi che cercano di fornire una visione di prospettiva su come questo nuovo approccio alla creazione di software possa impattare sensibilmente sul mondo del business, in senso generale.
Vediamo insieme in questo articolo perché i microservizi sono un elemento importante per le future opportunità di business.
Viaggiatori digitali
Il termine digitalizzazione è molto utilizzato in questo periodo. Bene o male, se è chiaro a tutti che digitalizzare attività e processi di business è una cosa importante, forse è meno chiaro che cosa fare esattamente e quali progetti intraprendere da subito. L’offerta di tecnologie informatiche e digitali in genere è infatti talmente ampia e talmente variegata che diventa veramente molto difficile fare la scelta migliore. È un po’ come entrare in un grande bazar ricco di mercanzie ed avere solamente un euro da spendere. Si deve scegliere cosa acquistare, ma cosa?
Ogni negoziante vi fa entrare nel proprio negozio ricco, dice lui, di oggetti utilissimi da acquistare, e voi non potrete fare altro che fidarvi di quello che più vi convince. Come fare allora?
Ritengo che l’unico modo sia cambiare la mentalità con la quale si osserva la digitalizzazione. Rimanendo nella metafora del viaggio esotico, raggiungere in aereo mete lontane non farà automaticamente di noi degli accorti viaggiatori. Nei processi di digitalizzazione è lo stesso: adottare una qualche soluzione informatica, per quanto buona, non renderà il nostro sistema informativo necessariamente migliore, se non è adatta al nostro contesto.
Pertanto, occorre compiere quella trasformazione che, da semplici turisti digitali, ci fa diventare esperti viaggiatori. Il viaggiatore digitale infatti è colui che evita i tour predefiniti nei luoghi pensati per la grande massa e si concentra sul proprio viaggio in senso più ampio.
Districarsi nelle offerte
Nel caso del software veniamo bombardati da parole roboanti come BigData, Cloud Computing, Intelligenza Artificiale, Business Intelligence e così via. Ecco, siamo entrati nel grande bazar! Ma non fraintendetemi: non sono parole vuote! Anzi, sono concetti importanti, che però possono confondere perché sono associati a una miriade di offerte altisonanti, spesso difficili da valutare. Io credo che non si possa più rimandare il momento in cui svestire i panni del turista e indossare invece quelli del viaggiatore.
In fondo il segreto di ogni viaggiatore è uno solo: conoscere bene se stessi, avere consapevolezza cioè di chi si è. E se lo riportiamo al mondo digitale, significa conoscere bene come è fatto il nostro sistema informativo e come le persone lo usano. Quali sono i processi di business che esso implementa? Quali sono quelli che non implementa? Quanti di quelli non implementati sono automatizzabili e quanti invece è bene che rimangano così come sono? E se volessimo automatizzare qualche processo o volessimo aggiungere delle nuove capacità al nostro sistema, di cosa avremmo bisogno? Queste nuove capacità ci aiuteranno a fare meglio il lavoro che stiamo facendo oggi? Come potrebbe essere la mia azienda, o la pubblica amministrazione di cui sono responsabile, se avessi queste nuove capacità all’interno del mio sistema informativo?
Rispondere a queste domande significa prendere consapevolezza di chi si è digitalmente. Significa iniziare ad essere dei viaggiatori.
Un nuovo tipo di architettura
In questo contesto cosa significa la parola microservizi e come potrebbe esserci utile all’interno del nostro viaggio? I microservizi sono un modo nuovo con il quale si possono creare applicazioni software e sistemi IT in generale.
È come se avessimo scoperto come costruire i grattacieli. Se siamo riusciti a costruire edifici alti centinaia di metri è solo perché abbiamo sviluppato nel tempo un modo nuovo con il quale progettare le strutture portanti di un edificio e questa innovazione ha permesso all’uomo di salire molto più in alto di dove poteva arrivare prima.
Lo stesso salto tecnologico accade per il software con i microservizi. I microservizi sono un nuovo modo di progettare il software e i sistemi software in generale: sono un nuovo modello architetturale.
Essere adattabili, essere elastici
Il mondo nel quale stiamo viaggiando cambia in modo estremamente veloce. L’introduzione delle tecnologie informatiche ha stravolto la vita di tutti negli ultimi anni. Mentre valutiamo tutti gli effetti dei social e di come abbiano cambiato radicalmente il modo di comunicare, stanno avanzando altre rivoluzioni: criptovalute, Internet delle cose, intelligenza artificiale, e così via.
Dobbiamo ancora pienamente capire come intercettare le opportunità delle rivoluzioni iniziate qualche anno fa, e già ne stanno arrivando le nuove. Allora facciamoci una domanda: in questo mondo che si muove così veloce, qual è la strategia vincente che può farci emergere? Sicuramente la capacità di essere adattabili ed elastici, ossia la capacità di poterci trasformare in base al contesto e di poterci adeguare alle mutevoli contingenze di mercato.
Sistemi informativi flessibili
Nel nostro viaggio digitale, essere adattabili ed elastici significa avere un sistema informativo facile da trasformare, facile da adattare alle differenti esigenze che ci si parano davanti. In termini pratici questo significa abbattere i tempi e i costi di messa in opera dei nuovi progetti digitali. Significa avere la capacità anche di provare vie innovative prima degli altri senza correre il rischio poi di non riuscire a tornare indietro qualora si rivelino sbagliate.
Diciamo perciò che il nostro sistema è adattabile quando ci costa poca fatica cambiarlo. Ciò significa anche poter scalare il nostro sistema informativo a seconda delle esigenze, e cioè poterlo regolare in base alle necessità d’uso. Per funzionare, ogni sistema informativo ha bisogno di computer sui quali il software viene eseguito, ha bisogno cioè di risorse. È chiaro che è totalmente inutile avere tante risorse nei momenti in cui non servono, mentre al contrario è di vitale importanza avere risorse quando servono. Dobbiamo perciò cercare di avere un sistema elastico, ossia un sistema che può essere regolato in base ai carichi di lavoro.
Il ruolo dei microservizi
I microservizi permettono di aumentare l’adattabilità del nostro sistema e la sua elasticità. Per rendere adattabile ed elastico un software, lo si suddivide in “pezzetti” molto piccoli (micro) che possono essere “montati” e “spostati” a piacimento, ciascuno dei quali fornisce un determinato servizio: da questo deriva il nome microservizi.
Invece di avere un unico grande software da gestire (“monolite”), si ricorre a piccoli pezzi da comporre tra di loro. Il software diventa quindi più adattabile: se si deve introdurre una nuova capacità sul nostro sistema, sarà sufficiente aggiungere i pezzetti necessari a tale scopo, senza alterare gli altri esistenti. Se, invece, avessimo un unico grande blocco, saremmo costretti ad agire su tutto il blocco producendo ritardi anche sulle funzioni non rilevanti per il nostro intervento.
Allo stesso modo, se si vogliono introdurre modifiche nel sistema, sarà sufficiente cambiare solamente i pezzi interessati senza dover agire, ancora una volta, su tutto il blocco. I microservizi rendono il sistema più elastico perché possiamo andare a scalare solamente i pezzetti che servono invece che tutto il blocco.
Tornando all’esempio del grattacielo, è un po’ come se potessimo aggiungere e togliere piani a piacimento. Ci sono molti inquilini? Aggiungo un piano. Ce ne sono pochi? Lo tolgo. Con i microservizi possiamo creare un sistema che dipende linearmente dal carico d’uso permettendoci così di dimensionare i costi infrastrutturali in base alle reali necessità, senza esagerare e senza lesinare.
È adattabile ed elastico tutto ciò che è riconducibile a un insieme collaborativo di elementi tra loro distinti. Pensiamo a quanto è adattabile il corpo umano che è totalmente composto da cellule: piccoli elementi simili tra loro che differiscono per funzione ma in grado di collaborare efficacemente.
Essere autonomi
Veniamo infine a un’ultima caratteristica importante dei microservizi: l’autonomia, proprio come in un viaggio. È bene essere autonomi nelle decisioni per poter definire il percorso senza che nessun altro ci imponga nulla, ma anche avere buoni amici che ci accompagnano e i riferimenti giusti per tutte le occasioni in cui avremo bisogno di consigli e di opinioni per scegliere dove andare. Dobbiamo invece evitare di viaggiare con qualcuno che vuole farci fare il suo percorso invece che il nostro. È un’analogia che vale anche per il software, poiché molto spesso la nostra autonomia decisionale si scontra con le rigidità delle applicazioni che abbiamo scelto.
Dalla tecnologia al business
Quante volte abbiamo chiesto dei cambiamenti nei nostri applicativi che ci sono stati negati oppure ci sono stati preventivati a prezzi molto alti rispetto al beneficio che potevamo trarne? Magari abbiamo selezionate le applicazioni in un momento in cui non avevamo ben capito cosa ci serviva, oppure ci siamo fatti attrarre da qualche funzionalità di grido che però alla fine si è rivelata inutile.
È un fatto che, attorno alla scelta di un software, nel tempo vengono sviluppati processi e accumulati dati che potrebbero essere preziosi e che poi non è immediato eliminare o cambiare.
Tutto questo accade perché all’interno del nostro sistema IT ci siamo portati dei “pezzi” di software molto grossi e rigidi. In questo caso, anche se siamo stati bravi a creare il nostro sistema adattabile, alcuni dei suoi pezzi non lo sono perché sono controllati da partner esterni che non soddisfano più le nostre esigenze di adattabilità e di elasticità. Quando questo accade, sperimentiamo una perdita di autonomia: non siamo più in grado di decidere la direzione che vogliamo intraprendere perché ci è stato posto davanti un ostacolo più grande di quello che ci aspettavamo e sproporzionato rispetto ai requisiti di partenza.
Ogni volta che introduciamo un prodotto commerciale nella nostra architettura, sperimenteremo una piccola e inevitabile perdita di autonomia. Potremmo pensare di realizzare tutti i pezzi del nostri sistema IT in “casa”, ma per molte funzioni l’impegno è decisamente eccessivo; e appoggiarsi ai prodotti commerciali è certamente la soluzione più sensata. Grazie ad un’architettura a microservizi, però, questa perdita di autonomia decisionale può essere ridotta. Come è possibile? L’introduzione di un’architettura a microservizi richiede di possederne la governance, ossia il controllo e la gestione. Un’architettura a microservizi ci obbliga cioè a sapere bene come funziona il nostro sistema informativo, quali processi implementa, e quali non implementa.
Portare la conoscenza e la gestione del sistema informativo all’interno della propria organizzazione potrebbe apparire come un costo da pagare, in realtà ci porta a quella trasformazione già descritta: il passaggio da turista digitale a viaggiatore digitale.
Il vero “fatto in casa”…
Più che realizzare da soli ogni soluzione informatica necessaria all’azienda, è un’architettura a microservizi che spinge a portare in casa il cuore di tutto il nostro sistema, la sua architettura, la sua struttura. Quando questo accade, il modo con cui interpretiamo e curiamo il nostro sistema informativo cambia radicalmente. Siamo noi che conosciamo il sistema e siamo noi che diciamo e chiediamo cosa esattamente ci serve.
Anche quando decidiamo di acquistare un prodotto commerciale, siamo in grado di chiedere al fornitore le condizioni minime di accettabilità del suo prodotto all’interno del nostro sistema, e cioè di specificare molto più dettagliatamente i requisiti che deve soddisfare il suo prodotto affinché sia integrabile nel nostro sistema.
Possiamo quindi fare scelte più precise e più oculate, evitando di investire denaro dove non serve e concentrandolo invece dove serve. I microservizi ci fanno acquisire una nuova autonomia.
Conclusioni
Il tema dei microservizi richiede molti approfondimenti, a partire dalle tecnologie che si possono utilizzare e dal modo con il quale affrontare la gestione dei progetti. Qui ci siamo soffermati su alcuni aspetti essenziali della rivoluzione a microservizi che aiutano a comprendere perché e come la loro introduzione possa influenzare il nostro sistema software e, come ricaduta, il nostro business.
La parola chiave è certamente adattabilità, ossia la capacità di poter cambiare pelle nel minor tempo possibile e al minor costo possibile. Va comunque compreso che, se da una parte i microservizi ci offrono la possibilità di reagire più velocemente ed efficacemente a scenari sempre più mutevoli, dall’altra ci richiedono di non demandare più tutta la gestione del software a realtà esterne, ma di internalizzarne la conoscenza e la gestione della struttura e dell’architettura, al fine di poterlo gestire in modo razionale e puntuale. In molte realtà del panorama italiano questo è un vero e proprio salto culturale che però è ora di affrontare.
Ciò che va metabolizzato è che il sistema software di un’azienda o di una pubblica amministrazione è il suo sistema nervoso, e qualsiasi decisione di business si prenda non può più prescindere da come tale sistema funziona. I microservizi offrono oggi la possibilità di prendere in mano questa parte così vitale della propria attività. Per alcuni è un’evoluzione naturale di quanto fatto negli anni passati, per altri è una vera e propria rivoluzione. Per tutti è un passaggio imprescindibile per affrontare le sfide che ci aspettano.