国内首个开源架构治理平台 ArchGuard,专治分布式场景下各种不服


prtyaa
prtyaa 2023-12-25 13:23:28 49384
分类专栏: 资讯

过去的 10 年间,软件的架构发生了巨大的变化,从早先流行的单体 MVC 架构,变成现成 5:5 开的分布式 vs 单体。只是呢,有大量的软件开发人员,并没有从单体的思维转成变化。于是,我们在一个个的组织里,见到了一个又一个的 “分布式单体”。

架构治理变得非常迫切。

Why ArchGuard?

作为一个架构师或者是软件开发人员,在架构治理上,我们面对的诸多挑战有:

  • 设计与实现不匹配。设计的软件架构与真正实施后的架构,存在着巨大的差异。而这个差异,往往需要实施一段时间之后才能发现。
  • 代码量巨大,难以识别。由十几个或者几十个微服务创建的系统,难以发现它们之间错综复杂的关系。
  • 没有规范/不遵守规范。作为一个资深的开发人员,我们制定了一系列的规范,但是没有多少团队人员愿意遵守。
  • 架构模型的每个层级都可能出错。如服务间 API 耦合、代码间耦合、数据库耦合等等。
  • 自身缺乏丰富的经验。

应对这些挑战,我们需要一个平台,来帮助我们解决这些问题。所以,结合我们过去的一系列软件开发和重构经验,我们(Thoughtworks 的咨询师们)从 2020 年(疫情开始的时候)开始了架构治理平台 ArchGuard 的开发。如今呢,它开源了。

GitHub:github.com/archguard/ar

它能做点什么?

ArchGuard 按照业内主流的 C4 架构模型进行分层设计的。所以,首先,我们需要先创建一系列的系统组件,只需要配置好对应的语言和 GitHub 地址,就可以对代码进行扫描。

组件/模块

随后,可以看到单个项目的总体情况,对应的代码提交历史、不稳定代码模块等:

针对于API 来说,可以查看声明和使用情况等:

并通过体量维度、耦合维度、内聚维度、冗余维度、测试维度五大维度对架构进行评估,以及一系列的指标来分析系统的情况。

系统依赖分析:服务地图

针对于微服务来说,ArchGuard 可以自动化地分析不同服务之间的依赖关系,并将这种依赖关系可视化出来:

同时,系统能帮你自动分析哪些 API 是使用的,哪些 API 是未被使用的:

数据库依赖分析:数据库地图

针对于数据库间的依赖问题,ArchGuard 可以解析代码中的 SQL 调用,并尝试性将这种依赖关系与不同的微服务相匹配,进而分析哪些服务在数据库层是耦合的:

代码分析

对于开发团队来说,它们可以在 ArchGuard 上查看项目的模块、包、类、方法之间的依赖关系:

变更影响分析

在结合了看板之后,ArchGuard 可以自动化地帮你查找每次代码变更潜在影响范围,自动化地帮您检测系统中的影响,让测试人员能精准地对变更进行测试。

自动化技术债务管理

在配置了团队功能之后,ArchGuard 还可以

  • 自动生成架构改进点
  • 创建技术栈务到团队看板上
  • 自动分配团队成员,追踪架构演进

这就是 ArchGuard:守护架构,放权代码。

ArchGuard 是如何达成上述功能的?

ArchGuard 内置两个代码分析引擎:Bytecode 分析 + 源码分析。

  • Bytecode 分析顾名思义,就是通过分析 JVM 中的字节码,从而分析出代码中的依赖关系。
  • 源码分析,即通过分析生成编译语言的语法树,产出特定的数据结构,进而对

通过,先前在 Modernizing 开源的 Chapi 代码分析引擎(github.com/modernizing/),ArchGuard 可以支持主流的编程语言:TypeScript/JavaScript、Kotlin、Java、C# 等等。再结合 ArchGuard Scanner (github.com/archguard/sc)中 7 大扫描工具:

  • scan_git,分析 Git 提供历史
  • scan_coverage,分析代码测试覆盖率
  • scan_bytecode,字节码分析
  • scan_sourcecode,源码分析
  • scan_test_badsmell,测试代码坏问题
  • collector_ci,收集 CI/CD 中的历史记录
  • collector_kanban,收集看板中的历史记录,

CHANGELOG 4.1.0

今天,在经过了一系列的客户验证之后,我们将 ArchGuard 开源了。如下是当前版本的 CHANGELOG:

  • Bug Fixes
    • Java/Kotlin/C#/TypeScript/JavaScript 最新语法支持
    • 服务自动聚类拟合不准确
    • 服务地图线条重叠
    • 千万级别数据闪退
  • Features
    • 功能扩展:架构模式推荐
    • 功能扩展:架构指标自定义配置
    • 功能扩展:视图插件接口开放
    • 功能扩展:视图多格式导出(png/pdf)
    • 添加视图:数据流转地图
    • 添加视图:组织架构映射图
    • 视图优化:目标架构偏移图
    • 添加指标:架构不稳定性
    • 添加指标:微服务调用耦合度
    • 评估优化:系统安全等级
    • 评估优化:系统可扩展性
    • 评估优化:服务化系数
    • 评估优化:目标架构拟合程度
    • 基础支持:目标架构可支持第三方工具插件化接入
    • 基础支持:更多编程语言分析支持 Python/Go/Perl/Swift
  • Breaking Changes
    • Scanner 公共接口更新

欢迎到下载代码体验,GitHub:github.com/archguard/ar

ArchGuard:守护架构,放权代码

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=30254
赞同 0
评论 0 条
prtyaaL2
粉丝 1 发表 2553 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2959
【软件正版化】软件正版化工作要点  2878
统信UOS试玩黑神话:悟空  2843
信刻光盘安全隔离与信息交换系统  2737
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1270
grub引导程序无法找到指定设备和分区  1235
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
点击报名 | 京东2025校招进校行程预告  164
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  159
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!