从铁路调度系统到物联网云平台,从几十人的团队到近百人的产研体系。 我见过太多系统因为缺乏业务架构而变成"屎山",也亲手验证过业务架构如何从根本上控制复杂度。 这篇文章,想把这件事说清楚。
系列文章导读:
2. 为什么你的系统总是变成“屎山“?——业务架构缺失的代价
3. 如何画出一张真正能落地的业务架构图?——六要素实战指南
01 引言
产品经理 vs 业务分析师:被遗忘的专业能力
在互联网爆发之前,企业信息化领域有一群专业角色叫业务分析师(Business Analyst)。他们受过系统的软件工程训练,擅长从混沌的业务需求中抽离出清晰的业务模型,定义业务实体、划定业务边界、梳理信息流转。业务分析师是业务与技术之间的翻译官,是系统架构的奠基人。
互联网浪潮带来了新的岗位——产品经理。这个新角色更关注用户体验、增长策略和商业变现,能力模型与传统业务分析师有着本质差异。但随着互联网企业的扩张,产品经理逐渐接管了原本属于业务分析师的工作:需求分析、业务流程梳理、业务架构绘制。
现实是,现在很少有公司还设有专职的业务分析师,这个角色主要存在于咨询机构。而大量产品经理并没有接受过软件工程的基础训练,更谈不上系统性的业务架构能力。做业务架构时,很多人只关心"PPT 上怎样画好看",而不是"逻辑是否正确、边界是否清晰、信息流是否完整"。
这正是我想写这篇文章的原因——业务架构不是画一张好看的图,而是一套控制复杂度的方法论。无论你叫自己产品经理、业务分析师还是架构师,这套能力都值得掌握。
图0:业务分析师与产品经理的核心差异对比
为什么你的系统总是变成"屎山"?
2015年,我加入一家物联网科技公司时,接手了一个已经运行两年的设备管理系统。那个系统的代码库里有超过两百个接口,其中三十多个接口都叫"updateDevice"——有的更新设备状态,有的更新设备参数,有的更新设备归属。每个接口背后都藏着一段"紧急需求"的历史。
更典型的是"库存"这个词。在那个系统里,"库存"至少有七种含义:财务库存、实物库存、可用库存、在途库存、预占库存、冻结库存、残次品库存。财务部门说的库存和仓库管理员说的库存,根本不是同一个东西。但系统里没有清晰的边界,数据永远对不上,每次出问题时,产研团队要花大量时间排查"到底谁说的库存"。
这种场景你一定不陌生。需求越做越慢,改一个Bug引出三个Bug,产品和研发天天因为"边界"问题扯皮。根本原因只有一个:只有功能堆砌,没有业务架构。
图1:有无业务架构的系统对比——同名异义是系统腐化的第一把刀
业务架构的第一个价值,就是统一语言、划定边界。它逼着我们在动笔写代码之前,先把"这个词到底指什么"定义清楚。这不是学术讨论,而是实打实的工程效率问题。
02 定义
什么是业务架构?
业务架构描述的是一个系统"做什么"——它包含哪些业务模块,这些模块之间如何协作,业务信息如何在模块之间流转。它不关心技术实现,不关心用微服务还是单体,不关心数据库选型。它关心的是业务本身的结构。
业务架构的本质,是对业务复杂度的结构化表达。它回答三个问题:系统由哪些业务部分组成?这些部分之间的关系是什么?业务信息如何流转?
用一个简单的类比来说明:如果系统是一栋建筑,业务架构是建筑的功能分区图——哪里是客厅,哪里是厨房,哪里是卧室,人和物品在这些空间之间如何流动。至于用钢筋混凝土还是钢结构,那是技术架构要考虑的事情。
业务架构的核心要素
图2:业务架构的六大核心要素
- 业务实体:系统中涉及的核心业务对象,如订单、客户、商品、库存等
- 业务模块:按功能聚合的业务单元,如交易模块、仓储模块、营销模块
- 统一语言:确保所有角色对同一业务概念有相同的理解,消除同名异义和同义异名
- 边界划分:明确每个业务模块的职责范围,定义模块之间的交互规则
- 业务流转:描述业务状态的变化路径,如订单从"待支付"到"已发货"的状态机
- 信息依赖:模块之间的业务数据依赖关系,如"订单完成后,积分模块增加积分"
03 辨析一
现在各种架构图很多,业务架构,企业架构、技术架构、应用架构、数据架构等,各种不同的叫法,升至现在都已经分不清楚谁是谁,反正一张图,想到什么就将什么内容堆上去,还自己觉得自己很厉害,这恰恰是我们本身没有对这些有清晰的认识所造成的笑话。这里就将与业务架构经常混淆的几个做个对比
业务架构 ≠ 企业架构
在开始深入之前,必须先澄清一个常见的混淆:很多人把业务架构等同于企业架构(Enterprise Architecture, EA),甚至直接拿 TOGAF 框架来套产品级的业务架构设计。这是用高射炮打蚊子。
企业架构和产品级的业务架构,虽然都叫"架构",但视角、抽象层次、关注点和执行者完全不同。
图3:企业架构与产品业务架构的多维度对比
⚠ 常见误区
年轻产品经理容易犯的一个错误:拿着 TOGAF 的框架去套产品设计,画出来的业务架构图宏大而空洞,无法指导具体的开发落地。这不是业务架构的问题,而是用错了工具。
企业架构回答的是"我要具备什么能力才能活下去",产品业务架构回答的是"这个需求怎么闭环"。
在我参与编制《5G+智慧园区标准》和《装备数字孪生通用要求》等国家标准时,接触的是企业架构层面的思考——关注的是整个行业的能力矩阵、标准体系、技术路线。但回到具体的物联网云平台产品设计时,我需要切换到完全不同的视角:这个平台的设备管理模块和告警模块之间是什么关系?工单流转的状态机是怎样的?这是产品级的业务架构。
业务架构 ≠ 技术架构
这是另一个高频混淆点。业务架构描述"做什么",技术架构描述"怎么做"。两者关注的是完全不同的维度,但在实际工作中,经常有人把技术架构图当成业务架构图来用。
图4:业务架构与技术架构的本质区别——以"订单"为例
💡 核心观点
业务架构的箭头表示"业务信息的流转方向",技术架构的箭头表示"系统组件的调用关系"。这是两种完全不同的语言。
业务架构说"订单完成后,积分模块增加积分"——至于研发用 MQ 还是同步接口实现,业务架构不关心,那是技术架构的事。
在我主导的电梯物联网平台项目中,业务架构层面需要明确的是:设备上报数据后,告警模块如何判断异常,工单模块如何根据告警自动生成工单,维保人员如何接单处理。这是业务流转。而技术架构层面要考虑的是:设备数据通过 MQTT 接入,经过 Kafka 消息队列,流式计算引擎实时分析,告警结果写入 MongoDB,工单通过 REST API 推送给移动端。这是技术实现。
业务架构先于技术架构存在。没有清晰的业务架构,技术架构就是无源之水。
业务架构 ≠ 应用架构
这是最容易混淆的一对。在很多架构框架中,业务架构和应用架构被放在一起讨论,甚至被合并。但在实际的产品研发过程中,它们有明确的分工。
图5:业务架构与应用架构的推导关系
💡 核心区别
业务架构描述的是"业务模块之间的信息流转",应用架构描述的是"应用系统之间的调用关系"。业务架构是应用架构的上游输入,应用架构是业务架构的技术映射。
在我主导的无代码/低代码平台(aPaaS)项目中,业务架构层面需要明确的是:表单设计器、流程引擎、数据模型、权限管理这四个业务模块之间的关系——表单设计器产出表单定义,流程引擎引用表单定义并绑定审批流,数据模型为表单提供数据源,权限管理控制谁能访问哪些表单。这是业务架构。
而应用架构层面要考虑的是:表单设计器是一个独立的 Vue 前端应用,流程引擎是一个 Spring Boot 微服务,数据模型服务通过 GraphQL 提供数据查询,权限服务通过 OAuth2 实现统一认证。这是应用架构。
业务架构先于应用架构存在。没有清晰的业务架构,应用架构就是空中楼阁。
04 定位
业务架构在产品研发中的定位
明确了业务架构是什么、不是什么之后,接下来要回答四个核心问题:在产品研发过程中,业务架构应该在哪个环节输出?由谁来输出?输出应该是什么样子?有哪些方法论?
何时输出?
图6:业务架构在产品研发流程中的位置
业务架构应该在需求分析完成之后、应用架构和技术架构设计之前输出。具体来说:
- 需求收集阶段:收集用户故事、业务痛点、市场机会,形成需求池
- 业务架构设计阶段:从需求中提取业务实体,划分业务模块,定义模块关系和信息流转,输出业务架构图
- 应用架构设计阶段:基于业务架构,划分应用系统/微服务,定义系统间接口和调用关系
- 技术架构设计阶段:基于应用架构,进行技术选型、中间件选型、部署方案设计
- 功能架构设计阶段:基于业务架构,设计用户交互、页面结构、菜单导航
谁来输出?
业务架构的输出者应该是产品经理或业务分析师,但需要与架构师紧密协作。在我的团队实践中,这个角色通常由资深产品经理或产品线负责人承担。
✓ 实践经验
在我带领的研发团队中,业务架构通常由产品线负责人输出初稿,然后组织产研评审——产品经理从业务完整性角度审视,架构师从技术可行性角度挑战,测试从可验证性角度补充。这个过程通常需要经过2-3轮迭代才能定稿。
输出应该是什么样子?
业务架构的输出物应该包含以下内容:
图7:业务架构的完整输出物清单
方法论:三层建模法
在业务架构的实战方法论中,三层建模法是最常用的一种——将业务架构分为触点层、业务活动层和能力层。它提供了一种结构化的思考方式,帮助产品经理从混沌的需求中抽离出清晰的业务骨架。
📝 后续预告
三层建模法涉及的内容较为丰富,包括各层级的定义、建模步骤、实战案例以及常见的避坑指南。限于篇幅,我将在后续的文章中单独展开详细介绍,敬请期待。
产品视角的 DDD 思想
在业务架构设计中,我借鉴了 DDD(领域驱动设计)的思想,但不是照搬技术实现,而是取其"神"——统一语言和划定边界。
具体做法是:
- 从混沌到清晰(找实体):从一堆混沌需求中提取"业务实体",归类成"业务模块"。例如,把优惠券、满减、积分都归到"营销模块"。这就是产品版的"限界上下文"——划定业务边界,统一语言
- 定边界(划模块):按照"高内聚、低耦合"的原则,把相关的业务实体聚合在一起,形成清晰的模块边界。判断标准是:这个模块的职责是否单一?它和其他模块的交互是否可以通过明确的信息流来描述?
- 理关系(画业务流,不画技术调用):画的箭头是"业务信息的流转方向",不是"系统API的调用方式"。例如,从"订单模块"指向"积分模块",旁注"订单完成增加积分"。至于研发用 MQ 还是同步接口,不关心,那是架构师的事
产品经理必须懂两件事,这是你的护城河所在:第一,统一语言与划定边界——告诉架构师"优惠券"只属于营销域,交易域只是拿来用,不该修改它。第二,业务状态机——只对业务状态机负责,如"必须已支付才能发货",不关心技术实现。
05 结语
业务架构不是学术概念,不是画给领导看的漂亮图表,而是实打实的工程工具。它解决的是一个最根本的问题:如何在需求不断堆积的过程中,保持系统的清晰和可控?
在我18年的从业经历中,从铁路调度系统到物联网云平台,从几十人的团队到近百人的产研体系,我反复验证了一个结论:没有业务架构的系统,最终都会变成"屎山"。这不是技术问题,是认知问题。
业务架构、企业架构、技术架构、应用架构,它们各自有自己的位置和职责。混淆它们,就会用错工具、做无用功。厘清它们,才能让每个角色在自己的层面上做出正确的决策。
这篇文章的目的,不是给你一个完美的模板,而是希望你在下一次接到需求时,先停下来问自己三个问题:
- 这个需求涉及哪些业务实体?它们属于哪个业务模块?
- 这个模块和其他模块之间的边界在哪里?信息如何流转?
- 如果明天业务规则变了,我的架构能支撑吗?
想清楚这三个问题,再动手画图、写文档、做设计。你会发现,后面的事情会顺畅很多。
业务架构的本质,是对业务复杂度的结构化表达。它不解决所有问题,但它让问题变得可见、可讨论、可管理。这,就足够了。