在第一章王概凯先生就为我们阐述了架构的定义:我个人理解的架构就是将一件事儿分切成小块的问题,然后再进行解决。根据要解决的问题,对目标系统的边界进行界定并分配角色、对问题进行解决。架构师的作用就是分解这些问题,并且使这些问题进行有机的联系,组合成一个整体。
在第章张来,王凯先生提到认识概念是理解架构的基础,这也是我们在平时学习生活中需要注意的点。我们在生活中解决问题经常只是将问题看成问题,然后寻找他的解决办法但是并没有深刻的理解一些概念,所以导致对问题的解答不清晰、不完整。如果我们想做好一个好的架构师,我们需要首先找出这是谁的问题,在这个问题上花费的时间可能会很多,这就是架构师的能力的体现。第二步,我们需要解决有什么问题,然后才开始解决问题。在解决问题的时候,需要对架构进行切分。为什么对架构要进行切分?原因是每个人每天做的工作是有限的,每个人的能力也是有限的,所以说架构切分的导火索是人的负载太重,比如一个人不能生产一台汽车,需要将汽车的生产过程切分成各个小的部分,再由专门的人去做一个小的部分。当然在架构切分的过程中,要保证每个人做的事儿和他的利益责任是对等的,如果责任利益不均衡会导致架构很难有效的进行。在架构切分的过程中也要注意不要将架构切分成太小的块儿,如果分层越多,效率就越低,这不是我们想要的答案。
前面通过四篇文章,把什么是架构,如何做好架构等必要的概念澄清了一下。这些概念对于在各种不同的领域都应该也是有用的,需要读者自行思考,并应用到自己所在的领域中。在这篇文章开始,我们用同样的思考,来看看软件是怎么回事,以及如何运用架构思维,更好的设计和实现软件。
冯诺依曼结构,图灵机,以模拟人为目标
成本为王
软件扮演的角色
仍然是为了提升人类自己的利益,解决人类自己的问题。
软件实际上就是把现实生活模拟到计算机中,并且软件是需要在计算机的硬件中运行起来的。要做到这一点需要解决两个问题:
一、业务问题
二、计算机问题
所以当我们说软件架构的时候,我们一定要讲清楚,究竟说的是部署的架构,还是代码的架构。软件架构的落地,需要软件的组织架构和流程来保障,离开了这个,软件架构是一句空话。
另外很多人讲,架构是进化出来的。架构实际上是在量不断的增大,超过了单台服务器的容量,逐渐的分拆,同时导致超过单个人员的能力,工作人员不断的增多,工作内容不断的分拆形成的。这本身就是架构的意义所在。不管怎么分拆,所达到的目标没有任何变化,就是完成业务在计算机中的虚拟化。
在第七章作者描述了架构师的前提条件、权利和义务、技术让我队软件架构师有一个初步的了解
软件实际上是对现实生活的模拟,虚拟化。这是一个非常重要的前提,直接决定了我们的代码应该分为几部分。结合每个部署单元所承担的责任,可以明确的拆分为两个不同的责任:
- 表达业务逻辑的代码。很多人把这部分叫做 Domain Logic,或者叫 Domain Model。这部分实际是来源于生活的,必须保持和现实生活中的切分一致,并非人为的抽象而成。
- 对用户提供访问并保存业务逻辑运行结果的代码。计算机的状态保存有一个缺陷,本机保留业务运行结果有很大的问题,一般都在外存储设备上保存,也便于扩展
- 在架构漫谈的最后一章作者阐述了什么是技术、
技术与架构,以及与业务之间的关系、
架构师和技术人员的关系
重新发明轮子
当现有已经存在很多技术,而这些技术却和我们所要解决的问题并不是那么直接对应的时候,我们就需要有意识的组织和识别不同的技术,来实现业务的目标。这个时候组织的方式有很多种,其中成本最低的方法就是按照要达成的目的和当前的问题,从上到下进行架构分拆。分拆出来的更细粒度的问题,分解到不同的人来进行解决,就形成了业务架构和组织架构。解决这些问题就需要组合很多不同的技术,那么应该采用哪些技术?还是自己重头实现一个? 自己实现一个—这就是很多人所谓的重新发明轮子。以下试着分析一下:
- 当技术所解决的问题和分拆出来要解决的问题,完全匹配的时候,这是最完美的。比如需要提供 web 要访问的 service,很多 MVC 的 framework 就可以很好的满足这一点。而这个时候如果非要自己实现一个,很有可能就是重新发明轮子。
- 当技术所提供的能力远远超过需要解决的问题时,往往掌握技术和维护技术会成为瓶颈。因为越复杂的技术,成本越高。如果自己实现一个仅仅是解决当前问题的方案,可能成本反而更低。这也是为什么很多大型的互联网公司不断地开源出来自己的技术的原因。而这些技术对于我们来说是否适用?他们原本是用来解决谁的问题的?什么问题?如果不清楚这些,就冒然采用,可能会导致更高的成本。
- 当技术所提供的能力和我们所要解决的问题部分匹配时,还是要看成本。比如当我们需要一个锤子的时候,手边正好没有,但是却有一只高跟鞋,勉强也可以替代锤子。但是长期来看,这么用不划算,因为高跟鞋的价格比锤子高很多,耐用性差很多,维护成本也高很多。
所以,准确识别采用什么技术的能力,也是架构师所要具备的能力之一。考虑的主要因素也是长期的成本和收益。
标签:架构,漫谈,技术,笔记,问题,切分,解决,架构师 From: https://www.cnblogs.com/csj-717/p/17134429.html