SOA 没死,只是改了名

简介: 闺蜜小美发来她公司的架构图,问我这算什么架构。我说 SOA,她愣了:这词不是十年前的吗?这篇讲清单体、SOA、微服务的分界,以及为什么一半以上的企业现在跑的就是 SOA——只是没人这么叫它了。

上周闺蜜小美给我发来一张她公司的架构图,问了个特别朴素的问题:你帮我看看,我们这套算什么架构?

我看了十秒,回她两个字:SOA。

她愣住了。这个词她听过,但印象里它和 ESB、SOAP 埋在同一层土里,属于十年前的技术杂志。一套 2026 年还在生产上跑的系统,怎么会是一个「过时」的架构?

这个问题值得单独写一篇。因为按我这二十年看过的企业系统,答案适用于其中一大半:你们公司现在跑的,很可能也是 SOA,只是没人这么叫它了。

先看图

细节我重新画过,业务也换掉了,你可以把它想象成一家连锁餐饮品牌的数字化体系:

【此处插入配图:连锁餐饮四层架构示意图】

从上往下四层:

最上面是终端,四个入口对着四类人。顾客用的点餐小程序、门店用的收银出餐端、骑手用的配送 App、加盟商用的管理端。

第二层管进门,小程序开放网关、第三方服务配置(支付、地图这些)、统一认证(就是图里的 SSO:登录一次,四个端都认你)。

第三层是正事所在,三个大家伙并排站着。门店运营中台(里面装着营销活动、菜单商品、规则引擎、会员数据),旁边是供应链系统,再旁边是财务系统。

最底下是数据平台和基础设施:数据库 MySQL、缓存 Redis、消息队列 MQ、搜索引擎 ES,这些老朋友。

如果你只能带走这张图的一个细节,带走第三层角落里那行小字:对等系统 · 集成协同(非上下级)

就这一行字,暴露了整套系统的血统。

为什么这是 SOA

SOA,Service-Oriented Architecture,面向服务的架构。教科书定义拗口,人话版本就三句:

把公司按业务能力切成几个大系统。每个系统管自己的事、守自己的数据。系统之间靠接口和消息说话,谁也不是谁的爹。

拿这三句对一遍上面的图。

按业务能力切分:中台管门店运营和营销,供应链管食材从采购到配送,财务管钱。切分依据是业务的天然边界,跟用什么技术栈没关系。

各守各的数据:供应链的库存数据、财务的对账数据、中台的会员数据,各在各的库里。中台想知道今天鸡腿还剩多少,不能伸手进人家数据库查,得调接口。接口的学名叫 API,说白了就是每个系统对外开的服务窗口:你在窗口排队问,我在窗口答,后厨不许进。

对等协作:那行小字写得明明白白,「非上下级」。财务不是中台的子模块,中台也不归供应链管,三个系统平起平坐,用 API 和 MQ 互通有无。

三条全中。这就是 SOA,而且是教科书都未必讲得这么典型的活样本。

那为什么大家觉得 SOA 死了

因为死掉的是它的装备,不是它的思想。

十几年前企业上 SOA,标配是一根 ESB(企业服务总线):全公司系统之间说的每一句话,都必须经过这根总管道,由它转发、翻译、排队。系统间对话用的协议叫 SOAP,一种把每句话都裹上三层信封的老式文体;信封材料是 XML,就是用尖括号标签把数据一层层包起来的那种文档;接口长什么样,还得用 WSDL 再写一份同样是 XML 的说明书。于是一个字段改动,三份文件跟着改。再配上某大厂的 SOA 全家桶,一年授权费按百万计。

这套装备笨重、昂贵、供应商绑定,后来确实死了。死得不冤。

但你看上面这张图,没有 ESB。系统之间就是点对点的 API 直连,加上 MQ 帮忙传话。MQ 是消息队列,你就当它是各系统共用的传达室:发消息的把信放下就走,收消息的有空过来取,谁也不用干等谁。为什么不上总线?系统一共三四个,拉根总线纯属给自己修高架桥,过的车还没桥墩多。

我把这种形态叫「民间 SOA」:思想是 SOA 的思想,装备是够用就好的装备。它没死,它遍地都是,只是不再自称 SOA。

单体、SOA、微服务,三个词各管一段

真正有意思的地方在这里。我问小美,你们那个中台内部是什么形态?

她说,单体,集群部署,代码做了分层和模块化。

所以你看,这家公司同时活在三个词里:

中台内部,是模块化单体。一个应用复制多份一起跑,前面站个 Nginx 当迎宾,把涌进来的请求往各份实例上摊匀,这个动作叫负载均衡。

公司层面,是 SOA。几个大系统按业务能力划分,对等集成。

微服务?一个都没有。

这三个词经常被当成进化链,好像单体是原始人,SOA 是古代人,微服务才是现代人。实际上它们管的是不同粒度的问题。单体和微服务说的是「一个系统内部怎么组织」,SOA 说的是「多个系统之间怎么协作」。微服务的本质,是把 SOA 的思想从公司级下沉到了系统内部,切得更细、部署更独立、数据库也一拆到底。

所以「你们公司是不是微服务架构」这个问题,经常问错了层。正确的问法是两个:你们公司层面几个系统、怎么协作?你负责的系统内部,拆没拆、拆到多细?

什么时候该待在哪个位置

小美的团队不到十个人。我给她的判断是:中台内部不拆微服务,是对的,不是落后。

拆微服务的代价是实打实的:分布式事务、链路追踪、独立部署的运维成本,每一样都要人力去喂。不到十个人的团队拆出二十个服务,等于每人背两三个服务的运维,业务还写不写了?

什么时候拆?判据一句话:哪个模块的变更频率或者资源需求,明显偏离了其他模块,就先把哪个独立出去。比如饭点的秒杀发券,流量是别的模块的几十倍,它就该第一个搬出去单过。图里那个虚线框的「发券服务」,就是已经单过的样子。

架构没有先进和落后,只有匹配和不匹配。这句话谁都会说,但落到具体判断上,就是上面这种一句话判据。

所以,SOA 过时了吗

词过时了,思想一直在续命,而且每隔几年换一个马甲。

微服务,是 SOA 在单个系统内部的续集。中台,是 SOA 思想的中国变体,把「按业务能力沉淀服务」推到了组织层面。这两年流行的 API-first(先把接口契约定好,再动手写实现)、平台工程(把公司的基础能力做成内部产品,各团队自助取用),骨子里还是那句话:把能力包成服务,给需要的人调用。

最新的一轮马甲你可能也见过了。给大模型接工具的 MCP 协议,干的事情是把企业能力包成标准接口,开放给一个新的调用方。这个调用方不是浏览器,不是小程序,是 AI。你可以把 MCP 理解成 AI 界的 USB 接口:工具做成标准插头,哪个模型来了都能插上就用。历史不重复,但是押韵。

回到开头。小美后来把这套讲法用在了一次述职里:公司层面 SOA,几个系统对等集成,没上 ESB 是因为系统少;我的中台是模块化单体加集群;微服务没拆,团队规模摆着,但什么时候该拆、先拆哪个,判据我有。

能把自己系统在谱系上的位置讲清楚的人,不管在会议室还是面试桌上,都比满嘴新名词的人稀缺得多。过时的词有个隐藏用途:它专门用来鉴别不过时的人。

附:本文黑话小抄(收藏用)

黑话 全称 人话
SOA Service-Oriented Architecture 公司按业务能力切成几个大系统,对等协作
ESB Enterprise Service Bus 所有系统间消息必经的总管道,SOA 老装备
SOAP Simple Object Access Protocol 系统对话的老式文体,每句裹三层信封
WSDL Web Services Description Language 接口的 XML 说明书
XML eXtensible Markup Language 用尖括号标签层层包数据的文档格式
API Application Programming Interface 系统对外开的服务窗口
MQ Message Queue 系统共用的传达室,放下就走、有空来取
SSO Single Sign-On 登录一次,处处通行
MCP Model Context Protocol AI 界的 USB 接口,工具插上就能被模型用
相关文章
|
21天前
|
人工智能 缓存 API
Codex接入DeepSeek‑V4‑Flash实操指南:两套方案补齐识图能力完整保姆级教程
在AI编程Agent工具生态之中,Codex凭借强大的本地工程读写、代码修改、终端命令执行能力,成为开发者做项目调试、代码重构、问题定位的高频客户端。DeepSeek‑V4‑Flash作为一款高性价比文本大模型,拥有百万级超大上下文窗口,在Agent任务规划、代码生成、复杂逻辑推演场景表现突出,API调用成本低廉,非常适合作为Codex底层推理基座。但该模型属于纯文本推理模型,原生并不支持图像输入,当开发者把报错截图、UI界面截图、架构示意图、数据图表粘贴进会话,模型会直接提示无法解析图片内容,大量开发场景直接被阻断。
241 3
|
17天前
|
NoSQL 关系型数据库 MySQL
买了云服务器,不等于上了云
朋友小美说「我们那不就是几台机器吗,跟云计算有什么关系」。这句话比她自己以为的准。买了云上的机器和用上了云,中间隔着三层,多数团队停在第一层。她那几台常年低利用率的 8 核 32G,答案就在第三层。
|
12天前
|
人工智能 运维 安全
AI加持后2天时间将公司的运维自动化提高了一个层次
近期工作安排包括自动化测试、自动化运维、自动化运营和安全等一些工作。自己做产品、自己做设计、自己做开发、自己验收上线还是挺爽滴。 这其中工作简单的就是自动化运维。但我今天真正要讲的不是做了什么,或者用了什么技术,这些都不是核心问题。核心是面对一句话需求,要怎样去思考。
|
17天前
|
消息中间件 存储 SQL
IaaS、PaaS、SaaS 到底差在哪:买了托管数据库,也不等于不会丢数据
三个绕口令用一个租房类比就能说清:毛坯房、精装公寓、酒店。真正要紧的是后半段——买了云,服务商到底管到哪儿?有一条线到哪层都不动,你的数据和谁能访问它,永远是你的责任。所以「买了托管数据库就不会丢数据」是个误会,这两件事之间差着一次故障。
|
19天前
|
人工智能
AI 不会淘汰你,但会淘汰「只会点发送」的那类人
同事小李用 AI 半小时拼完周报,会议室里老板只问了一句: 「第三段数据从哪来的?错了你负责吗?」 小李愣住——他只点了发送,从没点开过链接。 这不是 AI 不行,是人把「会用 AI」和「能扛事」混成了一件事。
|
20天前
|
算法
每次开工都要重新付一遍的那笔钱
常驻位里的东西,每开一个新会话都要重新付一遍。我原以为常驻位就是一个规矩文件,把清单打出来才发现有五处入口,占大头的那一处还挺意外。
|
21天前
|
人工智能 JSON 自然语言处理
③ 约束显化:把隐含的语义假设变成显式规则
约束显化将设计师隐性判断(如"删除危险")转为 YAML 契约。AI 只消费显式输入,隐性知识必然衰减。契约通过"阻断、编译、拦截、入典"四项能力,自动译为 Prompt/Schema/Checklist/CI 四种格式,让设计意图在生成前注入,错误在出生前被机器拦截。
|
2月前
|
Java Nacos 数据安全/隐私保护
MSE + Nacos 实战:微服务治理从混乱到有序的完整路径
50+ 微服务上线后治理失控——配置变更导致 3 次 P0 故障,服务间调用链路无人能说清,限流降级全靠"祈祷式运维"。引入阿里云 MSE 微服务引擎 + Nacos 后,配置灰度发布让变更零风险,全链路拓扑实时可见,无损上下线消灭发布抖动,标签路由实现全链路灰度。本文以一个中型金融科技平台为案例,从痛点剖析、架构设计、Nacos 配置中心实战、MSE 服务治理实战、Spring Cloud Alibaba 集成到 5 个生产踩坑实录,完整呈现微服务治理从混乱到有序的落地路径。
|
2月前
|
监控 中间件 测试技术
API 版本管理三大核心实践:兼容旧版、平滑升级与灰度切流
本文聚焦微服务下API版本管理,围绕兼容旧版、平滑升级、灰度切流三大核心,结合Python(FastAPI)实战,详解URL/Header版本策略、向下兼容原则、适配层实现、废弃通知装饰器及灰度中间件,提供可落地的最佳实践。(239字)
320 3