架构之谈

对于架构来说,深刻理解架构的基础概念是非常重要的。架构实际上解决的是人的问题,而概念是人认识这个世界的基础。概念实际上所解决的,是人遇到的某个特定的问题,我们把解决问题的解决方案,给定一个名字,这个名字就是对应的某个特定的概念。

要做好架构所首要具备的能力就是能够正确的认识概念,能够发现概念背后所代表的问题。

接下来,很重要的一个方面就是如何识别出需要解决的问题。当我们去解决一个问题的时候,一定要先把问题搞清楚。这也是我为什么要单独写一篇文章讲这个的原因。去看看软件开发工作者的时间分配也可以看出,大家大部分时间花在讨论解决方案和实现的细节上,基本都不会花时间去想“问题是什么”。或者即使想了一点点,也是一闪而过,凭自己的直觉下判断。只有真正投入思考问题是什么的工程师,才可能会真正的成长为架构师。识别问题的一个最好的前提就是要搞清楚:是谁的问题。这个搞清楚了,再去讨论问题才有意义。当我们处理问题的时候,如果发现自己正致力于把自己的工作完成,要马上谨慎起来,因为你这样不能真正的解决问题。所以找出问题的主题,是做架构的首要问题。当你要正确认识问题时,需要问两个问题:1.这是谁的问题?2.有什么问题?

问题出现之后,不一定是完全正确的,我们必须要做出调整,即架构的切分。切分调整,都是对相关人的利益的调整。人类社会的分工就是自然而然产生的架构切分。背后的原动力就是人民对自己利益的渴望。切分不好的话会产生很多的问题,所以切分要有切分的原则。

一:是切分的原因

切分有几个原因:1必须在连续时间内发生的一个活动,不能切分。2.切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。3切分出来的部分,不应该超出一个自然人的负载。当然对于每个人的能力不同,负载能力也不一样,需要不断的根据实际情况调整,这实际上就是运营。4切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的.

二:确保我们不能违反人性。

其实切分的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个小问题就形成了不同的概念。

如同前面描述的架构的定义,软件架构的出现也是同样的。一开始是懵懵懂懂的去写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也是一样的,就是提升参与的人的利益,降低成本。导火索也是软件工程师的任务太重,我们需要把很多工作拆分出来。拆分的原则也是一样的,如何让权责一致。同样,这个拆分也是需要组织架构的调整,来保证架构的落地。具体如何分拆,如何调整,我们将在另外一篇中着重讨论。软件的本质,其实就是通过把人类的日常工作生活虚拟化,减少成本,提升单个人员的生产力,提升人类自己的利益。软件工程师的职责在这个浪潮中,不堪重负,自然而然就分拆为不同的角色,形成了一个独特的架构体系。这一切的背后,仍然是为了提升人类自己的利益,解决人类自己的问题。

接下来就要讨论一下,架构师的权利和义务。

架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。所以很多公司设了很多架构师的职位,但是并不具备调动组织架构的权利,那么这个架构师的职位一定是形同虚设。架构师只能够通过建立某些流程来行使架构师的权利,比如强制架构 review,反而会造成很多内部不必要的冲突,最终都会导致这些流程流于形式,得不偿失。相信很多人都已经经历过这些,但似乎很少有人回去探讨这是为什么。

我们真正想快速的完成代码工作,就要克服自己对时间的恐惧,真正的去研究业务的问题,相关 stakeholder 的利益,把这个变成我们的习惯。写代码的时候让该出现逻辑的地方出现逻辑,让不该出现的地方不能出现。一旦不该出现的地方出现了逻辑,那么要马上意识到,这个地方是一个坑,这个问题一定和业务的分析不透彻有关系。

参考文章:王概凯,架构漫谈系列,https://www.infoq.cn/profile/1279517。

原文地址:https://www.cnblogs.com/sunshine-z/p/10507877.html