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 的融合,推动软件工程的持续变革。
围观我的Github Idea墙, 也许,你会遇到心仪的项目