SOA(面向服务的架构)

menu icon

SOA(面向服务的架构)

探索 SOA(面向服务的架构),这是应用程序开发和集成发展的重要阶段。

什么是 SOA(面向服务的架构)?

SOA(面向服务的架构)定义了一种可通过服务接口复用软件组件的方法。 此类接口会使用通用的通信标准,这些标准能够快速合并到新应用程序中,而不必每次都执行深度集成。

SOA 中的每项服务都包含执行完整的独立业务功能(例如,检查客户信用、计算每月还贷额或处理抵押申请)所需的代码和数据集成。 这些服务接口提供松散耦合,这意味着,即使基本或根本不知道如何在底层实施集成,也可以调用这些接口。 使用 SOAP(简单对象访问协议)/HTTP 或 JSON/HTTP 等标准网络协议来公开服务,以便发送有关读取或更改数据的请求。 服务的发布方式可以让开发人员快速找到并复用这些服务以组装新应用程序。

此类服务可从头开始构建,但创建方法通常为将原有记录系统中的功能作为服务接口公开。

因此,SOA 代表了过去几十年中应用程序开发和集成发展的重要阶段。 在 20 世纪 90 年代末 SOA 出现之前,将应用程序连接到其他系统中包含的数据或功能需要进行复杂的点对点集成 - 开发人员必须为每个新开发项目部分或全部重新创建这种集成。 如果通过 SOA 公开这些功能,就无需每次都重新创建深度集成。

请注意,虽然 SOA 和最新的微服务架构有许多共同点,但它们只是松散相关,实际上是在不同的作用域内运行,如下文中所述。

什么是 ESB?

ESB(企业服务总线)是一种模式,集中式组件可通过这种模式执行与后端系统的集成,然后将这些集成作为服务接口提供。 它会转换数据模型、深度连接、路由机制以及可能包含的多个请求,并将它们作为单个服务接口提供,以供新应用程序复用。 ESB 模式通常是使用特别设计且非常适合上述功能的集成运行时和工具来实现的,因此可以确保最佳生产力。

从理论上讲,您可以在不使用 ESB 的情况下实施 SOA,但每个应用程序所有者都必须通过自己独有的方式来公开服务接口,这就需要完成大量工作(即使接口最终可复用也不例外),并且在未来会带来巨大的维护挑战。 实际上,ESB 最终被认为是所有 SOA 实施都包含的事实元素,以致于有时将这两个术语作为同义词使用,从而造成了混乱。

阅读“ESB(企业服务总线)简介”以了解有关 ESB 的更多信息。

SOA 的优势

与它之前的架构相比,SOA 为企业带来了巨大的好处:

  • 提高业务敏捷性并缩短上市时间:无需重写和重新集成每个新开发项目,而是通过可复用服务接口组装应用程序,因此极大地提高了效率,让开发人员能够更快地构建应用程序以应对新的商机。
  • 在新市场中利用旧功能的能力:通过精心设计的 SOA,开发人员可以轻松地将功能“锁定”在一个计算平台或环境中,并将其扩展到新的环境和市场。 例如,许多公司已使用 SOA 将基于大型机的财务系统的功能公开到网上,让客户能够以自助方式使用流程和信息,而在以前客户只能通过与公司员工或业务合作伙伴直接互动才能访问这些流程和信息。
  • 改进业务与 IT 之间的协作:在 SOA 中,可以用业务术语(例如,“生成保险报价”或“计算资本设备投资回报率”)来定义服务。 这样,业务分析人员就可以在重要洞察(例如,服务定义的业务流程的范围或者更改流程对业务的影响)方面与开发人员更有效地合作,从而获得更好的成果。

SOA 示例

到 2010 年,几乎每个行业的领先公司都已全面实施了 SOA。 例如:

  • Delaware Electric 公司通过转为使用 SOA 集成以前彼此不通信的系统来提高了开发效率,在国家规定的五年电费冻结期内帮助该公司保持了偿付能力。
  • Cisco 公司采用了 SOA,通过将订购流程作为服务(可供 Cisco 的部门、并购的公司和业务合作伙伴整合到其网站中)公开,确保其产品订购体验在所有产品和渠道之间保持一致。
  • 费城的 Independence Blue Cross (IBC) 公司实施了 SOA,从而确保了处理患者数据的各方(IBC 客户服务代理、医师办公室、IBC 网站用户)使用的是相同的数据源(“单一真相版本”)。

SOA 与微服务

行业专家已发布了大量文章(包括印刷版和数字版)来比较 SOA 与微服务,并定义了这两者的微妙关系。 就本文而言,这两者的主要区别在于组件的耦合和使用范围:

  • SOA 是企业范围内的概念。 凭借 SOA,可以通过松散耦合的接口公开现有应用程序,每个接口对应于一个业务功能,从而使扩展企业某个部分中的应用程序可以复用其他应用程序中的功能。
  • 微服务架构是应用程序范围内的概念。 凭借微服务架构,可以将单个应用程序的内部结构分解成若干个可单独更改、缩放和管理的小块。 由于它没有定义应用程序的通信方式,因此我们还是改为使用 SOA 提供的企业范围的服务接口。

随着虚拟化云计算、敏捷开发实践和 DevOps 的兴起,微服务架构应运而生。 在这些情况下,微服务的主要优势来自组件的完全去耦,因为这可以简化并改善以下方面:

  • 开发人员敏捷性和生产力:利用微服务,开发人员可以将新技术只整合到应用程序的某一部分中,而不会将其更新到该应用程序的其余部分中。 任何组件都可以独立于其他组件进行修改、测试和部署,从而缩短了迭代周期。
  • 可伸缩性:微服务可以最大程度地利用云可伸缩性的优势 - 任何组件都可以独立于其他组件进行扩展,以最快的速度响应工作负载需求并最有效地利用计算资源。
  • 弹性:由于微服务的去耦特性,一个微服务的故障并不会影响其他微服务。 每个微服务都可以达到自己的可用性要求,而无需让其他组件或整个应用程序达到最高的通用可用性要求。

要深入了解 SOA 和微服务之间的差异,请参阅“SOA 与微服务:有何区别?

就像微服务架构可以在应用程序设计中提高敏捷性、可伸缩性和弹性一样,这些相同的技术也可以应用于集成。 这一点很重要,因为随着时间的流逝,高度集中的 ESB 模式及其相关的集中式集成专家团队可能会成为瓶颈。 借鉴微服务的原理,我们可以将 ESB 分解为更细粒度的分散式集成。 这是敏捷集成的主要前提之一。

SOA 与 IBM Cloud

随着贵公司将 IT 基础架构转向混合云方法,您很有可能会将各种工作负载(包括基于 SOA 的工作负载)转换为更轻便、更灵活的云部署模型。 IBM 是 SOA 的倡导者之一。IBM Cloud 产品和服务可以利用您现有的 SOA 投资并将其扩展到云端。

采取下一步行动:

无论核心应用程序或数据库位于何处,SOA 都能够使服务可在不同渠道中使用,这有助于您的组织在上云之旅对应用程序进行现代化时充分利用投资。

立即开始使用  IBM Cloud 帐户。