聂同学

一个程序员和架构师的实践与思考

架构的持续演进——总体机制

架构的持续演进,是系统和团队成长和成功的关键。将有几篇文章来分享一些想法。上一篇(链接),讲了持续演进架构的组织模式,这一部分,讲讲总体机制设计。

要点都体现在最下面的图里(分辨率足够,打开地址可以放大)。以下文字是对图的一些说明。

两个维度

两个维度将整个涉及到领域划分为了四个象限。纵向方面,有执行层和治理层两个层面。横向方面,有设计时和运行时的划分。各个象限的负责人和侧重点不同,跨越象限的信息交流可能有相对高的成本。

五个箭头

箭头表示的是信息的流向,同时也是影响力的流向。图上箭头标注了序号,与下面的序号对应。

  1. 架构决策的执行,手段上可以是直接下发设计的详细结果。但在”涌现架构“风格下,更多可能是制定设计守则、确立重构行动项等更有空间的方式。
  2. 架构执行的结果在设计时的反馈,可能通过架构治理者的主动review、工具的扫描等手段,对详细设计和系统结构(此时多体现为代码结构)进行观察评价。
  3. 通过一些运行时工具和技术组件,采集系统在运行时的特征,包括结构特征和质量指标。比如通过apm工具和log分析工具采集系统容量、性能指标。通过服务发现平台、配置管理平台采集系统间的动态依赖关系等等。
  4. 运行时观察到的系统特征,对它的评价和应对,成为架构决策的重要依据。3、4两个箭头,共同组成了架构执行的结果在运行时的反馈。
  5. 双向箭头,是具体的架构决策与架构原则架构规划之间的作用。架构决策由架构原则和规划指导,但架构决策的过程中也会将现场诉求反馈到架构原则和规划中,推动原则和规划演进和修正。

三个循环

上述的五个箭头形成了三个循环。循环是这个机制的要点,只有形成循环,机制才是一个持续运行的机制,才能达到驱动架构持续演进的目的。

  1. 最大的和最重要的循环,由箭头1、3、4组成,覆盖了整个领域四个象限。体现了系统最终运行时的特征对架构演进的首要驱动作用。
  2. 第二个循环,横跨在右边的上下两个象限,由箭头1、2组成。体现了设计时在治理层和执行层的互相影响。
  3. 第三个循环,在右下象限,由箭头5完成。体现在治理层内部,架构高层设计也是一个持续演进的过程。

两个角色

执行层,主要是开发或称现场架构角色来负责。治理层,则是由全局架构角色负责。这里的全局与现场,是相对概念,全局是相对全局,并不是说就一定是整个公司整个系统群。另外,在比较小的团队,两个角色是一个职位也是很有可能的。

(现场架构角色的定义见前一篇文章。)

另外

整个开发过程中,有些活动与图中的活动是有交集的,比如运维/开发同样对运行时指标有密切互动。但这类活动与架构演进的主题关系较弱,图中没有体现。

架构, 管理, 过程

分享 -