如何在短频快的节奏中做好技术?业务开发必会的架构思维
阿里妹导读
背景介绍
业务视角:业务驱动技术是前台业务的特点,业务开发要逐渐培养自己全局视角看业务的能力:从交付价值角度理解业务模式;从能力规划角度掌握产品方向。本文的第一部分介绍价值引领业务架构的做法
技术视角:应用架构的内容很大,本文第二部分介绍了架构设计的两种方法(风格),以及域划分和流程建模两个架构关注点
业务架构
业务架构目的
业务架构做什么
看清楚 "事":从宏观角度看“事”是价值源点,是业务战略&目标&价值;从微观来看“事”是业务流程。看清楚"事"就理解了“为什么做”和“怎么做”的2个核心问题。以我们做的业务为例:宏观的"事"就是帮助商家低成本处理风险问题,降低商家经营成本,提高平台竞争力;微观的“事”包括了商家风险预警流程,风险反馈流程等。看的阶段尽量脱离具体系统/业务,向高度和广度拓展视野。以风险预警为例:从广度上看,风险是如何识别的(有哪些上游),如何透出的(需要什么内容),怎么触达商家;从高度上看,有多少种风险可以预警(共性是什么),商家怎么处理(成本如何等),是否有更优的处理方式。
理清楚 "人": 谁(利益相关者)一起做这件“事”。对利益相关者进行分类管理,识别用户的不同诉求,排序优先级。关键点是用户要什么(用户视角的,而不是外部视角)。
分清楚 "责": 不同"人“的权&责,在流程中的角色。从产品建设角度出发,人&权&责的识别为了深入了解用户诉求,设计产品能力。例如商家产品需要考虑商家不同角色员工的权&责,以及不同角色需要的产品功能。
业务架构怎么做
看清楚事-价值流/能力映射
分析价值流有助于从更宏观视角理解业务全过程:价值交付过程拆解成若干阶段,由不同的角色协作完成;每个阶段需要不同的能力。通过分析能力现状(完备,缺失,部分满足),评估价值&紧迫度,可以对未来规划形成构思。下图是Togaf招聘员工价值流的示例图,该图描述了招聘员工的完整流程和产品能力诉求,通过颜色区分不同能力的现状(绿色代表满足诉求;黄色代表部分满足;红色代表能力缺失)。
理清楚人&责-角色分析
应用架构
DDD:子域就是组件,域之间的关系,域设计原则
流程视角:流程,子流程,阶段都是组件;定义不同粒度下组件的交互关系和原则
数据视角:数据表是组件,表之间的关系,和设计原则(范式和反范式)
架构分层:层是组件,分层交互的关系和原则
....
架构方法
自上而下
自下而上
自下而上"三板斧"
第一招:自下而上做归纳
场景梳理:罗列所有问题细节。例如:流程建模先罗列所有子流程;领域建模先罗列所有域内概念
场景分类:划分类型,合并同类项。找准分类是对问题空间信息的提炼,有些分类很容易;有些分类的识别需要一个迭代过程:
先根据经验或直觉选主要的划分维度,识别类型
将场景归入对应分类
遇到难以归纳的场景,则评估是否需调整分类
第二招:抽象分析出设计
第三招:自上而下验场景
架构实践
领域建模
域的目的
控制复杂度:生活中通常将复杂大问题划分为若干个容易解决的小问题。DDD的战略工具“子域”就是控制复杂度的工具:核心域,通用域,支持域就是划整体为部分,降低复杂度的具体方式。
提升复用性:DDD子域类型里"通用域"的概念,清晰表明域的可复用性。
域很浅: 域划分很细,每个域少数几个对象,通常是问题不复杂,不需要划分。
域边界模糊:领域对象关系复杂,子域间没有清晰边界,暗示了模型关系错误或者子域划分错误。
域的识别
正方向:从各种特征/方法出发识别可能的域 (域划分包括:从域定义出发/参考已有标准方案/识别领域概念模糊性/四色建模/事件风暴等);
反方向:通过域设计原则和收益验证划分的合理性;
域的验证
最小完备&自我履行 看 "依赖" : 域的价值主张决定了域职责,域内包含了完成职责所需要的必要信息以及能独立作出决策,不/少依赖外部域。举例来说:在业务系统设计里经常看到运行域和配置域的设计;运行域执行任何功能都依赖配置域信息。那么从域的完备性和自我履行角度考虑,这种拆分是不合适的。
稳定空间&独立进化 看 "变化":稳定空间是当前域不受/少受外部域变化的影响;独立进化是指域内变化对外部域没有影响/影响较小。举例来说,子域A直接引用了子域B的领域对象C,对象C变化一定影响到子域A;这种情况说明领域A不够稳定;或者说领域B不能保持独立进化。
流程建模
流程设计问题
流程建模做什么
定阶段
定职责
定交互
流程建模怎么做
穷举: 选择熟练的工具梳理流程(流程图,ES等都可以),建议是:按业务场景类型梳理,一次可以梳理一个或几个场景,分多次完成。
归纳:"通看"场景,找共性、找差异、找设计点,采用"合,增,调"(合并同类节点;增加缺失节点;调整节点顺序)三技巧完成流程设计。如何“调顺序"要看设计目的,例如性能优先将部分业务校验节点调整到前面。
推演:用步骤2设计的流程推演业务,主要评估执行顺序和节点职责是满足业务需求。
实例练习
自下而上流程建模
第一步 自下而上做归纳
第二步 抽象分析出设计
第三步 自上而下验场景
总结
微信扫码关注该文公众号作者