Si tratta di andare a suonare un po 'dura, ma in fondo se avevi bisogno di un ESB, sapresti avevi bisogno di un ESB.
Per la maggior parte dei casi d'uso, l'ESB è una soluzione alla ricerca di un problema. È una pila di software su cui è stata progettata la maggior parte degli scenari. La maggior parte della gente semplicemente non fa abbastanza varietà di elaborazione per giustificarla. La "E" per "Enterprise" è notevole qui.
In un caso semplice:
tail -F server.log | grep SEVERE >> severe.log
CHE è un esempio banale di un'istanza di uno scenario ESB.
"Ma questa è solo una pipeline di comandi UNIX!"
Sì, esattamente.
La parte "ESB" è il "|" e la ">>"
L'ESB è il tempo di esecuzione entro il quale è possibile collegare insieme i moduli, monitorare il traffico, la progettazione di tutti i tipi di scenari sgargianti come fan-out e si unisce, ecc ecc
ESB sono notevoli per avere un sacco di connettori per leggere un sacco di fonti e scrivere un sacco di destinazioni. Sono noti per la tessitura di grafici e flussi di lavoro più complicati per l'elaborazione utilizzando blocchi logici piuttosto grossolani.
Ma ciò che la maggior parte delle persone in genere fanno è:
input -> DO_STUFF -> output
Con un ESB ottengono:
ESB[input -> DO_STUFF -> output]
In natura, la maggior parte delle condutture semplicemente non sono così complicato. Tendono ad avere una logica off che non è riutilizzabile e la gente tende a raggrupparla in un unico modulo logico.
Bene, diamine, puoi farlo con uno script Perl.
Le condotte lunghe negli ESB tendono ad essere più inefficienti di quanto non lo siano. Con un sacco di marshalling di dati in entrata e in uscita di moduli generici (dal momento che raramente si utilizza un payload binario).
Quindi, ad esempio, CSV entra, converte in XML, lo elabora, genera l'XML per l'input in un altro passo come XML, che lo esegue, lo lavora, lo converte in XML per Yet Another step. Risciacquare e ripetere fino a quando la CPU raggiunge il 400% (FTW multi-core).
Poi qualcuno si avvicina con "Ehi, se trascino un drop di questi moduli in una singola routine, saltiamo tutta questa spazzatura XML!", E si finisce con "input -> DO_STUFF -> output" .
Per i sistemi di grandi dimensioni, con molti servizi Web che richiedono un'integrazione casuale e ad hoc, possono andare bene. Se sei in un'azienda che lo fa molto, possono funzionare davvero bene. Quando hai dozzine di condutture, possono aiutare con l'aspetto operativo della loro gestione.
Ma per le pipeline complicate, se si dispone di molti passaggi, forse non è una buona idea al di là del prototipo, soprattutto se è coinvolto un volume reale. Attenzione, potresti non avere alcuna scelta, dipende dai sistemi che stai integrando.
In caso contrario, se si dispone di un'interfaccia singola è necessario alzarsi in piedi, quindi è sufficiente farlo. Fallo in Perl, in Java, in C#, in qualunque cosa. Non correre e spendere circa 100 MB di infrastrutture e complessità che ora devi imparare, gestire e gestire.
Quindi, ancora, se avessi bisogno di un ESB, lo sapresti. Veramente. Avresti tutto il sistema che hai costruito insieme a cose disparate, ti batteresti, parlerai con i colleghi di quanto sia doloroso tutto questo, e ti imbatterai in qualche link a qualche sito con qualche venditore e leggerai un white paper e vai "THAT'S IT!", ma se non lo hai ancora fatto, allora non ti manca nulla.
+1 per l'over engineering e" La maggior parte della gente semplicemente non fa abbastanza varietà di elaborazione per garantirlo " – kolossus