2009-09-02 10 views
27

Sto cercando di integrare un ESB in un prodotto basato su Java/Maven esistente. In particolare, sto guardando ServiceMix e Mule. Il prodotto si connetterà a diversi servizi, tra cui email, Quartz, servizi web RESTful su HTTP, SMS e IM. Ho solo rapidamente esaminato la documentazione e le due opzioni sembrano essere piuttosto pesanti e abbastanza complesse. Sembra un esempio da manuale di quando usare un ESB, ma non voglio passare molto tempo semplicemente imparando l'uno o l'altro sistema.L'integrazione di un ESB (ServiceMix/Mule) vale la curva di apprendimento?

Come ho già detto, ho già un'app Web sviluppata da Maven e speravo che l'integrazione di uno dei sistemi sarebbe stata abbastanza semplice, anche solo per qualcosa di semplice come inviare un'e-mail, ma sembra che l'aggiunta di entrambi comporterà mezzo mondo in termini di vasetti e sarebbe difficile da incorporare nel prodotto esistente.

Vale la pena provare a inserire una di queste opzioni? C'è un modo semplice per integrarli in un'app esistente senza ristrutturarla completamente? Ci sono altre opzioni più leggere? Ci sono alcuni aspetti che dovrei considerare che ne renderebbero utile l'utilizzo?

+2

Cos'è un ESB che ti compra oltre a più complessità? Perché pensi di averne bisogno? Quanti servizi sono "diversi" e quanti pensate di dover rendere necessario un ESB? – duffymo

+1

Mi aspetto di avere le basse cifre doppie dei servizi esterni quando avremo raggiunto la produzione. E saranno diversi, ma molti di loro serviranno a scopi simili. Notifica via email, IM o SMS, ad esempio, dove l'unica differenza è il mezzo. – Tim

+4

Un seguito più di un anno dopo. Finì per scambiare Mule per Camel. Siamo stati molto contenti di Camel. Comunità incredibilmente vivace, leggera e ora c'è un libro per integrare la documentazione generalmente buona. Direi di iniziare con Camel a meno che non vi sia una ragione ovvia per cui avresti bisogno di un ESB completo. – Tim

risposta

13

Mule è abbastanza semplice da usare in termini di servizi di collegamento con XML e hanno un sacco di esempi video che ho trovato davvero utili.

Gli ESB dovrebbero essere futuri e come dici tu - il tuo sembra un esempio da manuale di dove utilizzarlo.

Cercherò di rispondere a tutte le vostre domande:

Vale la pena cercando di tirare in una di queste opzioni? Penso che questa sia una domanda che devi porci - cosa stai cercando di ottenere? se stai cercando di renderlo più facile da implementare, probabilmente impiegheresti lo stesso tempo tramite codice puro o ESB, cosa con tutte le impostazioni incluse. Se stai pensando di farlo come esercizio di apprendimento, potrebbe valerne la pena.

C'è un modo semplice di integrarli in un'app esistente senza ristrutturarla completamente? Risposta breve no. Sarà necessario un reingegnerizzazione da integrare con la maggior parte delle librerie/framework di terze parti.

Ci sono altre opzioni più leggere? Mule è davvero semplice. Potresti essere in grado di utilizzare un MQ per eseguire HTTP, SMS e IM. Possibilmente ActiveMQ o RabbitMQ.

Ci sono alcuni aspetti che dovrei considerare che ne renderebbero utile l'utilizzo? Sì, gli ESB sono progettati per le aziende in cui vengono aggiunti spesso nuovi servizi e è probabile che la configurazione cambierà. Avere tutto in XML rende questa modifica un po 'più semplice. Quindi, se stai solo costruendo un pezzo unico di software, potrebbe non essere la strada giusta da percorrere. Ma se aggiungerai più tardi e collegando costantemente diversi servizi, potrebbe essere la strada migliore.

+1

Sono stato in grado di far funzionare Mule con il progetto senza * troppo * molti problemi, anche se sembra che riesca a tirare fuori la maggior parte dei barattoli immaginabili. Quando finalmente ho avuto i giusti incantesimi, l'impatto sul mio codice era abbastanza ridotto, il che è positivo, ma la documentazione non era eccezionale per l'integrazione di Mule in una webapp esistente. Non riesco ancora a capire se ne varrà la pena, ma ora ho un mezzo per determinarlo. Grazie. – Tim

4

Ross Mason, il fondatore del progetto Mule ha scritto un ottimo articolo su questo argomento, To ESB or Not to ESB. Ho consigliato di dargli un'occhiata. Inoltre, potresti voler dare un'occhiata a Mule iBeans che offre un modello molto più semplice se stai costruendo questo come un'app web e vuoi solo fare un'integrazione leggera e non sei interessato alla mediazione.

+0

https://blogs.mulesoft.com/dev/mule-dev/to-esb-or-not-to-esb/ (nuovo collegamento) –

12

Si potrebbe anche voler dare un'occhiata al framework Apache Camel che è davvero potente per tutte le esigenze di integrazione che hai citato senza le sanzioni di un ESB in piena regola.

+2

Divertente dovresti dirlo mentre sto valutando Camel come potenziale opzione invece di Mule in quanto sembra essere più leggero. Non ho ancora preso alcuna decisione, ma sembra che potrebbe darmi quello di cui ho bisogno senza un sovraccarico. – Tim

1

Consiglio di non perdere tempo prezioso con MULE. La mia esperienza finora non è buona. Non lo userei per nessun sistema critico. È lontano dall'essere un prodotto maturo. Oltre a ciò i servizi RESTful promettono sicuramente molta semplicità e hanno casi d'uso reali.

1

Direi che vale la pena investire se si dispone di più di due applicazioni o database che devono comunicare tra loro E stanno utilizzando più di un protocollo di comunicazione. Oppure, se ti aspetti che questa situazione sia vera in futuro. Sembra che le tue esigenze soddisfino sicuramente questo.

Un'altra situazione che suggerirebbe l'uso di un ESB o di almeno un bus di messaggi sarebbe dove ci si aspetta o è necessario che una o più applicazioni evolvano indipendentemente dalle altre. Ad esempio uno è in sviluppo attivo e gli altri no. Un ESB può isolare i sistemi stabili dalle modifiche nei sistemi sviluppati attivamente, eliminando la necessità di aggiornare sempre tutto.

Il vero potere di un ESB è che le applicazioni possono delegare tutte le decisioni su come comunicare e con chi comunicare con l'ESB e lasciare che tale componente si assuma la piena responsabilità per tali aspetti. Tutti gli altri componenti sono isolati l'uno dall'altro e non devono preoccuparsi l'uno dell'altro, riducendo notevolmente i problemi di combinazioni di dipendenze.

In termini di curva di apprendimento, ho trovato che Mule ESB è abbastanza semplice da imparare e sarebbe sicuramente una curva di apprendimento molto più bassa che cerca di imparare tutte le API necessarie per parlare dei molteplici servizi che stai provando connettersi a.