Architettura Microservice – Comunicazione

Per la comunicazione interna tra microservices ci sono diverse scuole di pensiero!

In un mondo ideale, ogni singolo servizio dovrebbe essere indipendente da ogni altro, ma ovviamente solo in un mondo ideale. Se si rende necessaria l’iterazione tra microservices per soddisfare una singola richiesta, non siamo in presenza di un problema di protocollo, bensì  di un problema di architettura.  In questo caso non è importante quale tipo di comunicazione si sia scelta (HTTP, AMQP, messaggi asincroni ecc…), ma il tempo con il quale verrà soddisfatta la richiesta e soprattutto l’affidabilità dei singoli servizi.

Nel caso in cui sia necessario creare un meccanismo di comunicazione, quest’ultimo dovrebbe essere asincrono.

In un comunicazione asincrona (Async I/O) le chiamate non sono bloccanti per il processo ( o il thread) che le hanno effettuate. In questo modello di comunicazione, la chiamata non risulta bloccante fino alla ricezione di una risposta da parte del servizio destinatario, ma è libera di procedere nel normale flusso di esecuzione. Per poter intercettare la risposta da parte del processo destinazione, è possibile utilizzare callback, promise e streams.

Non  è però sempre possibile evitare l’utilizzo di operazioni sincrone: basti ad esempio pensare all’iterazione con un database, che deve avvenire all’interno delle ciclo richiesta-risposta.

La necessità di strutturare le comunicazioni in modalità asicrona, si basa sul principio tale per cui i microservices debbano essere indipendenti l’uno dall’altro e soprattutto dovrebbero funzionare anche se gli altri servizi fossero temporaneamente non disponibili.

Alla base della comunicazione tra servizi, c’è sicuramente la necessità di ottenere risposte nel piu’ breve tempo possibile. In questo scenario, il protocollo HTTP è sicuramente il metodo piu’ semplice, e forse più affidabile, possibile. Inoltre consente di essere impiegato sia in scenari sincroni, sia in scenari asincroni.

L’ HTTP  è un protocollo sincrono: a seguito di una richiesta fatta dal client, si attende la risposta.

Volendo implementare una soluzione asincrona, il thread del client potrebbe non attendere, eseguire altro codice, e gestire le operazioni solo alla ricezione della risposta da parte del server.

Una soluzione possibile per disaccopiare i servizi è quella di effettuare una ridondanza dei dati: in questo modo vengono replicati nei vari servizi, con l’evidente vantaggio di delegare la responsabilità ad ogni singolo contesto locale. Ad esempio utilizzando sistemi indipendenti SCS (self-contained system).

Ma come ridondare? Ad esempio, utilizzando processi di polling monitorando richieste RESTFul. L’utilizzo di un’architettura basata su protocollo HTTP consente di utilizzare meccanismi di caching, senza dover implementare nuove astrazioni.

Altri metodi fanno uso di sistemi di messaggistica come Akka o Erlang che consentono di semplificare le funzioni di scambio dati tra servizi.

Architettura Microservices – Analisi

Riprendendo il progetto che è stato convertito da un’architettura monolitica ad una più moderna a microservices, sono state analizzate le tematiche legate ai pro ed i contro del nuovo approccio.

Nell’articolo precedente abbiamo fatto una breve panoramica delle architetture monolitiche e quelle basata sui servizi.

L’analisi dei costi sia in termini economici, sia in termini di risorse, è sicuramente una componente fondamentale nella decisione di approcciare la nuova architettura. Si tratta, infatti, di una vera migrazione, molto volte irreversibile.

Continua a leggere Architettura Microservices – Analisi

Architettura Microservices

Il passaggio dallo sviluppo di un  software “tradizionale” ad un software basato su un’architettura basata su microservices risulta, almeno inizialmente, non proprio semplice.

Negli ultimi 4 mesi ho trascorso un pò di tempo nello studio e nell’implementazione di una soluzione basata sui microservices.

L’idea alla base di questo tipo di struttura non è completamente nuova, ma possiamo pensarla come un’evoluzione dell’architettura SOA (Service Oriented Application): si tratta infatti di una serie di piccoli servizi (micro appunto)  indipendenti tra loro e ciascuno focalizzato su particolare ruolo all’interno del business.

Continua a leggere Architettura Microservices

E i “quaranta” sono arrivati!

E i “quaranta”… sono arrivati! Sembra ieri quando le giornate si passavano sulle biciclette rosse, le estati sembravano non finire mai e la macchina era il più grande sogno da realizzare.

Poi le notti per gli esami all’università, i primi lavori nel mondo dell’informatica e i sabato sera passati a cercare quel collegamento internet a 56K che non sempre funzionava. Il primo portatile Toshiba, comprato con i primi risparmi e che mi ha accompagnato il giorno della laurea. Il primo autoradio che leggeva le cassette, e poi quello più evoluto che leggeva i primi CD.

Continua a leggere E i “quaranta” sono arrivati!

Downshifting … a modo mio!

… Nell’era digitale, 48 ore sono un’eternità. Eric Clapton, come al solito, non aveva tutti i torti. Io, quelle 48 ore, me le sono prese.

Arrivavo da uno periodo lavorativamente e creativamente intenso:  Le vacanze di Natale!

Non avevano fatto il loro compito, anzi avevano aumentato quel misto di voglia fare, libri da divorare e nottate passate al computer. Dovevo staccare!

Chi mi conosce bene, sa dove trovarmi, Quali sono i miei posti e soprattutto che sarei tornato! Un black-out! Un black-out dalla tecnologia, dalla tecnologia più invasiva!

Non c’era cosa peggiore di un messaggio su WhatsApp , il beep di una mail sullo smartphone, e l’ aggiornamento software che non si scaricava mai.

“Stacco! Stacco… per una settimana… poi vedremo! “

Avevo bisogno di concentrarmi!

L’ammetto… non ho smesso di fare le mie cose, ho semplicemente smesso di essere frenetico nel rispondere … per un po!

UN RESET!

La cosa folle dell’era del “sempre connessi” spesso è proprio questa!

Nell’ultimo anno… non ho mai spesso di essere digitale… di creare… di scrivere e pensare… avevo un motivo valido per farlo… ne ho sempre avuto/cercato uno… concreto… poi… è un pò sfumato… e da qui la necessità del RESET!

Di fermarmi… e ripartire!

L’esserci sempre, 24 ore su 24… rispondere immediatamente ad un mail… con il fiatone dopo averla letta… rispondere ad un messaggio su WhatsApp … senza neppure leggerlo… non capirne il senso…
oppure capirlo benissimo!

Quattro anni fa… la mail la leggevo al pc… ora la leggo in auto, il sabato, la domenica… in pizzeria… ma … è proprio necessario?

Forse no!… E comunicare con WhatsApp? In chat?

Lo spunto di questo blackout mi è arrivato rileggendo il libro “Entro 48 ore” di Giovanni Ziccardi, dal quale ho preso la prima frase di questo post. Non so dire se sia un’esperienza da fare… diciamo che a me non è dispiaciuta!

Mi sono preso i MIEI   tempi!

E gli amici?

Nelle prime ore… senza risposta ai messaggi su WhatsApp….

Fino a quel momento ero sempre stato presente…

che fine avrà fatto?

E con il passare delle ore… e con numerosi messaggi nella INBOX … l’insistenza si è fatta sempre più pressante!

Ci sei? Sei in ferie? Hai dei problemi? Mi devo preoccupare? Ti ho mandato una mail …

La tecnologia non permette blackout!

Nel frattempo, mi concentravo sul fare… finire i sospesi… iniziare cose nuove… e rivederne altre… ed ovviamente il lavoro!

Ristabilire le priorità!

E diciamolo… mi sono anche divertito a sentire  le teorie bizzarre sul mio destino!

E qui potrebbe anche partire qualche vaffa

sono passati cosi i giorni… 7 per la precisione… tra l’essere un utente normale poco digitale concentrato solo sul fare …

e anche qualche vaffa… ovviamente!?! Ma è il prezzo da pagare!?!

,-)

E ora? Il mio smartphone ha una coda di messaggi lunghissima… alcuni sono circostritti ad un periodo temporale… alcuni sono scaduti… non so dire se risponderò a tutti… ma li leggerò!

ma…sono tornato!

Quando vado via… non saluto… intanto poi torno!

A.M.