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

Phodal Phodal     2022-12-07     707

关键词:

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

架构治理变得非常迫切。

Why ArchGuard?

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

  • 设计与实现不匹配。设计的软件架构与真正实施后的架构,存在着巨大的差异。而这个差异,往往需要实施一段时间之后才能发现。

  • 代码量巨大,难以识别。由十几个或者几十个微服务创建的系统,难以发现它们之间错综复杂的关系。

  • 没有规范/不遵守规范。作为一个资深的开发人员,我们制定了一系列的规范,但是没有多少团队人员愿意遵守。

  • 架构模型的每个层级都可能出问题。如服务间 API 耦合、代码间耦合、数据库耦合等等。

  • 自身缺乏丰富的经验

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

GitHub:https://github.com/archguard/archguard

它能做点什么?

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

组件/模块

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

对应的还有 API 使用和提供情况等:

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

系统依赖分析:服务地图

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

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

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

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

代码分析

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

变更影响分析

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

会编译原理,就是可以这样为所欲为。

自动化技术债务管理

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

  • 自动生成架构改进点

  • 创建技术栈务到团队看板上

  • 自动分配团队成员,追踪架构演进

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

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

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

  • Bytecode 分析顾名思义,就是通过分析 JVM 中的字节码,从而分析出代码中的依赖关系。

  • 源码分析,即通过分析生成编译语言的语法树,产出特定的数据结构,进而对

通过,先前在 Modernizing 开源的 Chapi 代码分析引擎(https://github.com/modernizing/chapi),ArchGuard 可以支持主流的编程语言:TypeScript/JavaScript、Kotlin、Java、C# 等等。如下表所示:

Features/LanguagesJavaPythonGoKotlinTypeScriptCC#ScalaC++
http api decl🆕🆕🆕
syntax parse🆕🆕🆕🆕
function call🆕
🆕



arch/package





real world validate






expression (TBD)








再结合 ArchGuard Scanner (https://github.com/archguard/scanner)中 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://github.com/archguard/archguard

ArchGuard:守护架构,放权代码

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

过去的10年间,软件的架构发生了巨大的变化,从早先流行的单体MVC架构,变成了所谓的5:5开,即分布式vs单体。只是呢,有大量的软件开发人员,无法看到系统的全貌,又或者是从单体的思维转... 查看详情

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

过去的10年间,软件的架构发生了巨大的变化,从早先流行的单体MVC架构,变成了所谓的5:5开,即分布式vs单体。只是呢,有大量的软件开发人员,无法看到系统的全貌,又或者是从单体的思维转... 查看详情

为“架构”再建个模:如何用代码描述软件架构?(代码片段)

在架构治理平台ArchGuard中,为了实现对架构的治理,我们需要代码 + 模型描述所要处理的内容和数据。所以,在ArchGuard中,我们有了代码的模型、依赖的模型、变更的模型等,剩下的两个核心的部分就是... 查看详情

为“架构”再建个模:如何用代码描述软件架构?(代码片段)

在架构治理平台ArchGuard中,为了实现对架构的治理,我们需要代码 + 模型描述所要处理的内容和数据。所以,在ArchGuard中,我们有了代码的模型、依赖的模型、变更的模型等,剩下的两个核心的部分就是... 查看详情

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

...并厘清治理工具的设计思路和核心功能内容。结合我们在ArchGuard的探索经验,我们:基于 “视点与视角” 构建架构治理的工具全景。以帮助组织了解架构治理的整体情况”点-线-面”策略。以帮助组织围绕关注点,... 查看详情

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

...并厘清治理工具的设计思路和核心功能内容。结合我们在ArchGuard的探索经验,我们:基于 “视点与视角” 构建架构治理的工具全景。以帮助组织了解架构治理的整体情况”点-线-面”策略。以帮助组织围绕关注点,... 查看详情

发布国内首个无服务器容器服务,运维效率从未如此高效

近年来,随着越来越多的企业基于微服务架构构建自身核心业务平台后,微服务已获得越来越多技术人员的肯定,同时,微服务也承载着企业数字化转型的重任。但微服务架构的落地给企业的运维团队带来了不少的挑战,原有的... 查看详情

发布国内首个无服务器容器服务,运维效率从未如此高效

近年来,随着越来越多的企业基于微服务架构构建自身核心业务平台后,微服务已获得越来越多技术人员的肯定,同时,微服务也承载着企业数字化转型的重任。但微服务架构的落地给企业的运维团队带来了不少的挑战,原有的... 查看详情

微矿qlib:业内首个ai量化投资开源平台

 Qlib涵盖了量化投资的全过程,为用户的AI算法提供了高性能的底层基础架构,从框架设计上让用户可以更容易地应用AI算法来辅助解决量化投资的各个关键问题(例如Alpha预测,风险预测,市场动态性建模ÿ... 查看详情

java生鲜电商平台-云平台架构设计与服务治理平台架构设计(小程序/app)

Java生鲜电商平台-云平台架构设计与服务治理平台架构设计(小程序/APP)说明:Java生鲜电商平台-云平台架构设计与服务治理平台架构设计,本文只是抛砖引玉,希望对大家有所帮助.    云平台是个非常宽泛的领域,本节... 查看详情

架构治理基石:基于规范+模式的工具化(代码片段)

围绕于ArchGuard,我们一直在探索适合于大多数企业的治理模式。通常来说,对于应用架构的治理来说,我们的预期目标是,对应的架构设计(广义上的)能被采纳和遵守。如果过程中出现有流程上的问题&#x... 查看详情

架构治理基石:基于规范+模式的工具化(代码片段)

围绕于ArchGuard,我们一直在探索适合于大多数企业的治理模式。通常来说,对于应用架构的治理来说,我们的预期目标是,对应的架构设计(广义上的)能被采纳和遵守。如果过程中出现有流程上的问题&#x... 查看详情

中国需要自己的开源体系

...下,我觉得“中国自有开源体系”存在的意义在于:提高国内整个社会的开源软件开发协作意识和实践在国内的本土的代码开放平台工具下用中文交流,不用被迫使用GitHub,也更方便国人使用,不一定需要统一为一个平台。建设... 查看详情

数据治理架构探索

...存历史所有但是会做了脱敏处理,只满足分析使用,目前架构整理如下: 查看详情

万众期待的stoluck终于要上线了,国内首个sto平台!

Stoluck(http://stoluck.com)是国内第一个STO服务平台,在传统股权资产的Token化和未上市公司股权流通等领域独树一帜。公司为未上市公司的股东提供条龙的技术和业务解决方案,包括基于Fabric的联盟链技术解决方案、股权资产的登... 查看详情

基于servicemesh服务网格的去中心化微服务管控治理平台

...考的一个产品规划,即基于ServiceMesh服务网格思路,参考开源的Istio等实现架构来搭建一个完整的微服务治理管控平台。在前面文章里面我就提到了,在实施微服务架构后,由于微服务将传统的单体应用进行了拆分,颗粒度更细... 查看详情

用友云服务治理平台助力企业微服务架构落地

本文主要阐述使用微服务架构时,治理框架或者平台需要解决的主要问题,微服务落地实施过程中所遇到的关键问题和对应解决方案。同时,文章也介绍用友云旗下的微服务治理平台的核心功能和技术架构,以及微服务治理平台... 查看详情

微矿qlib:业内首个ai量化投资开源平台

2020年底,微软亚洲研究院正式发布了AI量化投资开源平台“微矿Qlib”。这是微软亚洲研究院成立“创新汇”三年以来,在与金融行业的成员企业合作研究的基础之上,打造的AI+金融跨界创新的阶段性重要成果,... 查看详情