我们目前正在考虑用可能的 ESB 或一些类似工具替换我们的一个应用程序,并正在寻找一些关于如何最好地解决这个问题的见解。
我们目前有一个独立的服务,它使用/交互不同的外部服务和数据源,其中一些通过 SOAP Web 服务交付,而另一些我们只使用数据库连接。此服务通过 SOAP 公开,我们有其他应用程序使用此服务但与它非常紧密耦合,现在我们还有其他应用程序需要使用一些外部服务并希望将其全部替换为 ESB 或某种 SOA 平台。
用 ESB 替换这个“外部”服务集成层的最佳方式是什么?我们正在考虑拥有一个“全局”合同/API,其中我们使用的所有服务都作为一个合同公开,我们使用的所有可能的操作和数据结构都公开在一个命名空间下,这是最好的方式吗?接近这个?如果是这样,是否有任何工具可以帮助我们自动化这个过程,或者我们基本上必须手工制作这个合约/API?这也意味着对于底层服务/API 的任何更改,我们也必须更新这个新的 API。
如果不是,那么我看到的另一个选择是基本上使用“ESB”作为“代理”层,在其中我们所有的源都按原样公开,所以我们最终会得到几个不同的“合同”/ API 端点,但是我真的看不出这其中的价值。
还考虑到上述情况,什么是这项工作的最佳工具?一个成熟的 ESB 是不是矫枉过正,还是我们使用 Apache Camel 或 Spring Integration 之类的东西更好地滚动我们自己的东西?
更多细节:
我们目前正在整合超过 5 种不同的外部服务,未来还会有更多。
目前只有几个应用程序在使用我们当前的应用程序,但未来其他几个应用程序/系统将需要使用其中一些外部服务。
我们目前在这些服务之间使用单一的通信方法 (SOAP),但某些应用程序将来可能会使用 pub/sub 消息传递,尽管 SOAP 仍将是使用的主要协议。
我是 ESB 集成的新手,所以如果我误解了很多这些技术以及它们要解决的问题,我提前道歉。
任何帮助/提示/指针将不胜感激。
谢谢。