Enterprise Service Bus questo sconosciuto?!

Un Enterprise Service Bus (ESB) è un’infrastruttura software che fornisce servizi di supporto ad architetture SOA complesse.

Nei precedenti anni, le grandi software house si sono dovute sempre accollare una scelta importante all’inizio un progetto, ovvero, l’ambiente di sviluppo su cui modellare il futuro prodotto.
La scelta è quasi sempre molto difficile perchè si tende spesso a scegliere qualcosa che sia idoneo ad eventuali evoluzioni del prodotto (spesso senza riuscire a stimarne la portata) tendendo a complicarsi la vita.

Nonostante questo certe volte l’ambiente di sviluppo diventa un vero e proprio collo di bottiglia, magari perchè l’azienda fornitrice cresce troppo lentamente rispetto alle tecnologie e ci ritroviamo un software che per esempio non è più compatibile con i nuovi sistemi operativi.

In un contesto di questo tipo, per fronteggiare la problematica della durabilità di un software, nasce una tipologia di architettura molto utile, ovvero ESB (Enterprise Service Bus).

I concetti dietro questo tipo di architettura sono facilmente accostabili al meccanismo delle mail, cercherò di fare un esempio pratico che vale più di 1000 parole.

Una mail è un messaggio che va da X a Y, due persone che non si conoscono e che fanno cose diverse all’interno di un processo. Esempio: ufficio vendite invia mail di preventivo a cliente, cliente invia mail di conferma d’acquisto, ufficio vendite invia conferma d’acquisto a ufficio acquisti, ufficio acquisti invia mail d’ordine a fornitore ecc ecc…

Deduciamo che un processo aziendale (workflow o saga) è dunque composto da un insieme di passaggi (messaggi) tra attori sconosciuti.

ESB “mima” esattamente questo contesto fornendo (usufruendo di vari framework e tecnologie già pronti) l’intera infrastruttura di routing dei messaggi tra le varie parti di un software complesso.

Esempio, ho un software per la gestione della messaggistica fax con una rubrica di nominativi, voglio che la rubrica di questo software venga costantemente sincronizzata con quella di un altro gestionale, ho due possibilità:

  • Eseguire una sincronizzazione ogni x ore dei nominativi
  • Il gestionale all’atto della creazione/modifica/cancellazione di un contatto invia un messaggio contenente i dettagli al framework ESB che lo recapiterà al sistema di messaggistica

I vantaggi del secondo approccio sono tre: possiamo mettere in ascolto di quel messaggio sia il software di messaggistica che un eventuale software futuro ne avrà bisogno (a costo zero), inoltre, abbiamo (come per la posta elettronica) la cronologia dei messaggi che ci ha portato ad avere quel tipo di dato in rubrica ed infine, abbiamo la certezza che ogni messaggio verrà recapitato anche se il sistema di messaggistica magari è spento per un guasto.

In ultimo ma non per importanza, ESB, fornisce un’infrastruttura per la comunicazione di software scritti con qualsiasi cosa, permettendo di far convivere software in VB6 con pezzi di pagine ASP o software in java ecc… coordinando una o più reazioni ad ogni azione attraverso ma non solo i web services.

Questo ci permette di fare tanti programmi che collaborano tra di loro attraverso un’unico broker e che sono su server diversi, reti diverse, sistemi operativi diversi ecc…

Rispondi

Leggi articolo precedente:
UI Composition: parte teorica

UI Composition è un pattern architetturale che permette di creare interfaccie grafiche completamente modulari.

Chiudi