《架构漫谈》读书笔记六

软件架构究竟是要解决什么问题?前端

软件实际上就是把现实生活模拟到计算机中,而且软件是须要在计算机的硬件中运行起来的。要作到这一点须要解决两个问题:编程

1、业务问题服务器

具体的现实生活状态下,没有软件的时候,所解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运做的?架构

1. 业务的owner须要提高业务的效率,下降业务的成本,这是动机。这个实际上就是业务的问题,因此通常软件开发的出发点就在这里。编程语言

2. 是软件工程师的问题,要解决业务owner把业务虚拟化的问题,而且要解决软件开发和运营的生命周期的问题。性能

2、计算机问题学习

如何把现实生活用软件来模拟?生命周期

模拟出来的软件,须要哪些硬件设施才可以知足要求? 而且当访问量愈来愈大的时候,软件可否支持硬件慢慢长大,性能线性扩展?开发

由于硬件是可能会失效的,软件如何在硬件失效的状况下,仍然可以保证可用性,让用户可以不中断的访问软件提供的服务?部署

怎么收集软件产生的数据,为下一阶段的工做提供依据?

学习业务知识,认识业务所涉及的stakeholders的核心利益述求,以及业务是如何分拆知足这些利益诉求,并经过怎样的组织架构完成整个组织的核心利益的,以及业务运做的流程,涉及到哪些概念,有哪些权利和责任等。

 

经过对业务知识的学习,针对这些概念所对应的权利和责任以及组织架构,对业务进行建模,并把建模的结果用编程语言实现。这是业务的模型,一般是现实生活中利益斗争的结果,是很是稳定的。

 

学习业务所参与的stakeholder是如何和业务打交道,并完成每一个人的权利和义务的,并经过编程语言,结合业务模型实现这些打交道的沟统统道。这部分是变化最频繁的,属于组合关系。明白了这一点,对后续的实现很是有帮助。

 

如何把业务运行的结果持久化,并经过合适的手段把持久化后的数据,在合适的时间合适的地点加载出来。这部分和基础设施有关,变化可能也会比较频繁。

主要解决了软件架构是须要解决的问题。其实也就是解决究竟那些算是软件架构呢?其一:软件由于流量增大而分拆成不一样的运行单元,在不一样的机器上部署所造成的架构,属于软件架构。其二:每一个运行单元为了让不一样角色的人,好比前端,业务,数据存储等可以并行工做,所分红的代码架构,也属于软件架构。那么软甲架构是怎么解决问题的咱们必定要讲清楚,究竟说的是部署的架构,仍是代码的架构。软件架构的落地,须要软件的组织架构和流程来保障,离开了这个,软件架构是一句空话。另外不少人讲,架构是进化出来的。架构其实是在量不断的增大,超过了单台服务器的容量,逐渐的分拆,同时致使超过单我的员的能力,工做人员不断的增多,工做内容不断的分拆造成的。这自己就是架构的意义所在。无论怎么分拆,所达到的目标没有任何变化,就是完成业务在计算机中的虚拟化。