如何持续架构治理?我们和 ChatGPT 聊了一会?

news2024/11/24 3:06:32

在上周的 QCon 北京 2022 大会上,我和我的同事黄雨青一起分享了《组织级架构治理的正确方式》,以帮助开发人员对组织级架构治理体系全貌一瞥,并厘清治理工具的设计思路和核心功能内容。

结合我们在 ArchGuard 的探索经验,我们:

  1. 基于 “视点与视角” 构建架构治理的工具全景。以帮助组织了解架构治理的整体情况

  2. ”点-线-面” 策略。以帮助组织围绕关注点,设计举措,引导架构的演进。

  3. 建议以探索的方式构建量化工具。以使工具更加适用和实用。

  4. 工具构建的要点:定义问题、捕获数据、归纳指标。以保证工具构建的准确性和有效性。

考虑到我在 QCon 上讲的时候,可能有点紧张,所以并不是很完全,便想结合 ChatGPT 写一篇文章再介绍一下。

一、构建架构治理全景: “视点与视角、利益相关者”

在构建 ArchGuard 时,我们尝试过结合不同的前辈和他们架构理念,从而从不同的维度来构建治理的全景:

用途模型书籍
可视化C4 模型《程序员必读之软件架构》
分析架构体系结构视图《实用体系软件结构》
治理全景视点与视图、利益相关者《软件系统架构:使用视点和视角与利益相关者合作》

从起初单一的开发者 C4 视角,到现在利益相关者的视角,它是我们与不同利益相关者碰撞的结果。如下,是我们结合上述的《软件系统架构》一书,构建的全景图示例:

e4a60fa200a648d277a957e4b531d93c.png

它与我们在设计架构时类似,每个利益相关者都有自己的利益,要考虑的问题也有所不同。

诸如于,业务人员往往只考虑为什么响应速度慢,并不会关注于代码质量。

而与普通的开发人员相比,技术负责人、架构师会更关注于开发规范性。对于一个组织而言,我们需要考虑方方面面的因素,才能尽可能满足大部分人的需求。除此,量化的角度来说,我们需要将问题划到到时机 —— 创建态、设计态、开发态、运行态等不同的时态,以能更好地选择合适的工具。时机视不同的软件系统,也存在各种的差异。

二、“点-线-面” 策略

PS:本小节,由作者(Phodal)提供输入,最后由 ChatGPT 生成。

e7d67395b9475abcd98d7b98a927de00.png

“点-线-面” 定义

"点-线-面" 策略是一种规划和管理软件架构的方法。

  • "点" 指的是重点关注的领域,例如性能、安全等。我们需要通过工具来监控这些关注点。

  • "线" 指的是连接各个关注点的活动,例如评估、监控等。这些活动可以帮助我们了解当前架构的状况,并且帮助我们持续改进。

  • "面" 指的是整个架构,我们可以通过不断的评估和改进来实现架构的演进。

总的来说,"点-线-面" 策略可以帮助我们在关注重要领域的同时,通过持续的评估和改进来实现架构的演进。

“点-线-面” 核心思想

点-线-面 策略的核心思想是工具化、可视化和指标化。

  • 工具化:将架构治理的各种实践放入到开发流程中,通过工具化的方式简化实现。

  • 可视化:围绕着不同的关注点,通过可视化的手段(如可视化图形、报告等),对系统的架构进行监控。

  • 指标化:通过不断地对系统进行评估和度量,并通过指标化的方式来描述系统的表现。

这样的策略旨在帮助开发人员更好地了解系统的架构,并对其进行持续的改进。

“点-线-面” 示例

工具化、可视化、指标化方法的选择取决于具体需求和场景。它们可以通过一些已有的开源工具或者定制的工具实现。例如:

  • 工具化:代码检查工具(Linter),代码风格管理工具,代码生成工具等。

  • 可视化:系统架构图(例如 C4 model),应用性能监测工具(APM)、架构文档(如 Archimate)、可视化系统(如 Archimate Viewer)等。

  • 指标化:代码度量工具(如 SonarQube)、度量和报告工具(例如 InfluxDB + Grafana)等。

它们能帮助团队对软件系统架构进行标准化、可视化和指标化,以确保系统质量和一致性,并有序地演进。

其它工具

适用于架构治理的工具通常还包括:

  1. 架构建模工具:用于捕捉和模拟系统架构,帮助开发人员更好地了解系统的构建和行为。

  2. 架构文档工具:用于管理架构文档,使团队能够保持一致的架构治理标准。

  3. 架构模型工具:用于创建和管理架构模型,帮助团队更好地控制和管理架构的复杂性。

  4. 可视化工具:用于展示架构和系统信息,帮助团队更直观地理解系统状态。

  5. 架构审核工具:用于审核架构设计,帮助团队确保架构设计符合架构治理标准。

  6. 架构版本管理工具:用于管理架构版本,帮助团队跟踪架构的变化和演进。

不同的需求可能需要结合不同的工具,因此最终的选择应该在实际使用中评估和确定。

三、探索式架构工具开发

c0b2b0f1d3d8786805c1386c64cf00b6.png

由于业内对于架构治理没有统一的定义,所以我们将其持续架构治理模式。为了管理各种不确定性(诸如工作量无法估算、技术选择的不确定性、缺乏清晰的架构治理框架等),并快速交付包含架构治理模型、有价值的软件。我们采用了两个与共同业务成果相一致的工作流:

  • Discovery,进行试验、评估以确定所选技术的可行性和性能,以更好地分配开发资源。

  • Development,用于持续构建和发布成功的实验和其他产品功能,并结合迭代反馈。

它们的优点是(ChatGPT 说)

  1. 更好的风险管理:通过 Discovery 阶段的试验和评估,可以确定所选技术的可行性和性能,从而减少技术上的风险。

  2. 更快的交付:通过 Development 阶段的持续构建和发布,可以快速交付含有架构治理模型的有价值的软件。

  3. 更高的效率:通过 Discovery 阶段的试验和评估,可以更好地分配开发资源,从而提高开发效率。

  4. 更好的迭代反馈:通过 Development 阶段结合迭代反馈,可以快速修正问题,并不断提高产品质量。

  5. 更好的合作:通过与共同业务成果相一致的工作流,可以更好地沟通和协作,从而提高团队效率。

诸如于我们在构建 ArchGuard 代码中的 SQL Lint 分析功能时,开发 MyBatis 的 SQL 生成的工作量时,实际 = 评估 * 4

四、治理工具构建要点

40a09d7dacb05d14f74a56c53e85e872.png

对于架构治理而言,我们要考虑的是:

  1. 标准化能力/实践。通过寻找针对于大部分团队或场景都适用的方法和策略,提高团队的标准化能力,更好地推进架构治理工作。

  2. 持续分析与检测。持续探索和完善已有工具不支持的规范与标准化实践,保证架构治理的有效性和可靠性。

  3. 多维度度量。通过结合不同治理工具的数据和指标框架,构建适合于自身组织的指标,对架构治理的效果进行客观评价。

对应的,我们将其核心点总结为:

  1. 定义问题:首先,架构师需要定义架构治理的问题,诸如系统性能不佳、质量问题等。

  2. 捕获数据:其次,架构师需要捕获数据来了解系统的运行情况,例如,使用应用性能监测(APM)工具获取系统性能数据,使用代码度量工具(如SonarQube)获取代码质量数据等。

  3. 归纳指标:最后,架构师需要归纳指标来评估系统的情况,例如,评估系统的性能是否满足需求,评估代码质量是否符合标准等。

总之,通过定义问题、捕获数据、归纳指标等步骤,架构师可以更好地控制和管理系统的架构,从而提高系统的质量和性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/344161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自有APP上如何运行小游戏?

近年来小程序游戏迎来了爆发式增长。微信、支付宝、抖音等各大平台小程序游戏愈加丰富,你是否也让自己的App也拥有运行丰富的小游戏的能力?今天就来带大家看看如何实现。 我们先来看看各互联网巨头关于小游戏生态的特征: 「微信」 率先推出…

open3d点云配准函数registration_icp

文章目录基本原理open3d调用绘图基本原理 ICP, 即Iterative Closest Point, 迭代点算法。 ICP算法有多种形式,其中最简单的思路就是比较点与点之间的距离,对于点云P{pi},Q{qi}P\{p_i\}, Q\{q_i\}P{pi​},Q{qi​}而言,如果二者是同一目标&am…

如何将一张纹理图贴在模型上

前言 小伙伴们是否有过这样的场景:看到一个精美的3D模型,很想知道它是如何被创作出来的?于是开始了一番搜索引擎查找之后,得知需要建模工具来完成,例如3D Max、Maya、Blender、Photoshop。那么本篇就使用这些工具来完成一个精美的…

Redis【包括Redis 的安装+本地远程连接】

Redis 一、为什么要用缓存? 缓存定义 缓存是一个高速数据交换的存储器,使用它可以快速的访问和操作数据。 程序中的缓存 在我们程序中,如果没有使用缓存,程序的调用流程是直接访问数据库的; 如果多个程序调用一个数…

如何在原始的认知上找回自己

认知、欲望加恐惧,这三种要素在我们对一个事物的判断中都在起作用,只不过配比不一样,导致你的判断不一样。我们通常以为有了认知能力,就产生了认知,就如同面前有一个东西,你用照相机拍下来就成了一张照片—…

【算法基础】高精度除法

👦个人主页:Weraphael ✍🏻作者简介:目前是C语言 算法学习者 ✈️专栏:【C/C】算法 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

PN外加电场后电场变化

没有外加电场时(下面都是以外加反向电场分析) 中间两条实线假设是PN节在没有外加电场的情况下形成的一个内部电场边界。 形成原因 实用的半导体一般是混合物 P型半导体,实际上是一种4价和3价元素的混合物。化学中都知道达到4或8的外层电子…

论文浅尝 | KGE by Adaptive Limit Scoring Loss Using DWS

笔记整理:陈磊,天津大学硕士链接:https://ieeexplore.ieee.org/ielx7/6287639/7859429/08057770.pdf动机设计一个强大而有效的损失框架对于知识图嵌入模型区分正确和不正确的三元组至关重要。经典的基于边距的排名损失将正负三元组的分数限制…

极智AI | 算能SDK架构

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文介绍一下 算能SDK架构。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com…

华芯微特开发环境搭建-SWM34SVET6为例

SWM34S系列是cortex-M33,内核是arm-v8指令集,和其他cortex系列有差异,要新的工具版本支持(jlink要升级到V9以上,keil要升级到5.32以上)。 1.Keil要先安装5.36的版本,并取得版权(5.3…

【MYSQL中级篇】数据库数据查询学习

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 相关文章 文章名文章地址【MYSQL初级篇】入门…

网络安全-Kali更新源(APT)

网络安全-Kali更新源(APT) 这篇东东很少内容 Kali是基于乌班图开发出来的 这个APT不是攻击的那个APT 这个APT和centos里面的YUM是一样的 下面是介绍的一些国内的APT包,我自己用的阿里云 通俗点怎么理解呢,你手机里面的应用市场,苹…

【闲聊】我用ChatGPT参加了大数据面试

用Chat GPT试了试面试题,回答得比较简单。 问:你可以以应聘者的身份参加一场大数据程序员面试吗 答:可以 ,如果您符合面试要求,可以参加大数据程序员面试。 问:那么为什么你要投递大数据开发这个岗位 答&am…

数据结构总结

数据结构总结排序算法冒泡排序选择排序插入排序希尔排序堆排序快速排序算法归并排序计数排序基数排序树红黑树基本概念规则B树基础知识规则B树图回溯算法并查集拓扑排序其他算法KMP算法例题数组类求最大和子数组求子数组最大乘积删除重复链表元素十大排序算法参考 排序算法 冒…

16:00面试,16:09就出来了 ,问的实在是太...

从外包出来,没想到算法死在另一家厂子 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到8月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内…

情人节快到了,我部署了一套情侣头像小程序,并过审了

最近在学习如何部署微信小程序,目的就是像拥有一个属于自己的小程序 之前做的是一个微信公众号,靠自然的流量虽然也开通了流量主,但是每天收益就是那0.0几的,所有寻思看能不能做一个小程序出来。不会写小程序的我,也只能用现成的…

IO流01_字节字符流、缓冲流、标准输入、输出流、打印流

文章目录①. IO流概述及分类②. 字节输入流 - FileInputStream③. 字节输出流 - FileOutputStream④. 字符输入流 - FileReader⑤. 字符输出流 - FileWriter⑥. 字节缓冲流 - Buffered⑦. 掌握 - 相关流习题操作⑧. 标准输入、输出流(了解)⑨. 打印流 - PrintStream、PrintWrit…

Retinanet网络与focal loss损失

1.损失函数 1)原理 本文一个核心的贡献点就是 focal loss。总损失依然分为两部分,一部分是分类损失,一部分是回归损失。 在讲分类损失之前,我们来回顾一下二分类交叉熵损失 (binary_cross_entropy)。 计…

算法设计与分析(屈婉玲)视频笔记day2

序列求和的方法 数列求和公式 等差、等比数列与调和级数 求和的例子 二分检索算法 二分检索运行实例 2 n 1个输入 比较 t 次的输入个数 二分检索平均时间复杂度 估计和式上界的放大法 放大法的例子 估计和式渐近的界 估计和式渐近的界 小结 • 序列求和基本公式:…

使用 CSS 变量更改多个元素样式

使用 CSS 变量更改多个元素样式 var() 函数用于插入自定义的属性值,如果一个属性值在多处被使用,该方法就很有用。 custom-property-name 是必需的, 自定义属性的名称,必需以 – 开头。 value 可选。备用值,在属性不存在的时候使…