一.自顶向下构建架构
1.首先定义问题,而定义问题中最重要的是定义客户的问题,特别主要识别出关键问题,关键问题是对客户有体感,能够解决客户痛点,通过一定的数据化来衡量识别出来,关键问题要优先给出解决方案,问题定义务必加入时间维度,把手段/方案和问题定义区分开来,在什么时间段会出现什么问题,推荐参考软件能力成熟度模型,如果有一定的领域经验活或者做过类似的项目就好很多特别是从0到1搭建类似的系统的经验,问题定义中,需要对问题进行升层思考后再进行升维思考,从而真正抓到问题的本质,理清和挖掘清楚需求;要善用第一性原理思维进行分析思考问题。
2.问题解决原则:先解决客户的问题(使命),然后才能解决自己的问题(愿景);务必记住不是强调我们怎么样,而是我们能为客户具体解决什么问题,然后才是我们变成什么,从而怎么样去更好得服务客户
3.善用多种方法对客户问题进行分析,转换成我们产品或者平台需要提供的能力,比如结算平台可以提供哪些商业能力或场景适配能力
4.对我们的现有的流程和能力模型进行梳理,找到需要提升的地方,升层思考和升维思考真正明确提升部分
5.定义指标,并能够对指标进行拆解,然后进行数学建模,比如定义一个结算系统,怎样体现它的业务价值,可以通过分析业务,知道收益/成本的数额,然后拆解费用项,
6.将抽象出来的能力诉求转换成技术挑战,此步对于技术人员来说相当于找到了靶子,可以进行方案的设计了,需要结合自底向上的架构推导方式
7.创新可以是业务创新,也可以是产品创新,也可以是技术创新,也可以是运营创新,升层思考、升维思考,使用第一性原理思维、生物学(进化论--进化=变异+选择+隔离、熵增定律、分形和涌现)思维等哲科思维可以帮助我们在业务,产品,技术上发现不同的创新可能。
二.自底向上推导应用架构
先根据业务流程,分解出系统时序图,根据时序图开始对模块进行归纳,从而得到粒度更大的模块,模块的组合/聚合构建整个系统架构。基本上应用逻辑架构的推导有4个子路径,他们分别是:
-
业务概念架构:业务概念架构来自于业务概念模型和业务流程
-
系统模型:来自于业务概念模型
-
系统流程:来自业务流程
-
非功能性的系统支撑:来自对性能,稳定性,成本的需要,效率,稳定性,性能是最影响逻辑架构落地成物理架构的三大主要因素,所以从逻辑架构到物理架构,一定需要先对效率、稳定性和性能做出明确的量化要求。
自底向上重度依赖于演绎和归纳。如果是产品方案已经明确,技术小哥需要理解这个业务需求,并根据产品方案推导出架构,此时一般使用自底向上的方法,而领域建模就是这种自底向上的分析方法。对于自底向上的分析方法,会得到如下两个关键词:
演绎,演绎就是逻辑推导,越是底层的,越需要演绎:
-
从用例到业务模型就属于演绎
-
从业务模型到系统模型也属于演绎
-
根据目前的问题,推导出要实施某种稳定性措施,这是也是演绎
归纳,这里的归纳是根据事物的某个维度来进行归类,越是高层的,越需要归纳:
-
问题空间模块划分属于归纳
-
逻辑架构中有部分也属于归纳
-
根据一堆稳定性问题,归纳出SOP处置预案
三.领域驱动设计架构
大部分传统架构都是基于领域模型分析架构,典型的领域实现模型设计可以参考DDD(领域驱动设计)领域划分设计步骤:
1.对用户需求场景分析,识别出业务全维度Use Case;
2.识别出业务场景中所有的实体对象;
3.领域划分,将所有识别出的实体对象进行分类;
4.评估域划分合理性,并进行优化.
4.基于数据驱动设计架构
随着大数据和人工智能的发展,以领域驱动的方式进行架构往往满足不了需求或者达不到预期的效果,大数据时代,在大数据应用场景,我们需要转变思维,从领域分析升维到基于大数据统计分析结果来进行业务架构、应用架构、数据架构和技术架构。这里需要架构师具备数理统计分析的基础和BI的能力,以数据思维来架构系统。
上述四种架构思维,往往在架构设计中是融合使用的,需要根据业务或者系统的需求来选择侧重思维方式。有了架构思维的指导,我们才可以采用合适的架构框架。