Architecture 如果SOA已经死了,那么';谁来代替它?

Architecture 如果SOA已经死了,那么';谁来代替它?,architecture,soa,Architecture,Soa,如果这个问题很难回答,请原谅 背景:我们有几个在数据库中集成的内部应用程序。我们正在研究如何打破这种局面,似乎转向这样一种架构:每个应用程序都通过服务公开其功能,而不是调用其他应用程序的数据库,这是最有意义的。在我看来,这似乎是一个面向服务的体系结构。 当我四处寻找关于开始使用面向服务的体系结构的信息时,我看到了很多关于本文的讨论:。我也从马丁·福勒和吉姆·韦伯那里看到了这一点 问题: SOA是死了,还是只是围绕它的嗡嗡声 从面向服务的体系结构开始,使其尽可能精简和简单的最佳方式是什么 SOA

如果这个问题很难回答,请原谅

背景:我们有几个在数据库中集成的内部应用程序。我们正在研究如何打破这种局面,似乎转向这样一种架构:每个应用程序都通过服务公开其功能,而不是调用其他应用程序的数据库,这是最有意义的。在我看来,这似乎是一个面向服务的体系结构。 当我四处寻找关于开始使用面向服务的体系结构的信息时,我看到了很多关于本文的讨论:。我也从马丁·福勒和吉姆·韦伯那里看到了这一点

问题:

  • SOA是死了,还是只是围绕它的嗡嗡声
  • 从面向服务的体系结构开始,使其尽可能精简和简单的最佳方式是什么

    • SOA是一个聪明的想法,但围绕它的巨大宣传让人们写下了“SOA现在死了”。这是不正确的,正如“结构化编程已经死了,每个人现在都做面向对象编程!”这句话也不总是正确的:有时结构化代码是唯一的选择,但决策应该根据评估,而不是炒作。 谈到SOA时也是如此:有时你需要SOA,有时你需要服务。

      SAP的BusinessByDesign冒险就是SOA的“最佳”例子。花费了大量的时间和资源,甚至在使其正常工作,然后试图修复/关闭它之前就开始销售它

      我建议你不要让这些文章吓跑你或以任何其他方式影响你。考虑一下你的特殊情况:它能带来你的利益吗?如果是,那就去做吧。如果不是,那么行动的方向是显而易见的


      我相信SOA背后的思想基本上有一个乌托邦式的想法——创建各种各样的服务的世界,这些服务相互发现并互操作,以某种方式自动为您提供高级别的服务。但这正是人工智能/科幻小说的发展方向。你只能在一个非常特定的场景中实现一些接近的东西,你可以用算法方法编程。不仅如此。。。。嗯,在本世纪还没有……

      SOA还没有死。就像每一个好主意一样,它成为我们风景的一部分。“电子商务”这个词在早期是一个非常重要的概念,现在我们甚至不再使用这个词了。我甚至不再使用面向对象这个术语,它几乎是假定的

      当前的宣传是云计算。把一切都放在云端


      SOA的最佳实践是在需要的地方编写好的服务。过度使用SOA会增加延迟。如果需要在数据库中高效地执行代码,请在数据库中使用存储过程。如果一个好的本地服务也能做到这一点,你就无法打败它

      SOA是一个典型的例子,说明了当一个有用的模式(甚至不是一个特别新的模式)作为架构的基础被出售时会发生什么。如“集成企业的核心设计”

      中间件公司特别容易受到这类概念的影响,因为他们自己在尝试将产品和服务联系在一起时面临挑战,并且他们需要有潜在巨额预算的大创意


      从表面上看,一个单一的体系结构可以包含企业中所有软件的所有集成需求,这难道不令人怀疑吗?

      与其采用SOA,不如采用模块化设计,通过接口公开功能


      这是同样的事情,只是不那么令人讨厌。

      如果您要使用内部企业范围的应用程序,可以使用SOA实现它们。
      如果您正在创建一个面向web的应用程序(我指的是一个与新的开放堆栈oAuth、OpenID等配合良好的应用程序),那么就用WOA替换SOA。Stackoverflow.com就是这样一个例子

      我想说,它还没有死,但现在它已经落入了架构师的工具集中,因为现在人们已经知道它在哪些方面可以提供帮助,如果没有的话

      使用SOA与数据库对话是没有意义的,因为您希望该集成紧密且性能良好。但是在正确的地点使用它可以让你在组织的不同部分之间有一个干净的界面,并且可能允许你升级每个系统,而不考虑其他系统

      但在现实生活中,如果你的工资系统崩溃,每个人都会非常不高兴,仅仅因为你的应用程序可能在没有任何组件的情况下运行,并不意味着它不会影响你的系统


      创建只了解接口而不了解底层系统的系统是不可能的(我将用“工作良好且性能良好”来警告这句话)。以web浏览器作为一个有趣的例子,每个好的网站都从“他们使用什么浏览器并修复我的网站并利用功能xyz”开始。

      大多数SOA试图简化一个流程,该流程由使用较少的SOA子集(称为事件驱动的Arcitecture(EDA))更好地服务

      问题在于,SOA作为从Web服务构建的东西而被普及,这可能是实现SOA的底层技术的一个艰难选择。SOAP不必是,但通常用作临时耦合的RPC机制。即使在内部系统中,这也不能很好地扩展,更不用说跨系统或更糟糕的企业了

      您可以在SOAP的基础上构建EDA,但通常情况下,您最终会在SOAP的基础上使用一些临时技术。可能会有黑客攻击

      即使您已经克服了rpcweb服务的紧密耦合特性,您仍然存在合作伙伴之间的紧密绑定和WSDL版本控制问题

      您仍然可以使用XML有效负载和模式,但SOAP本身退化为完全在WSDL之外定义的有效负载“blob”周围相当愚蠢的传输包装器

      StackOverflow是一个基本上孤立的Web应用程序。最接近苏伊什·米格的事