
地 址:北京市朝阳区6666号
电 话:18916339454
网址:dsesh.com
邮 箱:69652770@qq.com
一切(qie)脱离业(ye)务的什产架构都是耍流氓,产品更是品架品架如此。本文主要先跟大家整(zheng)体讲一下(xia)产品架构的构整构的概念基本概念和方法~enjoy。
我们常常会看到“产品架构”这个词,体(ti)讲甚至能看到有些公司专门有一个(ge)叫做“产品架构师”的下产岗位。

说起架构,基本很多(duo)人会觉得很虚,和方那么(me)到底什么是什产产品架构呢?

我们知道开发有专门的(de)一个(ge)岗位叫技术架构师,推己及人,品架品架我们先看下技术架构师是构整构的概念干嘛的?

架构师能对线上业务进行模块划分(fen),系统拆分重构,体讲并做好相关高可用的下产措施,以保证系统的基本稳定,安全、和方高效地运(yun)行。什产简单来说(shuo)这是一个既需要掌控整体又需要洞悉局部瓶颈并依据(ju)具(ju)体的业务场景给(gei)出解(jie)决(jue)方案的团队领(ling)导任务。
先来看下技术架构师的几(ji)个核心关键字:
权衡与平衡抽象、建模与(yu)设计(ji)预见(jian)性和前瞻性简化(hua)之美模式与重用质量、效率与资源敏捷、迭代与演进前构与重构本质上(shang),技术架构的关键字同样适用于产品架构。
技术(shu)架构中有(you)一句比较(jiao)流(liu)行的话:一切脱离业务的架构都是耍流氓,产品更是如此。
我(wo)考虑把“产品架构”写成一个系列文(wen)章,这篇文章先会(hui)整体讲一下产品架构的基(ji)本概念和方法,对于上述关键字的深(shen)度解析。
一、什么是产品架构?1. 先来看看“人”的构成(2)从分子水平上说,水约占人体约60%,碳水化合物和脂肪占人体约14%,蛋白质占人体(ti)约17%,其它如维生素、矿物质、纤维素等。这些(xie)是人体的七种营养(yang)素,这七(qi)种营养素在人体中每一个都扮有非常重要的作用,不可缺少,也不可过多(duo)。
(3)在细胞水平分析,人体由细胞、细胞外液及细胞外固体组成,细胞是组成人体(ti)的基本单位。
(4)在(zai)组织(zhi)水(shui)平分析,人体是由四大组织组成,即上皮组织、结缔组织(zhi)、肌组织和神经组织。
(5)在器官水平分析,多种组织以不同的编排形成(cheng)器官。人体内有很多器官,如胃、肺、心、肾、脾、胰、肝、膀胱、尿道、子宫等。
(6)在系(xi)统水平看,共有9大系(xi)统。如消化系统(tong)、呼吸系统、脉管系统、内分泌系(xi)统、神经系统等等。
我们以消化系统做一个比喻,就(jiu)很清楚了。先来看下消化系统的示意图:
我们会发现人体消化系统:
由很多器(qi)官组成:由消化道和(he)消化腺两大(da)部分组成(cheng)。能形成一套自发的运作流程:食物(wu)进入(ru)口腔、咽、食道、胃、小(xiao)肠(十二指肠、空肠、回肠)和大肠(盲肠、阑尾、结肠、直肠、肛门),最后排出肛门,流程结束(shu)。其中消化腺分布在消化道管壁附近,并将消化液排入消(xiao)化管内(nei)帮助消化食物。有必要的功能作用:食物的消化和吸收,供机体所需的物质和能量。2. B端业务体系的构成“人体(ti)的消(xiao)化系统”非常(chang)像“B端的业务体系”,比如(ru)一个患者来诊所看病:客户需要先在网上预约(yue),然(ran)后在约定时间到诊所登记、看诊、付费、取药,最后(hou)离开诊所(suo)。
说完了人的消化系统,再反观(guan)B端业务,我们会发现很多相似之处:
消(xiao)化系统——业务流程体系组织——底层基(ji)础模块器官——一级业务模块细胞——二级业务模块分子——页内tab(三级业务模块)原(yuan)子——字段这里出现的“底层基础模块”、“一级业(ye)务模块”、“二(er)级业务模块”等本质上就是对业务的分层。
(1)定义层级
一般来说B端产品的分层基本就是按照上述(2)-(6)的维度进行划分(fen)的(de),可视业务复杂程(cheng)度适当(dang)增(zeng)加或(huo)减少层级。
(2)完成分层
将同一平台下、同一职能(neng)下、同一角色下具有高度关联的子模块分到同一层母模块中,这(zhe)就需要你作出判断哪些模块是业务相似度和关联度都非常高的。
事实(shi)上(2)-(6)构成了业务的结构,每个维度模块们的任意一个模块都是结构中(zhong)的节点(dian),他们之间相互独立(li),但又相互关(guan)联、相互影响。
类(lei)似计算机网络的结构:
所(suo)以我们看到:B端业务的核心在于业务流(liu)程+结构,且业务塑造的结构是为业务流程而服务,什么样的业(ye)务流程决定什么样的业务结构。
3. B端产品架构的构成产品架构就是对业务的结构化抽象!根据(ju)业务(wu)体系的分析,我们看到其实TO B产品最后就是(shi)要抽象出准确的流程+结构。
我们常(chang)常说(shuo)一个功能,或者一个业务场景的解决方案,本质其(qi)实就是一个小系统。
在这个小系统中(zhong),上面那些“底层基础(chu)模块”、“一二三级业务模块”、“字段”等各种节点支撑了这套业务流程,从而使得这个功能(解决方案)能够形成(cheng)闭环,并顺利的运(yun)转起来。而(er)众多功能/解决方案又构成了一个(ge)产品整体,就像这些众多的相互独立(li)、相互作用、相互依赖的小系统组成了一个大系统。
再强调下:大家(jia)要记住TO B业务中,流程是核心,结(jie)构都是(shi)围绕业务流程进行划分和设计(ji)的。所以流程的优先级是大于结构的。
二、如何绘制业务流程图?一款产品的(de)主要核心业务流程的脉络一定是非常清晰的。比如:这是一款自(zi)助开(kai)票软件,那么核心流程一定是用户扫码自助填写开票信息,并由系(xi)统完成开票,并发送到用户手机/邮箱。比(bi)如:这是一个电商平台,那么核心流程一定是选购商品,添加购物车,下单完成支付。
当然B端复(fu)杂的业(ye)务场景往往会有(you)多条主业务流程,并且附带了很多分(fen)支流程。
一般来说,流(liu)程图的纵向维度可以做成职能部门/角色/平台层;流程(cheng)的横向维度可(ke)以进(jin)行平台层/模块层的划分。
根据上述流程构建的一个(ge)非常简单的产品结构图:
(这个结构图略去了很多,只是想做个示意)
这其中我们看到划分出来了“商品”、“活动”、‘订单“、”统计“,加上“商家管理”、“消息推送模块”共6个模块。
那么(me)在划分模块的时候我们要关注哪些原则呢?
1. 关注低耦合(1)什么叫解耦?
藕断丝连(lian),这个词语非常形象,业务体系就像一个藕,业务内部的模块之(zhi)间的相互关系就(jiu)像藕丝一样错综复(fu)杂,又(you)互相依赖、联系紧密(耦合),解耦就是把藕折断,分成独立的(de)两部分。
本质上它是把(ba)场景不同、业(ye)务属性不同的模块进行拆分,归为不同的两类(lei),但是(shi)因为(wei)两者都为业务流程服务,这其中难免会(hui)有相互协同的地方,于是就会(hui)有丝连的情况,这种丝连体现在流程中。
(2)解耦的(de)作用(yong)?
解耦能(neng)够让场景更聚焦,让功能模块更聚焦垂直业务。比如(ru)积分模块,凡是跟积分相关的一切业务(wu)需求,如无特殊情况,都可以被归集(ji)到积分模块中。对于需(xu)要用到积分的其他业务,则可以通过开放一些标准接口供其他业务调用。
最忌讳的是把另一个业务(随便举个例子比如活动模块:抽奖活动,抽中就送积分)和(he)积分模块聚合在一起,这会导致,任何一个模块要做修改(gai)和迭代时,都会最大(da)程度的影响(xiang)另一个模块,导致无论产品还是技术的迭代成本都异常之高。
2. 关(guan)注角色场景对于不同职能(neng)/角色不同的使用者(zhe),他们的业务场景,工作内容必然会有区别,我们不能把他们各自使用的功能权限放在一个模块内,这会带来很多问题:
A和B的模块发展方向完全不同,导致模块的发展南辕北辙;A和B的模块关联度很(hen)低,产品功能上两者聚合在一起显得毫无(wu)意义;用户不希望A的模块可以被B看到和使(shi)用,两者(zhe)的权限不同,但是由于同属一个(ge)模块而导致权限非常难划清边界。所以对于不同职能(neng)/角色的使用者,尽量将(jiang)他们各自所要用到的产品模块拆分开来,保持各(ge)自(zi)的独立(li)性,是模块划分(fen)的一个重(zhong)要依据。
3. 关注数据流业务流程可能会以一个人、或一个主体为中心进行流转。而数据(ju)流是隐藏在表象之下的另一个流程(cheng),他是以数据为中心进行流转(zhuan)的(de)。
一般来说,C端产品的数据流,基本只需要考虑前后台的数据流转情况即可。但是B端就会复杂一些(xie),B端saas产品数据(ju)往往贯穿C端功能,还会出现跨平台、跨模块的数据(ju)流传。
数(shu)据流的作用,能(neng)帮助你更清晰的划分模块。
四、如何设计产品结(jie)构?1. 产品结构设计的范围产品结构设计包含多层维度的设计,主要有如下5层维度:
系统层面的结(jie)构——如何分平台/系统;版本层面的结构——如何分版本/权限;模块层面的结构——如何分模块/二、三、四、五级模块;页面层面的结构——如何分页面/页面信息;产品内在逻辑结(jie)构——如何用逻辑串联。产品结构的在用户端的展现就是信息结构。这点相信大家都懂,无非是页面层级、页面内部信息层级的划分、信息内容的分类和展示。
其次就是产品内(nei)在的逻辑结构:
比如某个配置项应该放在功能模块内(nei)还是基础模块内?比如在连锁系(xi)统中,会员是放在(zai)连锁维度还是单店维度?比如直接在营销活动中创建电子券,还是先在电子券模块中创建,然(ran)后营销活动进行引用?这些其实都属于产品功能层面的架构。
2. 产品内在逻辑架构设计的7个核心原则及(ji)10个案例易用性——从用户使用体(ti)验层面考虑;可扩展性——迭代、修改的成(cheng)本最小化;技术实现性价比——技术实现成本是否过高不匹配功能价值,按性价比(bi)高的去设计;普适性——每个单元模块是否可以被其他(ta)单元无限重用;熟悉业务——违反业务习(xi)惯的逻辑设计不能出现;掌握产品发展方向——预见产品在(zai)中短期(qi)内的发展方向,提前(qian)考虑进(jin)去;从简单到复杂——任何一个产品都是从最小MVP开始的,千万不要在开始就架构一套复杂的系统。关于一些结构设计上,我给大家列一些比较高频出现,比较常见的(de)B端产品(不同纬度的产品架构思路(lu))小例子:
(1)比如我们有一套面向商家的门店经营管理系统,这时需要一个(ge)有一个卡券平台,跟门店管理(li)系统(tong)中的业务(wu)有着密切的关系,这个时候你该定义这是一套系统还是两套系统?他们的关系是(shi)什么?边界在哪里?
(2)比如我们做了一套诊所管理系(xi)统,后续要垂直化专科式发展,那么到底是通过拆分版本,完全一个科(ke)室一个(ge)独立的版本?还(hai)是做在一套系统里,然后通(tong)过权限划分 更合理呢?这其实就是产品架构的一部分
(3)比如对于电商类(lei)的saas,很多是非协作型(xing)的,也就(jiu)是说模块之间并没有严格的强联系,相对比较独立,独立作为一个B端业务闭环,可(ke)单独使用。但是像诊所saas,则是协作型的,即业(ye)务流程涉及到多模块多角色,每个角色都需要在流程中(zhong)承担一部分(fen)工作职能。非协作型(xing)和协作型的系统设计的思路也是不同的
(4)比如我们在设计电子券的时候,我们是通过一个步骤完(wan)成(cheng)创建+投放,还是通过创建(jian)一个步骤+投放一个步骤完成流程?背后的考虑因素是(shi)什(shen)么(me)?
(5)对于(yu)一些业(ye)务流程的设置项,是放在后台该业务模块维度,还是基础设置模块的维度?
(6)比如原先要设计商品管理模块,考虑的主要是单店模式,跨店的商品管理(li)是隔离的,但是(shi)当跨店客户提出想要统一管理商品,并可以支持总分店和分店之间的商品调拨的时候,单店商品管理的设计方案就(jiu)无法支撑这样的业务模式,需(xu)要做大规模的底层改(gai)动
(7)确定维度,比如哪些(xie)指标是单店维度,哪些是机构维度,比如预约是放在后台“诊所管理”里面,还是单独放(fang)在后(hou)台“预约管理”中?放在哪个维度又是(shi)基于哪些原因(yin)考虑的(de)?
(8)业务(wu)的不满足性,比如(ru)我们在做(zuo)一款电子券的时候,考虑了线上场景,但是还要考虑线下场景,这就需要电子券模块下需(xu)要投放到线上(多个渠道(dao))、线下(二维码、短信等),那么渠道(dao)后续可(ke)能会进行(xing)变更,那(na)么假如我们把创建+投放一步完成,那么未来我们要改动渠道,就会影响整个卡券流程,如果我(wo)们能分(fen)2步,那么只需要对第二步投放进行修改(gai)就行(xing),这样系统的可扩展性就会强很多
当然作(zuo)为一个产品架构师,要完(wan)成这些事情,对于能力的要求也是非常高的,最主要的4点:
懂业务;预见能力,预见未来业务流程、业(ye)务模式的变化趋势;成熟的B端产品结(jie)构化思维;懂技术原理,懂技术(shu)原理最大的好处就是能大(da)概评估这个设计方案的技术成本,并推动(dong)自己选择更合适,投入产出比(bi)更低的设计方案。总结产品架构其(qi)实是一个非常复杂而宏大的话题,这篇将(jiang)近5000字的文章也只是起了个头。
通过这样的架构思维帮助产品最均衡的(de)匹配用户的多(duo)样性需求,匹配公司的大研发资源,匹配合适的(de)时机把产品做到合适的程度等等。
这是一个系统性的(de)工程,好的(de)架构能够支撑业(ye)务发展多年而不重构,更能让用户啧啧称赞。
我想这就是(shi)产品架构的(de)魅力吧!