再谈架构思维(22.2.28)
今天谈一下架构思维。对于架构思维本身应该类似与系统思维、结构化思维、编程思维等诸多思维模式的一个合集。由于架构本身的核心作用是在业务现实世界与抽象的IT实现之间建立一道桥梁。因此,架构师最核心的是需要理解业务驱动技术,技术最终是为业务服务的的道理。要真正通过架构设计来实现业务和技术,需求和实现,软件和硬件,静态和动态,成本和收益多个方面的平衡。
分解仍然是最基础的架构思维。架构本身的一个重点就是对复杂问题进行分而治之,同时保证分解后各个部分还能够满足高内聚,松耦合,最终集成为一个完整的整体。分解的核心是定义问题和需求,定义目标并进行目标分解,因此做架构首先必须要了解清楚需求。第二个点就是集成,集成本身是配合分解的动作,最终完成分解的各个组件或者是子系统,需要通过合适的接口设计,最终还能够集成为一个完整的整体。分解的目的是加上开发和降低问题本身的复杂度,如果分解以后的没办法集成到一起,那么分解就没有任何意义。所以分解和集成可以理解为架构最核心的一个思考方式和方法。
其次我们在谈思维框架和模型的时候,谈事物认知和问题分析的时候里面经常会聊到一个核心的思维方式,叫做动态加静态。在架构思考和设计的环节,我们仍然需要重点关注这两者之间的结合。我们可以看到,涉及到流程、用例分析就属于架构设计里面的动态分析内容,涉及到数据、类、业务和逻辑模型的时候就属于静态建模的内容。动态建模和静态建模本身又需要高度的协作最后形成完整的架构思考。
第三个点是复用。复用是另外一个重要的思维模式。我们在谈SOA架构思想的时候经常会提到复用的思想。包括业务能力组件化,组件能力服务化,平台加应用、共享中心、数字中台等技术形态里面,我们都可以看到复用是一个核心的架构思考。简单理解复用的核心就是共性能力的下沉。然后以可共享的能力开放的模式,提供给上层的应用使用。即使我们做的一个小系统,也要理解复用的重要性,也需要有意识将各个模块中共性的内容抽取出来形成可以共享复用的组件。
第四个点是分层。架构设计里面分层的重要性不言而喻。我们应用架构里面常说的数据访问层,逻辑层,前端展现层。在云计算架构设计里面,我们说的底层的Iaas,中间的Paas,再到上层的Saas层,在很多企业或者政务平台经常采用底层资源、中间服务、上层应用的分层架构模式,基本也和SOA的架构模式也是类似的。分层的核心的目的是通过分层即理清整个应用构建过程,又保证各层之间的独立设计和松耦合。
第五点是模式匹配。架构设计里面的模式匹配就是要将最终的业务域问题,匹配到对应的技术实现上面。很多架构设计我们可以看到业务流程分析和梳理,主流的微服务云原生技术也清楚,但是我们缺少业务域问题到技术域实现间的匹配能力。这个匹配难点体现在,由于我们很难看到两个完全一样的 问题。我们不能做顶层匹配,所有问题的匹配都是需要先把问题分解为子问题,然后再将可服用的技术实现和技术解决方案去做细粒度匹配。
第六点谁抽象,抽象是架构思维另外一个重点,一个是常说的归纳,即各种类似产品实现见多了,自然就归纳出来一个规则或者方法供以后的设计使用。其次是抽象,抽象更加重要,即将非类似场景中共性内容也总结出来,进一步抽象为类似的东西,以更加方便适应各种变更。
第七点是结构化思维。理解结构化思维首先回到结构二字。IT开发里面接触最多的就是表格一种就是树。通过结构化思维引入了维度和坐标概念以后,可以更好帮助我们进行结构化决策。对于复杂的事物认知,一定是多维的。当我们遇到多维层级模型的时候,我们一定有意识地将其转换为多个平面二维模型进行分析。
最后一点是系统思维。简单总结系统思维就是不要单独追求单个目标或子目标的最优。而是应该最该追求整体目标满意解和动态平衡,这就是系统思维的核心。体现的是各个子要素在相互促进,相互制约的情况下怎么去做好全局思考和动态平衡。这是最为一个架构师最核心需要去锻炼的能力。