随着技术的发展以及开发实践的演变,我们的系统架构也发生了变化,但我们在架构设计方面的实践方式却并未跟上这些变化。根据Andrew Harmel-Law的观点,架构设计应当采用去中心化的模式,就像我们现有的系统架构一样也是去中心化设计的。在哥本哈根举行的Goto会议上,他介绍了相关的架构设计建议流程

Harmel-Law指出,架构设计面临的最大挑战在于要在恰当的时间出现在恰当的位置上。各种架构决策无时无刻不在发生。如果只有少数人负责所有这些决策,并且需要对这些决策承担责任,那么他们就必须根据准确的信息和背景来为所有人做出最佳决策。同时,这些人也需要为自己的决策结果负责:

他们不仅需要确保自己对架构设计的理解能够被所有人清楚地理解;还需要不断从这些架构设计在实际应用过程中所产生的反馈以及出现的错误中学习。

坦率地说,这几乎是不可能做到的——至少如果你不想成为阻碍团队进展的障碍的话。

Harmel-Law认为,传统的架构设计实践方式(比如“象牙塔”这种比喻,以及“亲力亲为的架构师”这种角色设定)是无法实现大规模应用的;这些传统方式会形成流程上的瓶颈,也无法充分考虑到来自实际运行中的代码所反馈的信息。因此,“架构师”的传统角色需要转变为一个发起讨论、提供指导的角色,从而促进团队之间的共识形成,并为学习与快速反馈创造空间。

另一种替代方案是“让任何人都可以做出决策”。Harmel-Law解释说,建议流程正是为此而设计的:

通过明确“只要寻求所有相关方以及专家的意见,任何人都可以做出任何决策”,这种机制将决策的责任和后果交给了真正需要承担这些责任的人。虽然没有人被强制要求必须做出决策,但那些觉得有必要这样做的人仍然可以自由地做出决定。

这样一来,关于架构设计的讨论就会在需要的任何时间、任何地点展开。Harmel-Law提到了一些案例研究来说明这一点:InfoQ杂志的文章《赋能团队:实现架构决策的去中心化》,以及Xapo银行在架构设计实践中的去中心化尝试这些文章都说明了这一点。

在这种模式下,“架构师”的角色会在整个组织中分散开来,那些传统上承担这一角色的人会转变为提供建议、提供背景信息、协助决策制定以及引导讨论的人。架构设计的实践也会扩展到所有需要参与其中的人手中,并且会得到具有相关经验的人们的支持。

作为一个过去曾经担任过传统“架构师”角色的人,体验这种新的工作方式确实令人感到非常兴奋。

通过运用这种架构咨询流程,任何人都可以做出任何架构决策,只要他们能寻求以下人员的建议:

  • 那些会受到该决策影响的人
  • 那些具备相关专业知识的人

采用这种架构咨询流程其实是一场革命;它让我们重新回归软件系统设计的根本原则,其核心在于确保在恰当的时间、由合适的人员进行必要的讨论。Harmel-Law这样解释道:

这种实践方式会根据你的具体情况、你的同事们、你现有的系统、你的客户/用户群体、技术的发展趋势以及你所处的市场环境等因素,形成独一无二的实施方式。

Harmel-Law还提到了一些需要特别注意的常见错误模式:

  • “错误的决策”——尤其是那些高级管理者插手干预,阻止决策的正常流程。
  • “老派与新生代的对立”——仍然是由同样的资深架构师来做出所有决策。
  • “秘密决策”——某些决策在私下进行,或者没有遵循规定的流程(例如没有寻求适当的建议,也没有将相关内容记录在架构决策报告中)。
  • 缺乏信任——人们之间不信任对方会按照规定的流程来行事,也不愿意为自己的决策承担后果。

Harmel-Law指出,在初期,参与者可能会遇到一些困难,因为他们很难摆脱自己原有的思维模式。在这种情况下,不再需要达成共识,提供建议的人也不会给予“批准”或“许可”;最终是否采纳这些建议,仍然由发起决策流程的人来决定。即使提供的建议没有被采纳,这也是完全可以接受的。

Harmel-Law举了一个例子:一个团队想要为他们正在开发的服务选择一个新的平台。可供选择的方案包括使用Lambda函数、在Kubernetes容器中运行微服务,或者使用定制的计算节点。

一位系统架构师针对Lambda函数的选项提出了建议,并将这些建议写在了相关的架构决策报告中。他指出,根据他的经验,使用Lambda函数会导致启动速度变慢,同时还会增加状态管理的难度。尽管团队理解了这些顾虑,但他们仍然可以选择使用Lambda函数的方案。最终,他们还是要为自己的这一决定负责;虽然他们应该已经了解了系统架构师的担忧,但并没有义务必须遵循这些建议。

Harmel-Law表示,这种变革不仅改变了架构设计的实践方式,也改变了从事这一工作的人们的思维模式。它使架构设计从一种基于等级制度、封闭的、半保密的知识体系,转变为一种强调知识共享和共同经验的实践方式。它让那些依靠个人知识拥有权力的人意识到,真正的力量来源于“我们所有人都能在恰当的时间获得正确的信息”。

Comments are closed.