本文启发来自 Gregor Hohpe的一篇文章(关于架构策略的参考,有许多关于此主题的著作和书籍)。
在该文中,Gregor 涉及一个非常重要的主题:我们可以采用的拓扑(模型/形式)来处理我们组织团队中的架构。
这是许多组织处理不当或采取静态/极端方法的主题,即:
- 在极端情况下,象牙塔架构师负责指挥和控制团队内外的所有“重要决策”(格雷戈尔模型中的“仁慈的独裁者”) ;
- 或者另一个极端,没有架构师(“因为我们很敏捷”),因此我们不关心团队中的架构纪律(Gregor 模型中的“隐式架构”)。
下面我分享一些关于 Gregor 分享的模型的笔记和见解;接近架构的拓扑结构;进化模式;然后是关于架构范围的一些见解和注释。
团队内架构
Gregor 分享的模型特别强调“团队范围架构”,即:如何在团队拥有的系统中处理架构。所呈现的模型具有四种基本拓扑。可能会有变化和组合,但我认为这四种拓扑提供了一个很好的基础。
- #1:仁慈的独裁者”
- #2:Primus inter pares(架构师 - 作为功能 - 在团队中)
- #3:没有架构师的架构(多个/所有团队成员之一的架构师角色)
- #4“隐式架构”
进化模式
我真正喜欢这篇文章的另一部分是 Gregor 进入“进化模式”这一事实。承认这一点至关重要,因为我们的架构方法取决于许多不断变化的因素(团队成熟度、组织文化、周围系统等)。这对于确保我们的架构方法不断发展以更好地支持团队及其环境中的新条件至关重要(即:我们的架构方法与组织中正在发生变化的其他动态不冲突)。
Gregor 有两种常见的模式(但可能还有其他模式):
- 右移:当我们从团队之外的架构师(例如:首席架构师)开始时,例如架构被长期忽视时,就会发生这种情况;但随后我们采取措施将架构师(职能)整合到团队中;一旦团队成熟,多人可以在团队中扮演架构师的角色。在这种模式中,Gregor 建议停留在模型 #3,即:不要走得太远,没有明确地处理团队中的架构。
- Bounce Back:当“Shift to Right”模式不成功时会发生这种情况,即:我们尝试在团队中有一个架构师,或者甚至团队中有多个人扮演架构师的角色,但效果不佳. 在那些时刻,我们可能会“恢复”让外部经验丰富的架构师明确为团队/与团队一起解决架构问题。这可能又是一个临时活动,以解决在先前迭代中不起作用的点。这听起来像是倒退了一步,但在一个复杂的系统中,您不知道系统将如何反应,因此您必须采取行动来学习(正如#Cynefin 框架所提倡的那样)。
架构作用域
查看团队范围周围的范围以全面解决团队范围并将其连接到周围的范围(和系统)是关键。
事实上,这是由 Gregor 在其他关于他的“建筑师电梯”比喻的文章中广泛发展的——即:“将顶层公寓与机房连接起来”。也在文章“系统级架构设计存在意义:极简主义架构 ”中
赋能架构师
将这个特定的团队定义为“结构赋能团队”。原因来自这样一个事实,即一般来说,这是一个赋能团队(根据书籍定义)存在的时间有限。另一方面,架构团队往往会无限期地存在。
这种“架构作为赋能团队”的定位也意味着我们在组织中有一个架构师网络,具有明确的使命(使能团队),他们可以在领域知识上进行协作,也可以交流做架构的知识,从而培养架构师的技能。在组织中做架构(在架构师之间,以及与他们合作的团队)。这将意味着我们处理架构的方式也将不断发展(例如:新人加入,新挑战出现等)并且我们明确关注迎合架构(即使在特定时刻我们有不那么明确的架构师职能) - 例如:如果这只是文化的一部分,我们需要正式的架构师在场)。
例如,一个人可能具有架构师职能,在多个相关团队中工作,这些团队共同构建产品或为客户的共同价值流做出贡献(例如:公司产品组合中的产品)。下图描绘了这个想法(注意:这是一个简化的表示,旨在展示架构师在此拓扑中的可能定位方式)。
正如我们在图中看到的,这个人(在这种情况下我称她为“产品架构师”)在“产品范围”(围绕团队范围的系统)工作。她将与团队(以及领域以下范围)在产品范围的架构上保持一致。此外,她还可以在指导和支持每个团队在团队范围内(存在不同的应用程序)处理架构方面发挥作用。因此,这成为 Gregor 共享的拓扑 #1 版本的一种升级(具有双向交互),但同时团队(应该)负责团队自己范围架构(即:使用拓扑#3,或在某些情况下#2)。这种组合可以接近解决架构所需的不同范围。