Ho solo conoscenze teoriche su ESB.
Caso di utilizzo: -
- Ho un'applicazione di e-commerce in cui posso ricevere ordini da più fonti in diversi formati.
- Una volta inviata la domanda, devo inviare e-mail a due sistemi
- Una volta inviata la domanda, devo inviare un file di output a un sistema di terze parti. Oggi solo XML, ma potremmo aver bisogno di supportare i formati lungo la linea
- Analogamente, ho bisogno di eseguire analisi e preparazione dei rapporti.
Vedo che sia ESB che Micro-servizi possono adattarsi qui in teoria. Entrambi rendono l'applicazione liberamente accoppiabile e scalabile invece di un'unica applicazione monolitica. Non sono sicuro di cosa sono criteri / attributi che dovrei considerare per selezionare il prodotto ESB a scaffale (a pagamento o open source) rispetto alla disintegrazione dell'app nei micro servizi?
La mia comprensione: - ESB può essere più adatto in quanto rende l'applicazione più liberamente accoppiata dove un componente / applicazione verrà semplicemente inserito il messaggio sul canale (che non è altro che l'oggetto java nelle app ESB basate su java su cui gli altri componenti sono in ascolto). Ora altri componenti come router / trasformatori / adattatori / endpoint ecc. Entreranno in scena e intraprenderanno ulteriori azioni. Qui il componente di invio deve solo conoscere la destinazione indirizzo che sarà l'indirizzo del singolo canale.
In caso di microservizi questo è anche vero, ma qui il consumatore deve conoscere l'URL per ogni operazione specifica.
Ma ora un giorno ho osservato che la maggior parte della gente preferisce i micro servizi su ESB. Penso che la ragione possa essere che ESB ha una propria curva di apprendimento / DSL / Prodotti a pagamento, ma i micro servizi non sono altro che servizi divisi in componenti restful più piccoli mantenibili. Quindi nessuna curva di apprendimento e nessun prodotto a pagamento.