在过去十年中,软件架构经历了从单体 mvc 架构到分布式与单体架构并重的显著变化。然而,许多软件开发人员依然停留在单体思维模式,导致了所谓的“分布式单体”现象。
架构治理变得极为迫切。
为什么选择 ArchGuard?作为架构师或软件开发人员,我们在架构治理中面临诸多挑战,包括:
设计与实现的差异。设计的软件架构与实际实施的架构之间存在巨大差距,这些差异往往在实施一段时间后才会被发现。代码量巨大,难以识别。由十几个或几十个微服务构建的系统,其错综复杂的关系难以识别。没有规范或不遵守规范。作为资深开发人员,我们制定了规范,但团队成员往往不愿意遵守。架构模型的各个层级可能出问题。例如,服务间 API 耦合、代码间耦合、数据库耦合等。缺乏丰富的经验。
为了应对这些挑战,我们需要一个平台来帮助解决这些问题。因此,结合我们过去的软件开发和重构经验,Thoughtworks 的咨询师们从 2020 年(疫情开始时)开始开发架构治理平台 ArchGuard。如今,它已开源。
GitHub:https://www.php.cn/link/fbe6d597571bb896e706cc540d4027d9
ArchGuard 能做什么?ArchGuard 基于业内主流的 C4 架构模型进行分层设计。首先,我们需要创建一系列系统组件,只需配置好对应的语言和 GitHub 地址,就可以对代码进行扫描。
随后,可以查看单个项目的总体情况,包括代码提交历史和不稳定代码模块等信息:

还可以查看 API 使用和提供情况:

ArchGuard 通过体量维度、耦合维度、内聚维度、冗余维度、测试维度五大维度对架构进行评估,并使用一系列指标分析系统状况:

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

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

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

面试猫
AI面试助手,在线面试神器,助你轻松拿Offer
352 查看详情
代码分析:开发团队可以在 ArchGuard 上查看项目中的模块、包、类、方法之间的依赖关系:

变更影响分析:结合看板后,ArchGuard 可以自动化地查找每次代码变更的潜在影响范围,帮助测试人员精准地对变更进行测试:

自动化技术债务管理:在配置了团队功能后,ArchGuard 还可以自动生成架构改进点,创建技术债务到团队看板上,自动分配团队成员,追踪架构演进。
ArchGuard 是如何实现这些功能的?ArchGuard 内置两个代码分析引擎:字节码分析和源码分析。
字节码分析通过分析 JVM 中的字节码来分析代码中的依赖关系。源码分析通过分析生成编译语言的语法树,生成特定的数据结构。ArchGuard 使用 Modernizing 开源的 Chapi 代码分析引擎(https://www.php.cn/link/babf045d8f8f20b3da6ea66dc4a41835 TypeScript/JavaScript、Kotlin、Java、C# 等。如下表所示:
http api decl✅✅✅✅✅??✅?syntax parse✅✅✅?✅??✅?function call✅??✅arch/package✅✅✅real world validate✅✅expression (TBD)
结合 ArchGuard Scanner(https://www.php.cn/link/3b21db6d1fb73d3868c096e723c07778 7 大扫描工具:
scan_git:分析 Git 提供的历史scan_coverage:分析代码测试覆盖率scan_bytecode:字节码分析scan_sourcecode:源码分析scantestbadsmell:测试代码坏问题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:https://www.php.cn/link/fbe6d597571bb896e706cc540d4027d9
ArchGuard:守护架构,放权代码。
以上就是国内首个开源架构治理平台 ArchGuard,专治分布式场景下各种不服的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/812984.html
微信扫一扫
支付宝扫一扫