架构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,以Kevin的架构经验为基础,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题。阅读了架构漫谈九篇博客,对于软件架构有了一些简单的了解。
什么是架构?
架构在维基百科上有着很复杂的定义,从这个定义上看,架构好像是一个过程。为了讲清楚这个问题,我们需要了解为什么会产生架构。根据博客来说,什么是架构,就是:
1.根据要解决的问题,对目标系统的边界进行界定。
2.并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
3.并对这些切分出来的部分,设立沟通机制。
4.根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
为什么要出现架构?
首先是社会的发展。最开始的时候,每个人都是独立的个体,自己搞定自己的事情。随着社会的发展,开始出现了群居、合作、分工,当分工发生后,实际上每个人的生产力都得到了提高,因为做的都是每个人擅长的事情。同时,整个人群的生产力和抵抗环境的能力也大大提高,人们通过相互交流、交易获得了需要的全部。通过这个例子来看,把一个整体切分成不同的分工,由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。也可以归纳出架构产生的动力:
1.必须由人执行的工作。
2.每个人的能力有限(每个人都有自己的强项,个人的产出受限于最短板,并且由于人的结构限制,同时只能专注于做好一件事情。)
3.每个人的时间有限(为了减少时间的投入,必然会导致把工作分解出去,给擅长于这些工作的角色来完成,见2,从而缩短时间)
4.人对目标系统有更高的要求(如果满足于现状,也就不需要进行架构了)
5. 目标系统的复杂性使得单个人完成这个系统,满足条件2,3(如果个人就可以完成系统的提高,也不需要别的人参与,也就不需要架构的涉及)。
架构解决谁的问题?
一个问题,不同的人的回答不尽相同。做架构的时候,不同角色的沟通会出很多问题,那么结果也就可想而知了。架构实际上是以人的认识为主体去讨论的,解决的都是人的问题。
什么是软件体系结构?
软件因为流量增大而分拆成不同的运行单元,在不同的机器上部署所形成的架构,属于软件架构。每个运行单元为了让不同角色的人,比如前端,业务,数据存储等能够并行工作,所分成的代码架构,也属于软件架构。
架构师又是什么东东?
当我们所做的工作是处于社会的分工的一环,需要帮助别人解决问题,并且按时解决别人的问题成为我们自己的问题的时候,我们就有了时间压力,潜意识里会自然而然的有一种对时间的恐惧。而当我们把完成别人工作当成自己的最大利益,这个对时间的恐惧自然就会消失,这个时候就自然而然的开窍了,就知道怎么去发现问题了。只有做到这一点,才能在自己所服务的领域建立起自信,成为一个合格的架构师。架构师是要去平衡别人的利益,甚至会调整别人的利益的。架构师必须是一个组织的领导人,有权利调动这个组织的架构。架构师必须能够超越对时间的恐惧–也就是说必须具备了一定程度的自信,哪怕是装的,去真正的发现问题的主体,识别真正的问题,并把这个行为变成为自己面对问题的第一反应。
读了这些博客,只是了解了一些知识,甚至没有了解到怎么真正的去成为一个架构师,感觉还是全身心的投入软件的制作,多多的了解各种知识。希望在接下来课程的学习中可以学到更多有用的知识。