过去的 10 年间,软件的架构发生了巨大的变化,从早先流行的单体 MVC 架构,变成现成 5:5 开的分布式 vs 单体。只是呢,有大量的软件开发人员,并没有从单体的思维转成变化。于是,我们在一个个的组织里,见到了一个又一个的 “分布式单体”。
架构治理变得非常迫切。
作为一个架构师或者是软件开发人员,在架构治理上,我们面对的诸多挑战有:
应对这些挑战,我们需要一个平台,来帮助我们解决这些问题。所以,结合我们过去的一系列软件开发和重构经验,我们(Thoughtworks 的咨询师们)从 2020 年(疫情开始的时候)开始了架构治理平台 ArchGuard 的开发。如今呢,它开源了。
GitHub:https://github.com/archguard/archguard
ArchGuard 按照业内主流的 C4 架构模型进行分层设计的。所以,首先,我们需要先创建一系列的系统组件,只需要配置好对应的语言和 GitHub 地址,就可以对代码进行扫描。
随后,可以看到单个项目的总体情况,对应的代码提交历史、不稳定代码模块等:
针对于API 来说,可以查看声明和使用情况等:
并通过体量维度、耦合维度、内聚维度、冗余维度、测试维度五大维度对架构进行评估,以及一系列的指标来分析系统的情况。
针对于微服务来说,ArchGuard 可以自动化地分析不同服务之间的依赖关系,并将这种依赖关系可视化出来:
同时,系统能帮你自动分析哪些 API 是使用的,哪些 API 是未被使用的:
针对于数据库间的依赖问题,ArchGuard 可以解析代码中的 SQL 调用,并尝试性将这种依赖关系与不同的微服务相匹配,进而分析哪些服务在数据库层是耦合的:
对于开发团队来说,它们可以在 ArchGuard 上查看项目的模块、包、类、方法之间的依赖关系:
在结合了看板之后,ArchGuard 可以自动化地帮你查找每次代码变更潜在影响范围,自动化地帮您检测系统中的影响,让测试人员能精准地对变更进行测试。
在配置了团队功能之后,ArchGuard 还可以
这就是 ArchGuard:守护架构,放权代码。
ArchGuard 内置两个代码分析引擎:Bytecode 分析 + 源码分析。
通过,先前在 Modernizing 开源的 Chapi 代码分析引擎(https://github.com/modernizing/chapi),ArchGuard 可以支持主流的编程语言:TypeScript/JavaScript、Kotlin、Java、C# 等等。再结合 ArchGuard Scanner (https://github.com/archguard/scanner)中 7 大扫描工具:
今天,在经过了一系列的客户验证之后,我们将 ArchGuard 开源了。如下是当前版本的 CHANGELOG:
欢迎到下载代码体验,GitHub:https://github.com/archguard/archguard
ArchGuard:守护架构,放权代码
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!