从2000年左右以JAVA技术为本的应用web化到当前以云为本来构建应用,这接近20年来技术演进趋势来看。应用软件架构的变与不变整体上还是能够看出来一些脉络。
先讲不变的。
用于构建应用领域逻辑本身的技术并无本质变化。从领域逻辑建模看,基本还是围绕着对象以及对象之间的连接关系。SOLID原则依然充满了活力,GOF的设计模式仍然是常青树。UML以及其工具仍然是主流建模方法和沟通语音。即使从JAVA数个版本来看,也仅仅是语音特性上的改进(如泛型、λ表达式)并没有出现根本性的逻辑形式化方法。因此,构建领域逻辑的技术,无论是设计方法还是具体程序编制技术,没有本质上的变化。
其次,在企业应用领域,关系数据库仍然是核心数据模型以及存储的主流技术。这一点可能不太严谨,而且当下关系分布式、分库等技术快速演进(Google Spanner等),另外nosql生态也正在蓬勃发展。但是数据关系的核心技术还是二维表。应用逻辑构建技术各类orm框架正是致力于解决对象和关系的映射问题。
以上两点是稳定部分。
再讲,变化的。
运行时环境,应用宿主平台发生了翻天覆地的进步。从基础设施角度看,基本分几个阶段,PM + 商业中间件,PM + 开源轻量级中间件,VM + 轻量级开源中间件,容器化等。
应用全局架构的变化,从单体架构到微服务架构。(待续)
应用部署的分布式云化。
应用构建的组织结构、工具、部署、运维方式的同步演进。
应用的生态化发展,产业分工的演进。
以上是发生演进进化的几点。
指出变化与不变,相对清晰和容易。为什么会产生变化,以及为什么不变的部分是稳定的,这个问题更具有启发性思考的价值。下面就来谈谈。
待续。。。