TL;DR:我们试验了将 AI 应用到基于 Protobuf 的微服务架构中,基于 ArchGuard 治理平台、Shire AI 助手、Team AI 三个工具中,构建了一套完整的 AI4SE 原型,在需求、设计、开发、测试和运维等阶段,这里是我们的思考和实践。
过去几个月里,我们在各大技术大会上频繁看到生成式 AI 的应用,很多研发组织都在尝试将其引入开发的各个环节。然而,随着 AI 技术的深入应用,不少组织也发现了基础知识工程方面的种种挑战。例如,知识的缺乏规范化、流程的缺失以及标准化检测工具的不足,正成为 AI 成功落地和提升研发效能的主要阻碍。
如果说知识工程是 AI 赋能研发的基础,那么数字化架构则是 AI 赋能研发的关键。在这篇文章中,我们将探讨知识工程推动下的架构数字化:如何通过知识工程的视角, 利用 AI 技术,对系统架构进行全面分析、管理和优化的过程,以及我们的思考和实践。
AI4SE(Artificial Intelligence for Software Engineering)是指人工智能技术应用于软件工程领域,旨在通过利用 AI 算法和工具来改进软件开发、维护、测试和管理等各个环节的效率和效果。—— https://aise.phodal.com/
从过去的、标准或者不标准的 DevOps 开发流程来看,我们会把 SDLC 流程分为 N 个阶段,取决于你的组织架构,阶段的数量可能会有所不同,以适配康威定律。在此,我们将 SDLC 流程简化为以下几个主要阶段:需求、设计、开发、测试和运维。
而毫无意外的是,当你深入 AI 4SE 的应用时,会发现每个环节都需要架构知识,以微服务架构为例:
当然,架构规范通常分散在不同的部门和团队中管理,如何高效整合和应用这些知识是当前面临的一个挑战。然而,这里我们主要关注架构知识在开发过程中的重要性。
以基于 Protobuf 的微服务架构为例,我们可以探讨 AI 如何利用架构知识来推进开发流程的数字化。
Protobuf 是一种高效的二进制序列化协议,提供了跨语言、低延迟的数据交换能力,特别适合微服务架构中服务之间频繁的通信需求。通过解析 Protobuf 中的服务(Service)、消息(Message)和 RPC 调用等内容,AI 能够提取系统组件之间的交互关系、数据结构以及模块的职责。这些信息有助于识别系统的核心模块、数据流以及 API 接口。
对于 Spring Boot 框架,尽管具体实现和技术栈有所不同,但整体思路与上述 Protobuf 类似。Spring Boot 提供了一系列工具和库来支持微服务架构,例如 Swagger 等,这些工具可以帮助开发者快速构建和管理微服务。通过结合 Spring 工具生态,Spring Boot 应用中的服务之间的通信也能实现高效的数据交换,AI 可以同样在需求、设计、开发、测试和运维各个阶段进行有效的集成和自动化,进一步提升开发流程的智能化水平。
架构数智化是指通过对架构知识进行数字化和智能化的处理,提升架构设计、管理与协作的效率和质量。其核心在于将分散的架构知识进行数字化表示,构建统一的知识基础,使得人工智能(AI)能够理解和利用这些知识,从而辅助并优化架构相关的各个环节。
实现架构数智化的关键步骤包括:
借助数字化的架构知识,AI 能够在以下方面助力架构:
综上所述,架构数智化通过集成数字化表示和人工智能技术,实现了架构知识的高效管理和利用,推动了架构设计过程的智能化转型。这不仅提升了组织的创新能力和响应速度, 也为数字化时代的持续发展提供了坚实的技术支撑。
我们的探索围绕于三个平台/工具:
其中的 ArchGuard( https://archguard.org/ )和 Shire ( https://archguard.org/ ) 都是我们自研的开源工具,可以在 GitHub 上找到源码和文档。
我们在 ArchGuard 2.2.2 版本中,提供了对 Protobuf 文件的解析和分析功能,支持自动提取服务、消息、接口等元素,构建服务地图和依赖关系图。并构建了 全新 ArchGuard Architecture Analyser 模块,支持对架构知识的智能化分析和优化。
通过,直接运行 ArchGuard CLI,就可以将 Protobuf 文件解析为 JSON 格式,并上传到自定义的远程服务器中,以便后续的分析和优化。
java -jar .scanner_cli.jar --language=go --type=architecture --output=http --server-url=http://localhost:3000 --path=.
如下是,我们在 ArchGuard 中的可视化展示:
我们在 Team AI 平台中,整合了开发流程,并兼容 ArchGuard 接口。如下是,相同数据在 Team AI 平台中的展示:
结合生成式 AI 的生成能力,我们可以快速构建基于代码库的接口知识,用于快速进行知识检索和查询:
以便于我们可以从需求阶段,就可以查询到需求可能影响 的范围,方便进行架构设计和文档的编写等。Team AI 平台也提供了面向其它工具、平台的接口,诸如于 Shire IDE 插件就可以快速接入。
在 Shire 可以直接调用远程的 Http API、流式 API 等:
因此可以直接从平台获取所需要的架构知识,并将其与代码库相结合,以实现更高效的软件开发。我们还在即将发布的 Shire 新版本中添加更好的 Protobuf 支持:
以直接在 IDE 中就可以让 AI 修改 prompt。
在我们的探索中,架构知识的数字化与智能化成为提升软件开发效率的关键。通过将 AI 应用到基于 Protobuf 的微服务架构,我们在需求、设计、开发、测试和运维等环节实现了智能化支持。
借助 ArchGuard 治理平台、Team AI 平台和 Shire AI 助手,我们构建了一套工具链,使架构知识能够被 AI 理解和应用,推动开发流程的自动化与智能化。尽管面临着规范与流程的挑战,我们相信,架构知识的有效整合将为 AI 的成功落地和研发效能提升提供强有力的支持。未来,我们将继续深入探索架构与 AI 的融合,推动软件工程的持续变革。