根据架构漫谈博客,咱们首先知道如下概念:架构
(一)什么是架构人工智能
并对这些切分出来的部分,设立沟通机制。对象
根据 3,使得这些部分之间可以进行有机的联系,合并组装成为一个总体,完成目标系统的全部工做。get
(二)如何识别问题博客
找出问题的主体,是作架构的首要问题。咱们要解决的问题,必定都是人的问题。更进一步,架构师要解决的,基本都是别人的问题,不是本身的问题。再进一步,咱们必定要明白,任何找上架构师的问题,绝对都不是真正的问题。为何呢? 由于若是是真正的问题的话,提问题过来的人确定都可以本身解决了,不须要找架构师。架构师都要有这个自觉:发现问题永远都比解决问题来的更加剧要。class
通常来讲,从问题暴露的点,一点点去溯源查找,必定会找出来谁的问题,以及是什么问题。最坏状况就是当咱们时间或者能力有限,实在是没法定位出是谁的问题的时候,好比系统出故障,也就意味着咱们没法根本解决问题。这时最好的办法就是去下降问题发生所带来的成本,尽可能去隔离问题影响的范围。给我留出时间和空间去识别真正的问题。效率
(三)如何作好架构切分扩展
当人们认识到要主动的去切分一个系统的时候,毫无疑问,咱们不能忘掉利益这个原动力。全部的切分决策都不可以违背这一点,这是大方向。结合前一篇“识别问题”,一旦肯定了问题的主体,那么系统的利益相关人(用现代管理学语言叫:stockholder)就肯定了下来。所发现的问题,会有几种状况:软件
某个或者某些利益相关人负载过重。互联网
时间上的负载过重。
空间上的负载过重,本质上仍是时间上的负载过重。
2.某个或者某些利益相关人的权利和义务不对等。
状况1是切分的缘由,状况2是切分不合理而致使的新的问题,最终仍是要回到状况1。对于状况1,本质上都是时间上的负载。由于每一个人的时间是有限的,怎么在有限的时间内作出更多的事情?那么只有把时间上连续的动做,切分红时间上能够并行的动做,在空间上横向扩展。因此切分就要有几个原则:
必须在连续时间内发生的一个活动,不能切分。好比孕妇怀孕,必需要10月怀胎,不可以切成10我的一个月完成。
切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。比方说妈妈10月怀胎,妈妈有权利处置小孩的出生和抚养,一样也对小孩的出生和抚养负责。为何必须是这样呢? 由于若是权利和义务是不对等的话,会伤害每一个个体的利益,分出来执行的效率会比没有分出来还要低,实际上也损害了总体的利益,这违背了提高总体利益的初衷。
切分出来的部分,不该该超出一个天然人的负载。固然对于每一个人的能力不一样,负载能力也不同,须要不断的根据实际状况调整,这实际上就是运营。
切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。若是由于切分致使整个系统解决的问题发生了变化,那么这个变化不属于架构的活动。固然不少时候当咱们把问题分析的比较清楚的时候,整个系统的边界会进一步的完善,这就会造成螺旋式的进化。但这不属于架构所应该解决的问题。进化的发生,也会致使新的架构的切分。
原则2是确保咱们不能违反人性,由于维护本身的利益,是每一个人的本性。只有权利和义务对等才能作到这一点。从原则2的也能够推理,全部的架构分拆,都应该是造成树状的结果,不该该变成有向图,更不该该是无向图。不少人一谈架构,必谈分层,可是基本上都没意识到,是由于把一个总体分拆为了一棵树,由于有了树,才有层。
(四)什么是软件
咱们是把咱们平常生活中所作的事情,包括咱们本身本人都一块儿虚拟化到了计算机中。而人则演化成了,经过计算机的输入输出设备,控制计算机中的本身,来完成平常的工做,以及与其余人的沟通。也就是说,软件一直以来的动力,始终都是来模拟人和这个社会的。好比模拟大气运动(天气预报),模拟人类社会(互联网社交),模拟交易,包括如今正在流行的VR,人工智能等等。模拟的对象愈来愈高级,难度愈来愈大。
无论如何发展,模拟人的全部行为都是一个大的趋势。也就是说,软件的主要目的,仍是把人类的生活模拟化,提供更低成本,高效率的新的生活。从这个角度来看,软件主要依赖的仍是人类的生活知识。软件更多的是扮演一个cost center,这也是为何会出现不少的软件代工。
(五)什么是架构师
当咱们所作的工做是处于社会的分工的一环,须要帮助别人解决问题,而且按时解决别人的问题成为咱们本身的问题的时候,咱们就有了时间压力,潜意识里会天然而然的有一种对时间的恐惧。这个恐惧在潜意识里面会千方百计推进咱们采用各类手段,以便及时的完成工做,换取报酬。甚至会加班加点,不择手段。
若是咱们还生活在这个恐惧下面,是不可能成为架构师的。要成为架构师,必需要超越这个恐惧才可以看清楚,咱们要解决的是别人的问题,不是本身完成工做的问题。由于仅仅是完成了本身的工做,也并不必定就解决了别人的问题。若是别人的问题没有解决——即便咱们认为本身的工做完成了——咱们的工做实际也没完成,由于咱们工做是否完成,是别人说了算的,不是咱们本身。
架构师是要去平衡别人的利益,甚至会调整别人的利益的。一旦架构师是全心全意的为别人的利益服务,天然而然的架构师就拥有了强有力的影响力,确定会是一个leader。可是只是民意上的leader是没有用的,不能彻底发挥架构师的能量。
架构师必须是一个组织的领导人,有权利调动这个组织的架构,才可以更好的发挥架构师的做用,更好的把利益的调整落到实处。因此不少公司设了不少架构师的职位,可是并不具有调动组织架构的权利,那么这个架构师的职位必定是形同虚设。架构师只可以经过创建某些流程来行使架构师的权利,好比强制架构review,反而会形成不少内部没必要要的冲突,最终都会致使这些流程流于形式,得不偿失。相信不少人都已经经历过这些,但彷佛不多有人回去探讨这是为何。
技术老是在人类解决对业务的要求不断提升的状况下产生,目的也是为了获取更大更好的利益。因此:
技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。
有了更好的技术,效率更差的技术,就会慢慢的被淘汰,消失,一切都听从人类的利益诉求——也就是业务。有人会问,不用钻木取火了,可是弓弦加速转动木棍还能够用啊? 没错,由于弓弦转动木棍这个技术,不是来生火的,是用来加速木棍转动的,所解决的问题不同。可是两种不一样的技术,合理结合起来,会更好更有效率的解决业务问题。
因此技术与技术之间,有两种关系:
在解决同一个业务问题的前提下,更高效,更低成本的技术,会淘汰低效,高成本的技术。这是人类利益诉求所决定的。
通常刚开始解决根本问题的技术(钻木取火)的效率是比较低的,只是把不可能变成了可能(从这一点上来讲,技术才是业务的enabler)。而后就会有提升效率的需求出现,要求改进这个技术。这个技术的低效率部分就会被其余人(或者技术发明人本身)加以改进,这部分就会造成新的技术。