一、引言
在 4 种类型的架构(业务架构、应用架构、数据架构、技术架构)中,首先要讲的是业务架构,它是其他架构的基础,没有业务去谈架构都是空谈。大部分时候聊的架构是偏技术的,用到了什么新技术和哪些中间件,技术是一项工具,帮我们解决了一部分问题。而学习掌握了业务架构的方法,面对新的业务时能快速上手,知道怎么构建业务架构。很多书籍中并没有教我们业务架构的方法,在一些公司中,业务架构图之前就已经有,不知道为什么这个图要这样画。本篇 Chat 将会给出业务架构的方法论,学习这一套方法论后去做业务架构将会达到事半功倍的效果,有了方法论,还会结合一个具体的例子,从零构建业务架构。

二、方法论分享
方法论这个词听起来很虚,开始听的话,觉得这人是不是有些故弄玄虚。下面我结合自己的经验,谈下自己学到的方法论和怎么运用这些方法论的。

工作前三年,我学到的第一个方法论:本质论。本质论指做事去抓住本质,只有了解了本质,才能找到对应的方法。像现在很多人一谈性能优化,就说有缓存、用异步消息等等,这些只是手段,并不是问题的本质,没有找到问题的本质,只能是抓瞎,这个在技术架构中会重点讲,高并发、高可用、高扩展、高性能的本质是什么,知道了本质就能推导出来要如何去做。

到了第四年进入阿里巴巴,学到的第二个方法论:矛盾论。矛盾论说的是做事抓住主要的矛盾是什么,每个阶段的矛盾是不一样的,比如刚开始接手一个项目,大量的业务咨询,主要的矛盾是接口提示不明显,工具化弱,经过一轮的优化,答疑量明显下降后,发现做的活重复性工作很多,主要矛盾是复用性低、可扩展性差,这个时候主要矛盾就变化了。把主要矛盾解决了,当前任务的 80% 基本上就解决了。

到了滴滴后,学到的第三个方法论:系统论。系统论让做事把相关性都找出来。我们一般做事情就是线性思维,有一个明显的因果关系,由因能直接推导出结果,但有些事情并不是这么简单,它是非线性的,是有多种因素关联的。这个时候就要运用系统论,把所有影响的因素都找出来,系统考虑。

把上面三个方法论运用在工作中,会解决很多问题,能使你有一种方法思路去处理,不至于像无头的苍蝇。不管是做技术的还是业务的,方法论是相通的,解决问题的思路是一样的,只是运用的工具、表达不一样。后面在技术架构篇单中运用这些方法论去谈技术问题,把平时一些散的点全部会串起来,大部分的人并不是不知道,也积累了很多点,缺少的就是如何把这些点串起来,这也是我写作的最大的目的,不是传递做的技巧,更要传递的是如何去思考,怎么就能想到要用这些方法去实现。

三、什么是业务架构
在上一篇文章中我们给出了系统架构的定义:把由多种要素组成的具有结构性的有机整体构建出来,按照这个套路,尝试把业务架构定义为把由多种要素组成的业务有机整体构建出来。这句话中有一个关键词就是“业务”,百科中对业务的解释是这样的:涉及一个以上组织,按某一共同的目标、通过信息交换实现的一系列过程,其中每个过程都有明确的目的,并延续一段时间。这句话,我们提炼出以下几个要点:

组织性:业务的运转背后是有组织的。
目标性:这项业务的价值是什么。
过程性:业务会划分为一系列的过程。
持续性:大的业务过程一般不会随意变的,至少是相当一段时间内。
根据上面的要点,再进行整合,业务架构具有三个特性:

相关利益者:这个是从目标性推导出来的,一项业务一定是有目标和价值的,它也就会涉及到相关的利益者。
业务闭环:这个是从过程性推导出来的,业务有多个过程阶段,这其实就是一个业务闭环,从生产到销售,再到最后的消亡,像一个生命周期一样。
能力分层:这个是系统架构的特性,业务能力一定依赖底层的能力。
四、再谈业务架构特性
其实在第三节中已经谈到了业务架构的三个特性:相关利益者、业务闭环、能力分层,如果只止步这里,还缺少一个整体串穿这三个特性的线索。业务架构具有"横向"和"纵向"的特性,"横向"表示的是业务流程,"纵向"表示的是能力分层。

"横向"和"纵向"是业务架构的关键,我们最期望从业务架构上看到什么,整理了下面的方面:

业务流程是怎样的
业务相关利益者有哪些
业务能提供的能力有哪些
业务之下的系统能力有哪些
相关业务有哪些
不管是"横向"还是"纵向",都体现在数据的流动,从数据流动上看,也能看到整个业务流程是怎么进行的。所有的架构最好做到一图胜千言,让大家都能明白它的全局视角,统一认识。

做一项业务一定是有价值的,这个价值体现在对不同利益者的作用,所以分析业务架构是一定先从价值、使命、目标入手,一项一项地往下分解,这个也是符合人的认识的。下面这张大图从整体上给出了业务架构的概貌:先从最顶层的目标开始,从不同利益者的角度看整个业务的运转(横向流程),业务在运转过程中产生了能力调用链路(纵向流程),一横一纵就能构画出整个业务的核心流程。

image.png

五、业务架构方法
5.1 逆向工程思维
逆向工程思维的方式是假设这个系统在你面前,试着理解它是如何运转的,这个有点像倒推法,从目标结果去推导整个流程,这个思维很厉害。一般来讲我们能接触到这种业务场景的比较少,基本上我们所接触的场景大家都有所了解,不至于完全不知道。但有些新领域我们是没有接触到的,没有任何例子可参考,所以只能靠我们自己去想,把这个流程推导出来。大部分我们熟悉的业务,不假思索就能说出一个流程出来,并不是我们没有思考,而是那个认识就在那里。

比如笔者负责的营销优惠券系统,优惠券这种场景大家都非常熟悉,在电商中也非常多,假如我有张优惠券,那么会思考:它是怎么产生的、怎么到我的手上、我要怎么去使用它,通过这些思考,一张优惠券的流程基本上就会出来:建券、发券、用券,这个就是逆向工程,从结果往原因反向推导。

5.2 标准蓝图思考
第一次听到"标准蓝图"这个概念我一下子就被吸引住了,什么是标准蓝图思考?它的含义是系统是存在一套稳定的流程。怎么去理解这句话,就是人的认识具有普遍性,像上面的优惠券的例子,即使你不做优惠券系统的,你也能大概知道上面的流程,只是一些细节不同而已,大的流程一定是那样的,具体的实现可能不一样。

所以这也给我们一种启示:任何业务系统都存在一套稳定的流程,这种流程是普遍被人接受的。在设计业务系统时,一定是从这种标准蓝图思考模式出发,找出稳定的流程。

5.3 业务架构方法
业务架构是系统架构的一种,总的方法是分解、抽象、分层,结合业务架构的特点,再具体分为:业务流程分解、业务抽象、业务能力分层。

操作的步骤如下。

业务流程分解:业务都有一套流程,这套流程一般是不怎么变化的,从业务的产生到中间转变再到结束,这个过程中有一个生命周期,按照它来划分大的业务流程。

分解更细的子流程:上面一步只是划分为粗粒度的流程,还可以划分为更细的子流程,像一个大步骤里面包含了若干个子步骤,所以不断细分的过程中能获取更多的业务知识。

业务抽象:划分完子流程后,相当于把整个业务都拆散了,剩下要做的事就是整合了,如果只是原封不动的还原就没有什么用,通过抽象进一步描述要点,提炼核心业务元素,屏蔽掉不重要的东西。

业务能力分层:经过抽象之后,要通过一定的规则把元素按照合理的顺序从上到下、从左到右排列出来,一般我喜欢按照场景层、产品功能层、系统能力层、业务模型层、依赖层从上到下进行排列,形成层次分明,上层依赖下层,高层建立在底层之上。

通过上面的步骤就能把业务架构图画出来,通过这份业务架构图能看到整个业务是怎么运转的,业务能提供哪些能力出来,依赖的能力又有哪些。从全局视角去看一个问题,会有一种"一览众山小"的感受,否则会陷入小的点中去,只看树木,不见森林。

六、业务架构实践
6.1 P2P 理财案例
理财对于我们来讲并不陌生,一个平台可能既有投资又有借贷。分析业务案例,大的层面要抓住两点:使命和价值,这是大的方向,离开了这两点无法往下推理业务流程,业务架构开始的阶段是自顶向下的分析思维,这个顶就是围绕使用和价值展开的。

使命愿景决定这个业务能不能长久发展,尽管这个看起来特别虚的东西,但它真的是有用。使命愿景偏公司文化的一部分,为什么阿里巴巴这么关注文化建设,就是让这份文化根植在每位员工心中。

价值是对用户有益的东西,它解决了用户哪些痛点问题、帮助用户实现了什么、给用户带来了什么。所以沿着这个思路往下分析,你会发现为了解决某个方面的问题,要提供哪些业务能力。所以产品经理是把一项业务在脑海里反复扮演,涉及到的角色、业务是怎么玩转的、业务价值都搞得非常清楚,尽管产品经理不写代码,但对业务流程是非常熟悉的。

下图是一个 P2P 理财的案例,其实理财要解决的痛点问题有两点:

借贷方:怎么可以低利率借到钱,毕竟高利贷的利率太高了,又向银行借不了钱;

投资方:能否安全稳定地收到利息。

平台就是撮合两者达到各自的目的,从这个大的方向可以想像整个业务流程的流转,下面第二张图就是站在不同的用户视角去看整个业务流程是怎样的。

image.png

6.2 名词解释
在业务领域中,有些名词是它专有的,所以对不熟悉的人来讲,这些名词是他的拦路虎,在这里给出几个 P2P 理财领域的名词解释,读者可以更好的理解。

标的: 在 P2P 里指借款人的借款描述,如张三需要借款 100w,就有一个标的,标的包括借款人的信息、用途、金额、还款信息。

投标:一个标的创建后,经过投标过程(用投资人的钱去投),当投满之后,标的就是满标的状态。

债权:在投标过程中,投资人和借款人就形成了绑定关系,这个关系就是债权关系。

6.3 业务用户视图
从大的价值上看到要提供两项基本的功能是借款和投资,除了借款人和投资人外,还有其他的角色在里面,通过业务用户视图可以看到不同的利益者在里面,站在用户的视角看整个业务是怎么流动的。在这个案例里,涉及到的利益者包括:借贷经理、投资运营、业务员、投资人、借款人。

image.png

6.4 业务流程
从上面的业务用户视图中提炼大的业务流程:借款登记、资格审查、创建标的、投标、放款、还款,这些是业务大的生命周期,基本上通过这些流程能大致看得出一个业务经历了哪些阶段。

image.png

从上面大的业务流程中不断细分每个步骤,除了宏观上我们知道怎么做的,还要知道每个细节,所以不断细节的过程中,得到的信息会越来越多,对事物的了解程度也是越来越深的。所以从这里也可以看到,我们在认识事物是由宏观到中观再到微观的过程。在做架构设计的过程中,开始关注的是全局事物,不关注细节,但到最后设计阶段,一定要搞清楚细节再做整合。

image.png

6.5 业务抽象
通过上面的分析看出,整个业务中有三个关键概念:标的、理财产品、债权:

标的代表的是借贷方借款信息。
理财产品代表的是投资方可投资的产品。
债权是连接借贷方和投资方,投资的钱一定到某位借款人身上,有一个映射关系。
6.6 业务能力分层
业务能力分层按照:场景层、产品功能层、系统能力层、业务模型层、依赖层,整个业务架构图如下图所示。

image.png

场景层:用户的活动视角,在一层可以看到用户有哪些操作。
产品功能层:为了支撑场景层,它一定要提供哪些产品功能来满足用户的操作。
系统能力层:一个产品功能由多个系统能力组成。
业务模型层:业务模型可以看出业务领域能力。
依赖层:依赖的底层服务有哪些。
七、小结
本篇文章主要讲述了业务架构的特性,以及业务架构的方法,最后通过具体的例子去展示怎么画业务架构 5 层图。把关键要点总结如下:

业务架构是由多种要素组成的业务有机整体构建出来
业务架构的三个特性:相关利益者、业务闭环、能力分层
业务架构方法论:业务流程分解、业务抽象、业务能力分层