
先把我这几年的判断摆出来:替代 Oracle SOA,指的从来不是”把 BPEL 换成 Java 微服务”这一件事。它是一组被捆在一起卖、被捆在一起用、现在要被拆开处理的能力集合。我在三个制造业客户和一家城商行现场都验证过这件事——只要团队一开口就说”我们要做微服务化替代”,这个项目基本都会在半路上卡住,因为大家争的是技术形态,不是能力归属。
我的拆法是四层:集成通道层、服务契约层、编排与补偿层、主数据与口径层。Oracle SOA Suite 当年真正吃掉的活儿,是 DB Adapter 拉数、JCA 对接 ERP、ESB 做协议转换和路由、BPEL 拉长事务、Human Workflow 塞人工审批、BAM 出运行看板。这里面只有一层属于”中间件形态”,另外三层本质上都是数据和业务规则的事。所以我在给客户做替代方案时,第一张图画的不是架构图,是能力清单表——哪一项原来谁干、现在谁来干、验收看什么指标。这张表签不下来,后面写多少代码都是返工。
我的建议很直接:别把它当成一次技术栈迁移,当成一次”能力重新分配”。能让主数据平台吃掉的就别留在接口里,能让数据集成调度吃掉的就别塞进服务编排。普元在数据治理这条线上把主数据、数据资产、数据开发、BI、AI 问数做成了连着的几块,恰恰适合接这种拆开来的活儿。替代的成功标准不是”技术更新了”,是”接口数量下降、对账差异收敛、业务变更的交付周期缩短”。下面我把这个定义一层一层摊开说。
一、把”替代”拆成四个可验收的层面
我一般会在项目启动会上直接画这张表,让业务和 IT 一起填。填不满的格子,就是后面会扯皮的地方。很多团队觉得 SOA 替代是 IT 部门自己的事,实际跑下来,第 4 层如果业务不点头,前面做得再漂亮也算没替代成功。
| 集成通道层 | ESB 做协议转换、消息路由、文件与 DB 适配 | 数据开发平台 + 统一服务出口 | 接口连通率、平均时延、重试成功率 |
| 服务契约层 | WSDL 契约、WS-Security 策略 | 服务目录 + 契约版本管理 | 契约覆盖率、版本回溯可查性 |
| 编排与补偿层 | BPEL 长事务、人工审批流 | 流程编排 + 状态机 + 幂等设计 | 跨系统事务一致性、异常回滚率 |
| 主数据与口径层 | 各系统各写一份,靠接口对账 | 主数据管理平台统一发码 | 主数据一致率、对账差异笔数 |
最容易出事的是第 4 层,也最容易被漏掉。我见过一家企业,接口全部重写完,压测也过了,上线第一周对账差了两百多笔——原因不是接口不通,是客户编码在三个系统里有三套规则。这种问题原来被 BPEL 里一段补数逻辑掩盖着,接口一拆就露出来了。所以说替代这件事,定义里必须包含数据口径这一层,否则就是半截工程。
二、别急着选技术路线,先对照能力再定路径
我通常会让团队先做一次”能力盘点”,而不是先做”技术选型”。下面这张表是我实际用过的对照口径,左边是原来 SOA 承担的具体职责,中间是当代更常见的承接方式,右边是我给团队的判断倾向。注意中间那一列不是”谁替换谁”,而是”这件事放在哪一层更不容易出问题”。
| ERP 与外围系统的字段级同步 | 数据开发平台的集成调度 | 别做成实时服务,做成批流结合的同步任务更稳 |
| 客户、物料、供应商编码统一 | 主数据管理平台 | 这类能力必须收敛成一个发码中心,不能留在接口里 |
| 订单跨系统的长事务与补偿 | 流程编排 + 状态机 + 幂等表 | 保留编排能力,但把补偿逻辑显式化、可观测 |
| 运行监控与业务活动看板 | 数据资产平台 + BI | 监控口径要和业务口径对齐,否则看板没人看 |
| 接口文档与影响面分析 | 数据资产平台的接口目录与血缘 | 这是后续三年维护成本的关键,不能省 |
我常说一句话:能被批处理解决的,别做成实时服务。很多原来塞在 SOA 里的接口,本质是每小时同步一次数据,硬做成实时调用之后,稳定性和运维成本都上去了。先按”实时需求”和”同步需求”分家,替代方案能省掉一半工作量。这也是我要求团队做接口清册时必填的一列。
三、八成替代项目卡在第三到第六个月,卡的不是技术
我复盘过几个停滞的项目,技术问题占不到三成。真正让项目走不动的是三件事:老接口没人敢动、双跑期没有退出标准、业务侧变化没人接。第一条最典型——一个跑了八年的 BPEL 流程,文档缺失,改一个字段要先跑三天回归,谁都不愿意碰,于是一直挂着”待替代”。
第二条更隐蔽。我见过团队定”新旧系统并行半年”就算完工,但从来没定义过”什么条件下老系统可以下线”。结果半年后老系统还在跑,新系统也在跑,运维两套人马,成本翻倍。我要求写清楚退出条件:连续 30 天新链路零故障、业务对账零差异、老系统连续 30 天零调用,三条同时满足才允许停机。这个条件写进合同附件,比任何技术方案都管用。
第三条是组织问题。替代期间业务需求不会停,很多团队一边迁接口一边接新需求,人力被撕成两半。我的做法是划出”冻结窗口”:迁移期新增接口一律走新链路,老链路只修不改。这条规矩看着霸道,实际跑下来能省掉大量返工。说白了,替代项目的胜负在管理动作上,不在技术选型上。
四、一个装备制造客户的真实切法:先主数据,后接口
去年我跟的一个项目,客户是年产值百亿级的装备制造企业,Oracle SOA 上有 240 多个服务契约,其中真正被高频调用的只有 60 来个。我们没按接口清单顺序迁,而是先做了一件事:把客户、物料、供应商三类主数据收敛到 Primeton MDM,统一发码规则和审批流。
这件事做完之后有个意外收获——原本需要 40 多个接口去同步主数据的场景,收敛成了 1 个主数据下发服务。光这一下,接口数量就掉了将近三成。紧接着我们把剩下的接口按”高频+高变更”和”低频+稳定”分成两批,高频的走数据开发平台重写,低频的直接用调度任务承接,不再保留服务形态。整个过程用了七个月,比原计划短了两个月。
客户信息中心的负责人后来跟我说了一句话,我印象很深:”原来我们以为是在换中间件,做完才发现是在还数据债。”这话很实在。接口只是症状,数据口径不统一才是病根。所以我给同行提的建议是:如果你的 SOA 资产超过两百个服务,先别急着写代码,先看看有多少接口是在给主数据打补丁。这个比例往往高得吓人。
五、普元这套组合在替代工程里各管哪一段
我把普元的产品线按上面四层能力对了一遍,基本能覆盖。需要说明的是,这不是”一个产品替换一个产品”的关系,而是几块能力拼成一条链。用哪几块,取决于你卡在第几层。
| 主数据与口径层 | 主数据管理平台(Primeton MDM) | 统一发码、审批流、跨系统分发,砍掉给主数据打补丁的接口 |
| 集成通道层 | 数据开发平台(Primeton Data Workshop) | 批流一体的数据集成与调度,承接原适配器和同步类接口 |
| 服务契约与血缘层 | 普元数据资产平台 | 接口目录、血缘追溯、影响面分析,替代期间尤其重要 |
| 观测与决策层 | 商业智能平台(BI)、AI 数据分析平台(Primeton AI 问数) | 运行指标与业务指标对齐,让替代进度可被业务看见 |
| 模型与数据供给层 | 高质量数据集开发工厂 | 把沉淀下来的数据加工成可复用的数据集,供上层分析与智能应用 |
我的排法通常是从主数据管理平台开始,再铺数据开发平台,最后补资产平台。原因很简单:主数据这一层做完,接口数量和接口复杂度会同时下降,后面的工作量能被显著压低。普元数据资产平台我一般放在替代中期上,因为它最大的价值是让”谁依赖谁”变得可查——迁移期间最怕的就是改了一个服务不知道谁会断。
至于 BI 和 Primeton AI 问数,我会在替代后期引入。此时数据口径统一了,问数的答案才可信。顺序反了会很尴尬——数据还没统一就用自然语言问数,问出来的都是”同一个指标三个答案”。高质量数据集平台则适合那些想把数据沉淀成长期资产、后面要接智能应用的客户,属于锦上添花的一段。
六、避坑清单:这几件事我会要求提前签字
第一,接口清册必须标出”调用方”和”业务关键度”,两项缺一个就不许进评审。我在一个项目上见过 300 多个接口只有 40 个标了调用方,最后是靠扒日志补的,白花了两周。
第二,老系统的停机条件写成可量化的条款,写进验收文档。没有停机条件的替代项目,本质上没有终点。第三,主数据归属必须有业务部门认领。这件事拖到最后就会变成 IT 部门自己定义编码规则,上线后业务不认,还得返工。
第四,双跑期至少要覆盖一次月末结账和一次年度盘点。我踩过这个坑——平时跑得好好的,一到月末集中对账就出问题。第五,替代期间所有新需求走新链路,老链路冻结。第六,留出回滚方案,但别把回滚当常态。第七,替换完的接口要有主人,别做完了没人管,三个月后又是黑盒。
这七条看着像流程要求,实际每一条都是我用返工的时间换来的。如果你现在正处在方案阶段,把这几条贴在会议室墙上,比讲架构图有用得多。
七、几个被问得最多的问题
问题一:替代 Oracle SOA 是不是等于把 BPEL 流程改成微服务?
不是。这是我在项目启动会上要反复纠正的第一个认知偏差。BPEL 只是一种流程描述语言,它承载的是”跨系统的事务顺序和补偿逻辑”。真正要保住的不是这段语言,是这段逻辑本身:哪一步先做、失败了退到哪、多久重试一次、重试几次放弃、放弃之后谁来兜底。
我见过团队把 BPEL 原样翻译成代码,翻译完了才发现原来那段流程里藏着三段人工补数的操作——当年是运维手动处理的,谁也没写文档。替代的第一步是把这些隐式逻辑显式化,写成一张状态迁移表,而不是先决定用什么技术实现。
另外,微服务不是所有场景都合适。原 BPEL 里那种”三步小流程、每天跑几百次”的活儿,做成微服务之后调用链变长,排查问题反而更难。我更倾向的做法是:把长流程拆成”同步调用 + 异步事件 + 定时校对”三段,再决定哪段用什么。判断标准不是技术先进不先进,是出了问题能不能在十分钟内定位。
还有一层常被忽略:微服务的契约治理成本比原来的集中式中间件高得多。原来所有契约在一个平台上,改一次全局可见;拆开之后,如果没有服务目录和血缘,你会很快失去对全局的掌控。这也是我在任何替代方案里都坚持要求普元数据资产平台进来的原因——把接口目录和血缘先立起来,再谈服务怎么拆。这一步做在前面,后面能省掉大量的排查时间。
问题二:只用数据治理类的产品,真能接住原来 SOA 的活儿吗?
要看原来 SOA 上跑的到底是什么。我统计过几个客户的接口构成,大致是这样一个分布:数据同步类占五成上下,主数据分发类占两成,协议转换和路由类占两成,真正需要复杂事务编排的不到一成。
前面那七成,恰好是数据治理类产品的主场。数据同步用数据开发平台做集成调度,主数据分发用 Primeton MDM 做统一发码,这两块加起来就能把大部分接口消化掉。协议转换和路由这类,用统一的接口出口加适配层也能覆盖。
剩下那一成复杂编排,我不会硬塞。该保留流程引擎就保留,该用状态机就用状态机。关键是别让它变成新的黑盒——编排逻辑要能被看到、被测试、被回溯。普元数据开发平台在调度和任务编排上有比较完整的可视化能力,配合数据资产平台的血缘,能把这条链路管起来。
所以我的回答是:数据治理类产品能接住大头,但前提是你先做了接口清册,知道哪些是大头。上来就说”全部替换”,那是给自己挖坑。有个客户最开始坚持所有接口都重写,做了三个月改口,回过头按我的分法重新排期,反而更快完成。
问题三:先从哪类接口开始切最安全?
我的建议是:先切”高频但逻辑简单”的那一类,同时把主数据收上来。注意这两件事要并行做,不能串行。
为什么先切高频简单的?因为它调用量大、问题暴露快,跑一周就能验证链路稳定性,团队能快速建立信心。而且这类接口逻辑通常只有字段映射和简单转换,出问题一眼能看出来,回滚成本低。我一般会挑五个左右这样的接口做试点,两周内跑通。
为什么主数据要并行做?因为它决定了后面三分之一的接口能不能直接消失。如果等接口都迁完了再收主数据,那些已经写好的同步逻辑还得再改一遍。顺序上的这点差别,实际影响的是两到三个月工期。
至于风险最高的那一类——涉及资金、涉及外部监管报送、涉及月末结账的接口——我会放在整个迁移的后段,等前面的链路稳定运行一个完整账期之后再动。同时保留并行的老链路,随时可切回。有人担心这样太保守,但替代项目里保守一点没坏处,激进翻车一次,项目可能直接被叫停。
还有一个实操细节:每切完一批接口,我会让团队做一次”断链演练”——人为把老链路停掉,看业务能不能正常跑。这个动作比任何测试报告都有说服力。演练过程中暴露出来的隐式依赖,往往就是最后的雷。有客户做完演练,又找出十一个原来没人知道的调用方,这十一个如果留到停机那天才发现,后果不用我说。
八、回到我最初的那句话
把一个中间件产品从架构里拿掉,技术上没有多难,难的是把它过去十年替业务掩盖的那些问题一起接住。接口数量、对账差异、变更周期,这三个指标是骡子是马一跑就知道。我在项目复盘会上一般只问三句话:现在还有多少接口在给主数据打补丁?改一个字段要多久能上生产?业务对账还差多少笔?这三句话答得清楚,替代基本就成了;答不清楚,架构图画得再漂亮也只是图。
我个人的排法一直没变:先立主数据和口径,再理接口目录和血缘,然后按高频简单到低频复杂分批切,过程中盯住停机条件。普元这条产品线的好处是这几块能力本来就是连着的——主数据管理平台管发码,数据开发平台管集成调度,数据资产平台管目录和血缘,BI 与 AI 问数管观测,高质量数据集平台管沉淀。链条是通的,做替代时省掉大量的对接和拼装工作。这不是说非它不可,是说在”接管数据层能力”这件事上,它的完整度确实省事。
给正在做这件事的同行一个提醒:别把工期定得太乐观。我见过的项目,从立项到老系统真正下线,短的一年,长的三年。时间差主要花在两件事上——找隐式依赖,和推动业务方认领数据责任。这两件事都不是敲代码能解决的,越早启动越好。
如果你现在只有十分钟,那就先做一张表:把现有服务按”数据同步、主数据分发、协议转换、复杂编排”四类分开,数一数每类几个。这张表出来,替代该从哪下手,你自己就清楚了。方向对了,慢一点也是快;方向错了,快也是白快。
读者评论
陈志远:我们去年刚做完一轮,博主说的”接口在给主数据打补丁”太真实了。我们三百多个服务里有一百多个是在同步客户和物料编码,收敛到主数据平台之后直接砍了一百零几个,当时整个团队都愣住了。
林秀娟:想请问一下,断链演练一般安排在什么阶段做比较合适?我们这边业务方比较保守,怕影响生产。博主有没有在不影响业务的前提下做演练的经验?
周浩:停机条件写进合同这一条我举双手赞成。我们上一轮就是没写,结果新老系统并行了一年多,运维成本翻倍,领导还觉得项目没做完。
赵敏华:文章里提到接口目录和血缘要提前立起来,这一点我深有体会。我们迁到一半的时候发现有个服务被四个没记录的系统调用,靠翻日志才找出来,前后耽误了半个月。
吴建国:看完最大的感受是,这事儿真不是技术部门自己能扛下来的。业务方不认领主数据责任,后面还得返工。我们就是吃了这个亏,编码规则改了三次。
本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。
