如果你在IT领域工作,或者参与有关采购IT服务的决策,有时你可能会为近年来涌现的大量新术语而感到困惑,这种情况完全可以理解。

特别是在你希望将单体应用程序和传统系统进行现代化改造,使它们能够在现代数字环境中高效运行时,这种困惑可能更加明显。

当涉及到改造这些传统系统时,通常有两种架构选项可供选择:面向服务的架构(Service-Oriented Architecture,简称SOA)或微服务架构风格。

那么,这两种选项之间的主要区别是什么?更重要的是,如何确定哪种架构更适合你的组织?

微服务与SOA之间的差异

在比较SOA与微服务时,显而易见的首要问题是需要充分理解每个术语的含义,为做出决定建立可靠的基础。

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

面向服务的架构(Service-Oriented Architecture)与微服务(Microservices)的选择插图
SOA,面向服务架构

顾名思义,面向服务的架构(SOA)关注的是你使用和提供的服务,是一种构建软件环境以及软件的方法,涵盖了企业级开发的所有方面。

因此,面向服务的架构的直接优势在于,开发人员可以重用企业现有应用程序中的组件。

SOA允许在整个组织内开发一系列模块化的Web服务,这些服务可以轻松相互通信,从而支持所有应用程序的运行。

SOA的一个显著特点是,它支持在不同平台之间的通信协议(例如微软的Azure或亚马逊的AWS),以及不同编程语言(例如通过JMS或Java消息服务在Java中)之间的通信。

SOA的结构基于减少应用程序之间耦合的理念(也称为解耦或松耦合)。即使两个应用程序完全不同,它们仍能够相互通信。

这些特性反过来可以提高业务功能,并简化新软件和软件架构的开发过程。

如果你选择采用SOA路径,你会发现有如下四种不同类型的SOA服务可供利用:

  1. 功能型服务(Functional):这是与所有业务相关应用程序相关的一般性SOA服务。
  2. 企业型服务(Enterprise):当你需要实现特定功能服务时使用此服务。
  3. 应用型服务(Application):由DevOps团队用来开发和部署新应用程序。
  4. 基础设施型服务(Infrastructure):用于非功能性特性,通常用于身份认证和其他安全方面的功能。

微服务详解

下图展示了微服务架构的结构化方式。

面向服务的架构(Service-Oriented Architecture)与微服务(Microservices)的选择插图1
微服务架构

最简单地理解微服务的方式是将其看作是对新的或现有SOA(面向服务的架构)的扩展。

通过API(应用编程接口),微服务架构模式中的不同组件相互通信。每个微服务都聚焦于一个单一的业务领域或功能,并为该功能组织了一个专属的独立网络。

利用微服务,你可以组合多个组件来创建更复杂的应用程序和更高级的服务。采用微服务架构和中间件对传统系统进行现代化改造,可以将应用系统设计为单一用途的模块,这些模块大多数都是彼此之间独立的。

微服务的结构非常简单直接。所有应用程序都被分解成具体的功能和目标。如果你观察上图,可以看到一个电商应用是如何基于微服务构建的,其中包含了该应用的三个核心功能:

  1. 账户与财务(Accounts/Finances)
  2. 库存与库存管理(Inventory and Inventory Management)
  3. 物流与运输(Logistics and Shipping)

在微服务架构中,每一个功能都拥有自己独立的组件。这些组件也有各自独立的数据存储。

这是微服务架构的一个基本原则:每一个资源都必须是一个独立的模块,其可以通过消息系统与其他功能组件进行通信。

微服务架构能够显著简化开发人员的工作,开发人员不仅可以轻松更新代码库,还可以实现系统扩展而无需改动不同的代码组件。

微服务允许团队选择并创建各自独立的技术栈和边界上下文,用于组件共享,然后通过API连接所有组件。

此外,使用微服务架构时,容错能力和负载均衡水平较高,因为每个组件都是完全独立管理的。

基于微服务开发或使用的应用程序通常会部署在云上,以提供更高的运行效率和更具成本效益的解决方案。

面向服务的架构(SOA)和微服务的优势

在决策的第二阶段,需要全面考察使用微服务和SOA的优点,无论是从总体角度还是根据你的业务需求和模式直接分析。

SOA的优势

  1. 促进协作
    在大型组织中,一个关键问题是由于孤岛效应(信息割裂),可能会出现沟通和协作问题,尤其是在业务部门与IT团队之间。

通过SOA,所有独立服务都以业务术语定义,这使得协作更加容易,并让业务的不同领域能够更好地与开发团队合作,以确保从业务流程和应用程序中获得更好的效果。

  1. 松耦合
    每个SOA服务都包含完成各自功能所需的所有代码和数据,服务接口提供了松耦合(又称解耦)的特性。

这减少了应用程序之间的相互依赖性,因为接口几乎不需要了解实际服务的具体实现细节。

  1. 项目开发一致性
    在SOA出现之前,将应用程序连接到相关数据,以及其他系统中的数据粒度与功能,是一个复杂的点对点集成过程。每次新的开发项目都需要重复这一过程。

SOA通过企业服务总线(ESB)使开发人员能够重用现有功能,并使不同项目的开发工作保持一致性。

  1. 易于维护
    你的IT管理人员都知道,软件的生命周期可能会因为维护(或替换)的高成本以及潜在的系统停机时间而变得复杂。

借助SOA,维护、更新或修改单个服务变得更加简单,而不会影响其他服务的功能。这种模块化特性使得IT人员可以更轻松地在SOA系统上进行工作。

微服务的优势

面向服务的架构(Service-Oriented Architecture)与微服务(Microservices)的选择插图2
  1. 简化流程采纳
    如果你选择使用微服务来对传统系统进行现代化改造,那么在更新技术栈时,采用新技术和流程会更加简单。这意味着你可以轻松扩展提供的应用程序,几乎不会遇到任何困难。将微服务与API结合使用,可以轻松实现技术栈的可扩展性。
  2. 增强错误容忍度
    在SOA架构中,企业服务总线(ESB)的使用可能导致一个错误扩大到应用程序的其他部分。

而在微服务架构中,错误容忍度更高。如果某个服务出现问题,仅会影响该微服务,其他服务仍能正常运行。同时,许多企业关注成本效率,并希望减少对Tibco ESB的依赖。

  1. 广泛的模块化支持
    微服务架构提供了广泛的模块化支持,可以让你的DevOps或IT团队部署新的独立应用程序,而不会影响架构中的其它部分。

这意味着开发人员可以添加新的模块,而无需对系统进行任何更改。此外,你可以按需随时添加新的功能和依赖项,自由度更高。

  1. 灵活且可独立运行
    微服务是基于云并原生支持的,允许开发人员构建和部署专为某一特定功能设计的独立应用程序。

这比其他选项提供了更多的灵活性。你的DevOps团队可以开发更敏捷、更具扩展性和更抗故障的应用程序来提供各种服务。

  1. 优化DevOps流程
    在应用程序或软件开发中,工作流速度通常至关重要。微服务允许你的应用开发团队与IT团队紧密合作,并通过去中心化的架构加速创新过程。团队可以更自由地控制技术栈,同时加快开发和发布的速度。
  2. 支持独立扩展
    如果你仍在使用单体系统,那么每次需要扩展应用程序中的某一组件时,通常需要整体扩展整个应用程序。而微服务则允许你识别需要扩展的服务或组件,然后单独对其进行扩展,而不会影响其他部分。



面向服务的架构(Service-Oriented Architecture)与微服务(Microservices)的选择插图3

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2025/07/12/service-oriented-architecture-and-microservices/