Cos’è un Enterprise Service Bus (ESB)? Come funziona? A cosa serve? Qual è la situazione migliore per usarlo? Perché si ha bisogno di un ESB? Cosa può offrire un ESB?
Queste sono le domande che gli utenti interessati a questo middleware si pongono per capire se è uno strumento utile per la loro azienda.
In questo articolo, cercherò di rispondere a queste domande e chiarire, nel modo più semplice possibile, i seguenti punti:
- Cos’è un ESB;
- Quali sono le caratteristiche e le funzioni fondamentali di un Enterprise Service Bus.
- Quali benefici porta usare questo strumento
QUANDO NASCE E CHE COSA È UN ENTERPRISE SERVICE BUS?
L’origine del termine “Enterprise Service Bus” è ancora molto dibattuta. Un articolo di Oracle l’attribuisce alla Gartner, altri lo attribuiscono a Roy W. Schulte, e di conseguenza al gruppo Gartner. In un’intervista rilasciata alla CBR online, lo stesso Schulte afferma che è difficile stabilire chi abbia inventato il concetto che sta alla base di un ESB e che il primo ad usare il termine e vendere un prodotto con questo nome sia stata l’azienda Sonic Software. Essendo un tema ancora molto dibattuto, mi limito a dire che il termine è stato introdotto nel campo dell’informatica all’inizio degli anni 2000.
È molto più importante ora capire cos’è, in parole semplici, un Enterprise Service Bus.
L’ESB è un’architettura, una serie di regole e principi per integrare tra loro numerose applicazioni su un’infrastruttura bus. Questo middleware (un software che unifica programmi complessi ed esistenti) ha la responsabilità primaria di connettere fra loro applicazioni e servizi eterogenei di una Service-Oriented Architecture. L’ESB è importante per trasferire, trasformare, inviare messaggi (dati che il sistema invia all’utente o al provider per informarli sullo stato di un’operazione, o di errori o altre condizioni) al provider di servizio più opportuno. In questo modo, si semplificano i compiti sia dell’utente che del provider. Infatti, esso unifica i diversi metodi usati dai diversi componenti per ricevere e mandare informazioni alle altre applicazioni.
Andando più nel dettaglio:
- Un service coinvolge sostanzialmente programmi, non iterativi e autonomi, che comunicano con altri servizi attraverso lo scambio di messaggi.
- Il Bus è il percorso di trasmissione su cui i segnali sono inseriti o ottenuti da ogni dispositivo collegato alla linea.
LE CARATTERISTICHE DELL’ENTERPRISE SERVICE BUS
Non ci sono caratteristiche standard che fanno di un’architettura un ESB. Tuttavia, qualsiasi tipo di ESB dovrà servire come router e funzionare come “adattatore”, oltre ad avere se non tutte, la maggior parte delle seguenti caratteristiche:
– dovrebbe prescindere dalle tipologie del sistema operativo e dei linguaggi di programmazione, in quanto dovrebbe consentire l’interoperabilità tra applicazioni diverse, come tra JAVA e .NET;
– usare XML, e più recentemente, REST come linguaggi standard per la comunicazione;
– mantenere gli standard dei web service (servizi web);
– fornire supporto per i diversi Message Exchange Patterns, come: richiesta-risposta sincrona o asincrona o altri;
– fungere da adattatore per l’integrazione con sistemi datati;
– possedere un modello standard di sicurezza che autorizzi, autentichi e controlli l’uso dell’ESB;
– facilitare la trasformazione del formato e dei valori dei dati e dei service tra l’applicazione che manda e quella che riceve;
– convalidare la ricezione e l’invio dei messaggi;
– applicare le regole di business uniformemente;
– arricchire i messaggi provenienti da altre fonti;
– dividere o combinare più messaggi e gestire le eccezioni;
– trasportare o trasformare i messaggi, senza una procedura centrale;
– mettere in coda o bloccare i messaggi se alcune applicazioni collegate al bus non sono momentaneamente disponibili.
Tutte queste caratteristiche si trasformano in un middleware con diverse funzionalità, in questo articolo ne analizzeremo solo alcune.
LE FUNZIONALITÀ
– Routing: fornisce all’infrastruttura la possibilità di smistare una richiesta verso un particolare service provider utilizzando criteri deterministici o probabilistici.
– Transformation: converte la struttura ed il formato del payload della richiesta effettuata dal client nel formato effettivamente gestibile dal service provider.
– Message Enhancement: può aggiungere, modificare o eliminare un’informazione contenuta in un messaggio in modo da renderlo compatibile col service provider. Per esempio, con questa funzionalità il bus può convertire il formato delle data o aggiungere informazioni non presenti originariamente.
– Message Processing: gestisce lo stato e le richieste assicurando il delivery del messaggio di risposta al client.
– Protocol Transformation: accetta un tipo di protocollo nei confronti del client (es. SOAP, JMS) e comunica al service provider attraverso un altro protocollo (es. RMI). Il Protocol Transformation serve per inviare lo stesso payload utilizzando un differente protocollo
– Message Transformation: modifica il formato e i valori del payload che viaggia tra client e service provider.
– Service orchestration: l’ESB funge da coordinatore centralizzato (broker) che controlla i servizi coinvolti e coordina l’esecuzione delle differenti operazioni. Per questa funzionalità, viene usato come linguaggio standard BPEL (Business Process Execution Language), ma c’è la possibilità di utilizzare anche altri linguaggi come il Business Process Modeling Notation (BPMN) o il Web Service Conversation Language (WSCL).
– Transaction Management: tratta una richiesta ad un servizio di business come se fosse una singola unità di lavoro.
– Sicurezza: dà la capacità all’infrastruttura di proteggere i servizi da accessi non autorizzati. Sono fondamentali quindi: l’autenticazione, l’autorizzazione, l’auditing e l’amministrazione.
I BENEFICI DI UN ESB
Utilizzare un ESB in una Enterprise Service Architecture significa che le applicazioni che la formano comunicheranno tra loro attraverso il bus. Ciò ha il vantaggio di ridurre il numero di connessioni point-to-point necessarie per far comunicare le applicazioni fra loro. Così facendo, si facilita l’analisi di cambiamenti dei software più semplice e chiara.
I principali benefici nell’utilizzare un ESB sono:
– accordo più veloce e più economico tra i sistemi esistenti;
– una maggiore flessibilità, in quanto diventa più semplice apportare dei cambiamenti quando ci sono delle modifiche dei requisiti;
– fornire una piattaforma standardizzata per l’integrazione dei sistemi;
– scalabilità, cioè il passaggio da soluzioni point-to-point a una comunicazione a livello aziendale tra le applicazioni (un bus distribuito);
– fornire tipi predefiniti di servizi pronti all’uso;
– più configurazione che codifica dell’integrazione;
– nessun sistema di regolamentazione centrale e nessun mediatore centrale;
– patching incrementale con inattività pari a zero, l’impresa diventa così adatta al refactoring.
Come si evince dall’elenco soprastante, i principali vantaggi nell’usare un ESB sono più legati al modo di usarlo che alle sue caratteristiche.
CONCLUSIONI
Per concludere, un Entreprise Service Bus implementa un sistema di comunicazione tra software eterogenei che interagiscono tra loro in una Architettura Service Oriented.
Ci sono alcune caratteristiche e funzionalità specifiche che fanno di un’architettura un Bus, questo è soprattutto associato a concetti come mediazione, routing o trasformazione.
L’ESB è un modo efficace per scalare, in quanto rimuove le interdipendenze tra le applicazioni.