我的架构思想(三十九):架构原则,技艺、艺术与美——架构原则(架构第三原则:架构 = 范围 + 联接件。)

阅读数:16 2019 年 10 月 12 日 17:12

我的架构思想(三十九):架构原则,技艺、艺术与美——架构原则(架构第三原则:架构=范围+联接件。)

1. 基本前设

架构的目标究竟是什么?我们当然知道其目标是系统——无论是大的、复杂的体系,还是一个小的、有含义的组成,又或是我们要考虑其系统性的任何东西。然而这一概念下的系统,其内涵是丰富以至于无可穷尽的。架构作为一个事实工具或对于这一系统的事实影射,只能表达其中的部分而决非全集。因此,我们所谓“架构的目标是什么”,其答案必将指向系统,也必然是系统特定的一面两面或数个方面,这是我们在这一前设中必须明确的。

对于本书的前两编中所讨论的架构,我们已经确定地将它的源起指向“系统方向的必要性”。若某种架构并不以“系统方向”为目标,那么它不适宜作为此前那些章节要讨论的基本对象,亦即它们在基本的抽象概念上是不同的9。“架构 = 范围 + 联接件”这样的求解是特指面向系统的方向问题的。若是讨论系统的其他问题,则相关的求解仍可以称为“架构”,并仍满足第一和第二原则,但未必满足第三原则。

9 因此我并不能确切地说“世界上所有称为架构的东西”都适于本书的讨论。

本原则是对第二原则的补充,讨论架构作为工作产物时的内容。

2. 范围与联接件之于系统的意义

决策层在系统的方向问题上赋予架构师的职责是“目标的映射”。这包括两方面的含义,其一,不一定是确实的目标,例如某个产品或产品的某个版本;其二,是对目标的约束,而非说明其实施的细节。范围与联接件是架构师的两个工具,与其说它们是对规模与复杂性的求解,不如说它们事实上就是架构师对“系统的方向问题”的两个求解。

所谓方向与目标有一些基本性质,包括:其一,系统的方向可能是确实的,也可能是阶段性变化的;其二,阶段目标清晰而明确,但方向却可能存有模糊性;其三,方向必是一个面的问题,而目标方才是点的问题。架构的很大一部分工作,便在于把握这些“模糊的阶段状态(阶段目标或产品版本)”背后的系统关键,通过联接件来刻画系统的脉络。无论系统在中长期上的变化为何,这些通过联接件得到的系统脉络是很难有变化的。比如说,我们很难改变 Web 中用户行为的流向,总是从主页到二级、三级或更多级页面。但是,当某种行为模式提出来的时候,这种脉络就变化了。例如,以用户为中心的 SNS 网站,那么就会是从登录 / 验证开始,并经由不同用户行为引导而形成流向。那么这两类网站的联接件与联接关系就会非常不同,而各自的(关于联接的)架构也必是在这一网站的发展过程中长期不变的10。因此,相对于系统的多个阶段目标,联接件(及其联接关系)总是纵贯其间的。

10 在实践中,我通常会要求架构师试图站在两个点上考虑系统脉络,一是核心数据的流向,二是用户行为的起始。这许多时候决定了整个系统中的、相对长期不变的东西。

但是联接件只是解构系统复杂性的一个手法。如同我们在层次架构中通过“逐层清晰”来解构系统复杂性一样,这一手法通常用来确保系统长期的不变性——复杂性通常是由可变性引起的。

架构在应对系统方向下的规模问题时,采用的方法通常有两个:其一是对“系统组成”的明确约定,例如模块图或(细化的)层次架构图;其二是对系统构件的明确概念。后者——构建明确概念是架构抽象中最困难而又最重要的工作之一。例如,我们在讨论办公系统时,对于“办公业务系统”与“办公管理系统”的概念定义与辨析。当架构师使用这样一个词汇(定义,或称之为“概念”)来表述目标系统时,事实上就是对系统范围的明确约束。但问题通常不在于如何表述,而在于架构师“何以确定这一表述是符合系统方向的”11

11 在实践中,我通常会要求架构师以“一句话或一个标题”来定义他的系统。我们最终必须关注这句话或这个标题对于系统的概括力与约束性,而非去感觉它是否醒目或时髦——后者通常是产品经理的事情,并且常常为市场经理以及大老板所乐见。

系统总在变大12,在它的形态与内涵两个方面都必将存在失控的风险。这两个风险是骈生的。此外,风险与机会也是骈生的,所以架构不仅能够反映系统的“范围与联接件”,也可以反映系统的“转折点”。只是后者常常仅被视作风险而遭到严防死守罢了。无论从哪一个角度入手,范围与联接件都是架构用于保障系统方向以及提供系统在方向上应变的可能性的主要工具,架构所表达的是此二者的全集,而非其一或其他。

12 微之甚微,巨之愈巨,皆是系统规模的增加。

评论

发布