在上周的 QCon 北京 2022 大会上,我和我的同事黄雨青一起分享了《组织级架构治理的正确方式》,以帮助开发人员对组织级架构治理体系全貌一瞥,并厘清治理工具的设计思路和核心功能内容。
结合我们在 ArchGuard 的探索经验,我们:
考虑到我在 QCon 上讲的时候,可能有点紧张,所以并不是很完全,便想结合 ChatGPT 写一篇文章再介绍一下。
在构建 ArchGuard 时,我们尝试过结合不同的前辈和他们架构理念,从而从不同的维度来构建治理的全景:
用途 | 模型 | 书籍 |
---|---|---|
可视化 | C4 模型 | 《程序员必读之软件架构》 |
分析架构 | 体系结构视图 | 《实用体系软件结构》 |
治理全景 | 视点与视图、利益相关者 | 《软件系统架构:使用视点和视角与利益相关者合作》 |
从起初单一的开发者 C4 视角,到现在利益相关者的视角,它是我们与不同利益相关者碰撞的结果。
它与我们在设计架构时类似,每个利益相关者都有自己的利益,要考虑的问题也有所不同。诸如于,业务人员往往只考虑为什么响应速度慢,并不会关注于代码质量。而与普通的开发人员相比,技术负责人、架构师会更关注于开发规范性。对于一个组织而言,我们需要考虑方方面面的因素,才能尽可能满足大部分人的需求。
除此,量化的角度来说,我们需要将问题划到到时机 —— 创建态、设计态、开发态、运行态等不同的时态,以能更好地选择合适的工具。时机视不同的软件系统,也存在各种的差异。
PS:本小节,由作者(Phodal)提供输入,最后由 ChatGPT 生成。
"点-线-面" 策略是一种规划和管理软件架构的方法。
"线" 指的是连接各个关注点的活动,例如评估、监控等。这些活动可以帮助我们了解当前架构的状况,并且帮助我们持续改进。
"面" 指的是整个架构,我们可以通过不断的评估和改进来实现架构的演进。
总的来说,"点-线-面" 策略可以帮助我们在关注重要领域的同时,通过持续的评估和改进来实现架构的演进。
点-线-面 策略的核心思想是工具化、可视化和指标化。
这样的策略旨在帮助开发人员更好地了解系统的架构,并对其进行持续的改进。
工具化、可视化、指标化方法的选择取决于具体需求和场景。它们可以通过一些已有的开源工具或者定制的工具实现。例如:
它们能帮助团队对软件系统架构进行标准化、可视化和指标化,以确保系统质量和一致性,并有序地演进。
适用于架构治理的工具通常还包括:
不同的需求可能需要结合不同的工具,因此最终的选择应该在实际使用中评估和确定。
由于业内对于架构治理没有统一的定义,所以我们将其持续架构治理模式。为了管理各种不确定性(诸如工作量无法估算、技术选择的不确定性、缺乏清晰的架构治理框架等),并快速交付包含架构治理模型、有价值的软件。我们采用了两个与共同业务成果相一致的工作流:
Discovery,进行试验、评估以确定所选技术的可行性和性能,以更好地分配开发资源。
Development,用于持续构建和发布成功的实验和其他产品功能,并结合迭代反馈。
它们的优点是(ChatGPT 说):
诸如于我们在构建 ArchGuard 代码中的 SQL Lint 分析功能时,开发 MyBatis 的 SQL 生成的工作量时,实际 = 评估 * 4。
对于架构治理而言,我们要考虑的是:
对应的,我们将其核心点总结为:
总之,通过定义问题、捕获数据、归纳指标等步骤,架构师可以更好地控制和管理系统的架构,从而提高系统的质量和性能。
围观我的Github Idea墙, 也许,你会遇到心仪的项目