☆【细品架构1/100】架构之缘起

本文主要是继续研读了资深架构师王概凯Kevin执笔的《架构漫谈》系列的《架构漫谈(一):什么是架构?》的心得感受。王概凯Kevin结合自己多年的架构经验,通过不同的视角,重新审视架构的本质,从而产生一力作《架构漫谈》系列,作者希望能够抛出自己从实践中得出的一些观点,并引发大家的一些思考,欢迎大家沟通讨论。

如需要阅读原文,请关注公众号“聊聊架构”,从历史文章中获取《架构漫谈》系列。

本文内容结构图:

架构之缘起


其实一直以来也没有弄明白,架构为何物,自从看了王概凯Kevin执笔的《架构漫谈》系列之后,对此依然还不是那么清晰,但是从中了解到了更重要的是“架构本质是什么”,其实一直以来也没有人能够准确清晰的描述架构为何物,100个人中就有100种对架构的理解。如果自认为可以能够准确描述出来何物,那其实你还没有真正理解架构本质。细品《架构漫谈》这一系列吧,等你看完这一系列,会发现王概凯Kevin讲的不只是软件行业的架构,而是面对问题的架构,更有甚者,其背后的思想可以运用到对生活、人生、社会的架构。

其实架构就不是具体物,也不能通过具体的方式表达出来,因为它一开始就不存在,而是源于对问题、效率、改进、欲望等等不断诉求、实现的过程。

正所谓,道生一,一生二,二生三,三生万物,架构生于万物的高效协作。

架构生于万物的高效协作

然而,事实是,架构在软件行业诞生N年前就已经存在了,所以对于架构,不应该只限于在软件的角度来看,那其实是不准确,不全面的。我们必须要从源头开始,把架构的概念讨论清楚,只有这样软件行业的架构讨论才有意义。那么为什么会产生架构呢?

以下内容摘自《架构漫谈系列(一):什么是架构?》:

  1. 想象一下,在远古早期,每个人都完全独立生活,衣、食、住、行等等全部都自己搞定,整个人类都是独立的个体,不相往来。为了解决人类的延续的问题,自然而然就有男女群居出现,这个时候就出现了分工了,男性和女性所做的事情就会有一定的分工,比如:男性身体强壮擅于捕猎、女性性情温和善于孕育等。可是人每天生活的基本需求没有发生变化,还是衣食住行等生活必须品。

面对问题:人类延续
架构形成:男女群居、男女分工

  1. 然而面对自然灾害,生活遭受灾害不确定性,所以多人分工配合作为生存的整体,力量就显得强大多了,所以也自然的形成了族群:有些人种田厉害,有些人制作工具厉害,有些地方适合产出粮食,有些地方适合产出棉花等,就自然形成了人的分群,地域的分群。当分工发生后,实际上每个人的生产力都得到了提高,因为做的都是每个人擅长的事情

面对问题:自然灾害、个人生产效率低,生活遭受灾害不确定性
架构形成:多人族群,角色分工

  1. 整个人群的生产力和抵抗环境的能力都得到了增强。为什么呢?因为每个人的能力和时间都是有限的,并且因为人的结构的限制,人同时只能专心做好一件事情,这样不得已就导致了分工的产生。既然分工发生了,原来由一个人干生存所必需的所有的事情,就变成了很多不同分工的角色合作完成这些事情,这些人必须要通过某些机制合在一起,让每个人完成生存所必需的事情,这实际上也导致了交易的发生。

角色分工产生,由于每个人都在干自己擅长的工作,生产力必然会提升。

  1. 在每个人都必须自己完成所有生活必须品的生产的时候,是没有架构的(当然在个人来讲,同一时刻只能做有限的事情,在时间上还是可能会产生架构的)。一旦产生的分工,就把所有的事情,切分成由不同角色的人来完成,最后再通过交易,使得每个个体都拥有生活必须品,而不需要每个个体做所有的事情,只需要每个个体做好自己擅长的事情,并具备一定的交易能力即可。

角色分工产生,生产力提高,更需要具备的是交易能力。只有交易,才能使每个个体拥有生活各方面的必须品。

经过以上四个步骤,这实际上就形成了社会的架构。那么怎么定义架构呢?以上面这个例子为例,把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。


通过以上的例子,可以归纳出产生架构的五个动力条件:

  1. 必须由人执行的工作(不需要人介入,就意味着不需要改造,也就不需要架构了)

  2. 每个人的能力有限(每个人都有自己的强项,个人的产出受限于最短板,并且由于人的结构限制,同时只能专注于做好一件事情,比如虽然有两只眼睛,但是只能同时专注于一件事物,有两只手,无法同时做不同的事情。ps. 虽然有少部分人可以左手画圆右手画框,但是不是普遍现象)

  3. 每个人的时间有限(为了减少时间的投入,必然会导致把工作分解出去,给擅长于这些工作的角色来完成,见2,从而缩短时间)

  4. 人对目标系统有更高的要求(如果满足于现状,也就不需要进行架构了)

  5. 目标系统的复杂性使得个人无法完成这个系统,满足条件2,3(如果个人就可以完成系统的提高,也不需要别的人参与,也就不需要架构的涉及,只是工匠,并且一般这个工作对时间的要求也不迫切。当足够熟练之后,也会有一定的架构思考,但考虑更多的是如何提高质量,提高个人的时间效率)

有人可能会挑战说,如果一个人对目标系统进行分解,比如某人建一栋房子,自己采购材料,自己搭建,难道也不算架构嘛?如果对于时间不敏感的话,是会出现这个情况的,但是在这种情况下,并不必然导致架构的发生。如果有足够的自觉,以及足够的熟练的话,也会产生架构的思考,因为这样对于提高生产力是有帮助的,可以缩短建造的时间,并会提高房子的质量。事实上建筑的架构就是在长期进行这些活动后,积累下来的实践。

当这5个条件同时成立,一定会产生架构。从这个层面上来说,架构是人类发展过程中,由懵懵懂懂的,被动的去认识这个世界,变成主动的去认识,并以更高的效率去改造这个世界的方法。


总结一下,架构本质是什么,就是:

  1. 根据要解决的问题,对目标系统的边界进行界定。

  2. 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。

并对这些切分出来的部分,设立沟通机制。

  1. 根据2,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。

同样这个思考可以运用到其他行业架构,比如:企业架构、组织架构、软件架构等等。每一次架构的变革,都是主动对现有问题的解决,对现有环境的适应

架构实际上就是指人们根据自己对世界的认识,为解决某个问题,主动地、有目的地去识别问题,并进行分解、合并,解决这个问题的实践活动。

架构的产出物,自然就是对问题的分析,以及解决问题的方案:包括拆分的原则以及理由,沟通合并的原则以及理由,以及拆分,拆分出来的各个部分和合并所对应的角色和所需要的核心能力等。

推荐阅读更多精彩内容