架构漫谈-王概凯-阅读笔记
原文链接:
这篇文章由浅入深地讲解了架构的由来和作用,架构师的前提条件、权利和义务以及技术能力。
架构是什么?
以人为例,一个族群中,为了族群的延续,每个人做着自己的工作,有人出去打猎,有人获取水,有人收拾食材,有人做饭等等。这个族群就可以看作一个架构,架构将每个部分协同起来,将大的问题分解开,分解到每个部分每个人应该做的事,大家共同协作,所有工作可以一起执行。
即架构是什么:
- 根据要解决的问题,对目标系统的边界进行界定。
- 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
- 并对这些切分出来的部分,设立沟通机制。
- 根据 3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作
架构的产生是时代发展的必然结果。书中以人为例,在最早的时候大家的生活都很简单,每个人可以独立实现衣食住行,彼此独立。发展到后来的群居生活就出现了分工现象,这便是最早的架构。个人的能力必定是有限的,在发展中必定会产生协作,彼此之间协同工作,共同发展就演变出了架构。
架构是用来干什么的?
简单来说,架构是用来解决问题的。解决人的问题。
做好一个架构的前提是认识到问题的根本,并且能对问题进行恰当的切分,切分中要把握一些原则,使每个人获得工作都是合理的,同时工作的切分也是合理的,例如一个人十月怀胎不能拆分成十个人一个月完成。
架构与软件的关系。
程序从早期由一个人完成,也逐渐变成了由很多不同角色的人共同合作来完成。
一开始是懵懵懂懂的去写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也是一样的,就是提升参与的人的利益,降低成本。导火索也是软件工程师的任务太重,我们需要把很多工作拆分出来。拆分的原则也是一样的,如何让权责一致。同样,这个拆分也是需要组织架构的调整,来保证架构的落地。
有了架构就要有架构师,什么是架构师?
架构师就是这个架构的领导人,有权利调动架构的人,能够将问题拆分的人。
同时架构师应该具有一定的行业经验,能够做到快速发现问题和拆分问题,同时清楚自己所领导的架构的优势,尽可能发挥架构的能力。
技术,代码与架构
我们作为软件技术人员,不是技术高,就可以成为架构师。作为架构师应该知道怎样处理业务、技术和架构。
一钻木取火为例
- 业务目标是为了取火,钻木取火这个技术的出现解决了这个问题。
- 钻木取火的效率不高,影响了业务(取火)的效率,就有了进一步改进的动机,改进转动木棍的方式,产生了弓弦转动木棍的技术。
技术与架构,以及与业务之间的关系
技术总是在人类解决对业务的要求不断提高的情况下产生,目的也是为了获取更大更好的利益。所以:
- 技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。
- 有了更好的技术,效率更差的技术,就会慢慢的被淘汰,消失,一切都遵从人类的利益诉求–也就是业务。有人会问,不用钻木取火了,但是弓弦加速转动木棍还可以用啊? 没错,因为弓弦转动木棍这个技术,不是来生火的,是用来加速木棍转动的,所解决的问题不一样。但是两种不同的技术,合理结合起来,会更好更有效率的解决业务问题。
所以技术与技术之间,有两种关系:
3. 在解决同一个业务问题的前提下,更高效,更低成本的技术,会淘汰低效,高成本的技术。这是人类利益诉求所决定的。
4. 一般刚开始解决根本问题的技术(钻木取火)的效率是比较低的,只是把不可能变成了可能(从这一点上来说,技术才是业务的 enabler)。然后就会有提高效率的需求出现,要求改进这个技术。这个技术的低效率部分就会被其他人(或者技术发明人自己)加以改进,这部分就会形成新的技术。
当关系 2 发生的时候,这个地方必定会形成一个切分,新技术会通过某种方式和原有的技术连接在一起形成一个整体,让这个新的技术可以和原有技术共同工作,使得原有的技术可以用更高的效率解决问题。因为要解决的主要问题(生火)并没有发生改变,分拆所形成的是一个树状的结构。
按照前面的架构定义,这个时候其实已经产生了架构。也就是说,一般是先有技术,才会有架构。这些其他技术(弓弦拉动木棍),是从直接解决问题的初始主要技术中分拆出来形成的,并通过树状结构和主要技术(钻木取火)组合在一起。在解决主要问题(生火)之后,再开始逐渐的分拆为更为细粒度的技术(弓弦转木棍)。
而这个细粒度的技术(弓弦转动木棍)往往不会和业务的主要目标(生火)发生直接的关系。不同的技术,通过树状结构,组合在一起,形成了一个完整的架构解决方案,共同完成业务的目标。这就是技术,业务和架构之间的关系。很多人把这个过程称为架构的进化,我更愿意把这个过程称为技术的进步所导致的新的架构分拆,因为这个过程内在的动力,更多的是来自技术对解决业务问题的解决。

浙公网安备 33010602011771号