中台建设最大的坑:把所有业务塞进一个架构
做过中台项目的人都有一个困惑:明明是按照"大中台、小前台"的理念来设计的,为什么落地后变成了"大中台、大前台、全公司一起骂中台"?
问题的根源往往不是技术选型错了,而是架构解耦没做对。很多企业的中台建设是一上来就开始画技术架构图——微服务怎么拆、数据库怎么分、消息队列用什么——但从来没有认真梳理过一个问题:你的业务到底有几种本质不同的运作模式?
某大型科技企业做了多年架构治理后总结出一个经验:企业的业务可以归纳为三大业务流,它们的运作逻辑、节奏和关注点完全不同,如果用同一套架构去承载,必然会出现"适配了这个,拧巴了那个"的情况。
三大业务流是什么
| 业务流 | 核心逻辑 | 典型场景 | 节奏 |
|---|---|---|---|
| 面向客户交易 | 快速响应客户需求,完成交易闭环 | 电商下单、在线支付、客户服务 | 高频、实时、强一致性 |
| 面向产品交付 | 按计划和里程碑推进产品从研发到上市 | 产品研发、项目管理、供应链管理 | 中频、阶段性、流程驱动 |
| 面向内部管理 | 支撑企业日常运营的规范化管理 | 人力资源、财务、行政、IT 服务 | 低频、规则驱动、合规要求高 |
这三个业务流的区别不是"功能不同",而是底层运作模式完全不同:
- 交易流追求的是快——毫秒级响应、高并发、不能丢数据
- 交付流追求的是稳——按计划推进、过程可追溯、变更可控
- 管理流追求的是规范——流程合规、审计留痕、权限严格
如果你把这三个流塞进同一套微服务架构,用同一种数据模型、同一种服务接口规范、同一种部署策略,结果必然是:交易流嫌交付流太重,交付流嫌管理流太慢,管理流嫌交易流不合规。
解耦的第一步:识别业务流的边界
架构解耦不是把系统拆成更多的微服务,而是让每个业务流有自己独立的架构空间。
识别方法:价值链分析
从企业的价值链出发,把每个业务活动归类到三大业务流之一:
| |
关键发现:三个业务流之间的交互点,才是架构解耦的关键。
比如"订单处理"(交易流)完成后需要触发"生产排期"(交付流),这个交互点不应该让两个流直接耦合,而是通过事件驱动的方式解耦——交易流发出一个"订单已确认"事件,交付流订阅这个事件并触发后续流程。
边界划分原则
| 原则 | 说明 |
|---|---|
| 独立演进 | 每个业务流可以独立升级、独立部署,不影响其他流 |
| 单向依赖 | 管理流可以依赖交易流的数据,但交易流不能依赖管理流的服务 |
| 事件驱动跨流 | 业务流之间通过异步事件通信,不直接同步调用 |
| 独立数据域 | 每个业务流有自己的数据存储,通过 ETL 或 CDC 同步共享数据 |
服务化中台的架构设计
基于三大业务流的解耦,中台的架构可以分为四层:
| |
共享服务层的设计要点
共享服务层就是"中台"的核心。但它不是一个大而全的单体服务,而是一组独立部署、独立演进、可被多个业务流复用的能力单元。
识别共享服务的标准:
| 标准 | 说明 | 示例 |
|---|---|---|
| 被 2 个以上业务流使用 | 只有一个流用的服务不属于中台 | 用户中心(交易+管理都用) |
| 相对稳定 | 核心逻辑不随业务频繁变化 | 支付中心(支付逻辑变化不大) |
| 有明确的 API 契约 | 对外接口稳定,内部实现可自由迭代 | 订单中心(接口不变,内部重构) |
| 有独立的数据域 | 不跟业务流共享数据库 | 用户数据归用户中心管 |
常见的共享服务:
- 用户中心:用户注册、认证、权限、画像
- 订单中心:订单创建、状态流转、履约跟踪
- 产品中心:产品目录、SKU 管理、价格策略
- 支付中心:支付渠道、账务对账、退款
- 通知中心:短信、邮件、站内信、推送
- 审批中心:流程审批、权限审批、合规检查
流程编排层的设计要点
每个业务流有自己的流程编排引擎。关键区别:
| 业务流 | 编排引擎类型 | 特点 |
|---|---|---|
| 交易流 | 轻量级流程引擎或代码编排 | 低延迟、高吞吐、无需持久化流程状态 |
| 交付流 | 重型工作流引擎(如 Camunda、Flowable) | 流程持久化、可视化、支持人工节点 |
| 管理流 | BPM 引擎(如 Activiti、BizFlow) | 合规流程、审批链路、审计日志 |
一个常见的反模式是:全公司用同一个流程引擎。结果交易流嫌 BPM 引擎太重(启动一个流程实例要写数据库),管理流嫌轻量引擎不够(没有审批节点、没有流程回退)。
正确做法是让每个业务流选适合自己的编排方式,通过共享服务层的标准 API 进行协作。
服务编排的实际案例
场景:客户下单后的全流程
| |
关键设计:
- 交易流和交付流之间没有同步调用,完全通过事件解耦
- 每个步骤调用的是共享服务层的标准 API(订单中心、支付中心、产品中心等)
- 管理流的参与是被动的——通过订阅事件来触发,不会阻塞交易流和交付流
流程引擎 vs 规则引擎:什么时候用哪个
在架构解耦的过程中,还有一个常见的困惑:某些业务逻辑到底该放在流程引擎里,还是用规则引擎来处理?
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 多步骤、有先后顺序的业务流 | 流程引擎 | 有状态、可回退、可监控 |
| 基于条件判断的决策逻辑 | 规则引擎 | 无状态、高性能、规则可热更新 |
| 两者都有 | 流程引擎编排 + 规则引擎决策 | 流程到决策节点时调用规则引擎 |
实际案例:订单审批流程
| |
架构解耦的组织配套
技术上的解耦如果没有组织配套,最终还是会耦合回去。这是很多中台项目失败的根本原因。
| 技术解耦 | 组织配套 |
|---|---|
| 三个业务流独立部署 | 三个业务流有独立的产品团队和开发团队 |
| 共享服务层独立演进 | 中台团队独立于业务流团队,有独立的迭代节奏 |
| 事件驱动跨流通信 | 业务流之间的协作通过契约(API/事件规格)管理,不是开会对齐 |
| 独立数据域 | 每个域有数据 Owner,数据质量归 Owner 负责 |
康威定律在这里体现得淋漓尽致:如果组织架构是按"前端组、后端组、DBA 组"划分的,你的架构必然是按技术层切分的(而不是按业务流切分的)。要让架构真正解耦,组织架构必须先调整。
中台建设的节奏建议
不要一步到位,分三个阶段推进:
第一阶段:梳理和识别(1-2 个月)
- 梳理现有业务流程,识别三大业务流
- 找出跨业务流的耦合点
- 定义共享服务的候选清单
第二阶段:试点解耦(3-6 个月)
- 选一个业务流(建议交易流)做试点
- 抽取 2-3 个共享服务(如用户中心、订单中心)
- 用事件驱动替代原有的同步调用
第三阶段:全面推广(6-12 个月)
- 三个业务流全部完成解耦
- 共享服务层扩展到 6-8 个核心服务
- 建立服务治理体系(API 管理、服务监控、变更管理)
写在最后
中台建设的核心不是"建一个大的共享平台",而是让不同的业务流各自找到最适合自己的运作方式,同时通过共享服务层实现能力复用。
几个核心认知:
- 三大业务流有本质区别:交易流要快、交付流要稳、管理流要规范。一套架构满足不了三种需求。
- 解耦的关键在边界:业务流之间用事件驱动,不直接调用。
- 共享服务不是越多越好:只有被多个业务流使用、相对稳定的能力才值得下沉为中台服务。
- 组织架构要跟上:技术解耦没有组织配套,半年后又会耦合回去。
好的架构不是设计出来的,是从业务中"长"出来的。先理解你的业务是怎么运作的,再决定系统该怎么拆。