最近在思考于如何更好的设计系统架构,以及如何对系统的架构进行守护。对于这个问题来说,我想到的第一步是:分解大泥球。于是乎,问题的第一步就是,分解架构设计的所有概念。第一个产物便是:架构金字塔。虽然不是非常合适,勉强用这个名称吧。
架构金字塔,即把软件架构按照不同的粒度进行分组。通过分组的细分,我们能有针对性地对系统架构,进行更好的管理和设计。
一个软件系统是由一系列的应用组成的,而一个应用则由一系列的模块组成,进一步的模块是由代码组成的。举个示例,一个现代的系统是由一系列的后端服务、客户端应用组成的;拆解开一个微服务,则是由一系列的模块组成的……。
结合康威定律,对于复杂的软件系统来说,其组织结构需要与架构模式对齐。因此,我们可以看到对于大型系统来说,它的组织模式是以类似的方式展现。不同层级的人员,需要对不同的分组负责、守护,因此便有了:
在《前端架构:从入门到微前端》一书中,我们提出了设计架构时所需要的层次要素,便有了架构金字塔。
为此,我们划定了架构的四个层级 + 基础设施层:
注
:图中的服务导向架构出自于《演进式架构》,包含了 SOA、微服务架构及基于服务的架构等;而聚合导向架构指的则是客户端的架构模式,客户端以聚合来展示一致性,诸如前端领域的微前端、移动应用的插件化等。
这种架构模式,特定符合我们日常设计架构的特点: 先自顶向下设计,再自底向上实践 (适应)。这部分的详细内容可以见: 构建质量可信的软件系统 (https://www.phodal.com/blog/build-trusted-software-system/)
于是乎,基于架构金字塔,我们有了系统架构的战略设计与战术设计的完美结合(来源于 DDD 的设计思想)。便有了基于演进式架构的架构设计的模式:
在上图中:
其与架构金字塔的对应关系:
你说呢?