TL;DR:我們試驗了將 AI 應用到基於 Protobuf 的微服務架構中,基於 ArchGuard 治理平臺、Shire AI 助手、Team AI 三個工具中,構建了一套完整的 AI4SE 原型,在需求、設計、開發、測試和運維等階段,這裡是我們的思考和實踐。
過去幾個月裡,我們在各大技術大會上頻繁看到生成式 AI 的應用,很多研發組織都在嘗試將其引入開發的各個環節。然而,隨著 AI 技術的深入應用,不少組織也發現了基礎知識工程方面的種種挑戰。例如,知識的缺乏規範化、流程的缺失以及標準化檢測工具的不足,正成為 AI 成功落地和提升研發效能的主要阻礙。
如果說知識工程是 AI 賦能研發的基礎,那麼數字化架構則是 AI 賦能研發的關鍵。在這篇文章中,我們將探討知識工程推動下的架構數字化:如何透過知識工程的視角, 利用 AI 技術,對系統架構進行全面分析、管理和最佳化的過程,以及我們的思考和實踐。
引子:架構知識如何改變 AI 驅動的開發流程??
AI4SE(Artificial Intelligence for Software Engineering)是指人工智慧技術應用於軟體工程領域,旨在透過利用 AI 演算法和工具來改進軟體開發、維護、測試和管理等各個環節的效率和效果。—— https://aise.phodal.com/
從過去的、標準或者不標準的 DevOps 開發流程來看,我們會把 SDLC 流程分為 N 個階段,取決於你的組織架構,階段的數量可能會有所不同,以適配康威定律。在此,我們將 SDLC 流程簡化為以下幾個主要階段:需求、設計、開發、測試和運維。
SDLC 中的 AI 與架構

而毫無意外的是,當你深入 AI 4SE 的應用時,會發現每個環節都需要架構知識,以微服務架構為例:
-
需求階段。AI 需要結合現有架構、微服務架構的特點,設計出符合微服務架構的需求文件,拆分好需求及其所屬的需求或者功能單元。
-
設計階段。遵循現有的微服務架構設計規範、API 規範、資料庫設計規範等,由 AI 生成符合規範的文件、契約設計和資料庫設計。
-
開發階段。AI 生成的程式碼,需要滿足編碼規範、程式碼風格、程式碼質量等等,還有組織內部的質量門禁規則(比如 SonarQube)。
-
測試階段。自動化測試需要合理的測試策略、規範等,測試人員提的 bug 總需要在合適的服務或元件中修復。
-
運維階段。需要完整的服務地圖,以及服務的依賴關係、日誌規範等等,才能結合 AI 自動幫你定位到問題、生成報告等。
當然,架構規範通常分散在不同的部門和團隊中管理,如何高效整合和應用這些知識是當前面臨的一個挑戰。然而,這裡我們主要關注架構知識在開發過程中的重要性。
微服務場景示例:AI 如何依賴於架構

以基於 Protobuf 的微服務架構為例,我們可以探討 AI 如何利用架構知識來推進開發流程的數字化。
Protobuf 是一種高效的二進位制序列化協議,提供了跨語言、低延遲的資料交換能力,特別適合微服務架構中服務之間頻繁的通訊需求。透過解析 Protobuf 中的服務(Service)、訊息(Message)和 RPC 呼叫等內容,AI 能夠提取系統元件之間的互動關係、資料結構以及模組的職責。這些資訊有助於識別系統的核心模組、資料流以及 API 介面。
-
需求階段:AI 能夠結合 Protobuf,將複雜的業務需求拆解為更小的功能單元,並標註它們之間的依賴關係。同時,AI 會自動生成針對每個服務的消費者和服務者需求文件。
-
設計階段:在設計過程中,AI 可以自動生成符合微服務標準的設計文件,涵蓋 Protobuf API 程式碼、資料庫設計等內容,進一步生成自動化測試介面,確保系統的一致性。
-
開發階段:AI 在開發階段會自動應用團隊的編碼規範和程式碼風格,結合 Protobuf 介面生成客戶端和服務端程式碼,以確保程式碼質量符合組織的標準。
-
測試階段:AI 可以根據需求和設計文件自動生成合理的測試策略和測試用例,建立模擬請求和響應,幫助識別 bug 所在的服務,並自動生成修復建議。
-
運維階段:在運維階段,AI 能夠利用 Protobuf 檔案生成服務地圖,展示服務間的依賴關係。同時,AI 還會自動分析日誌資料生成問題報告,並提供根因分析,幫助運維團隊快速解決問題。
對於 Spring Boot 框架,儘管具體實現和技術棧有所不同,但整體思路與上述 Protobuf 類似。Spring Boot 提供了一系列工具和庫來支援微服務架構,例如 Swagger 等,這些工具可以幫助開發者快速構建和管理微服務。透過結合 Spring 工具生態,Spring Boot 應用中的服務之間的通訊也能實現高效的資料交換,AI 可以同樣在需求、設計、開發、測試和運維各個階段進行有效的整合和自動化,進一步提升開發流程的智慧化水平。
AI 與架構知識相互賦能:如何實現架構的數智化?
架構數智化是指透過對架構知識進行數字化和智慧化的處理,提升架構設計、管理與協作的效率和質量。其核心在於將分散的架構知識進行數字化表示,構建統一的知識基礎,使得人工智慧(AI)能夠理解和利用這些知識,從而輔助並最佳化架構相關的各個環節。

實現架構數智化的關鍵步驟包括:
-
架構元模型的建立:定義架構的基本元素和關係,如元件、介面、依賴關係等。這為架構知識的數字化奠定了基礎,確保了架構元素的標準化和可操作性。
-
知識圖譜的構建:將架構元素及其關係對映到知識圖譜中,形成結構化的架構知識庫。知識圖譜使得複雜的架構資訊以視覺化、關聯性的方式呈現,便於知識的檢索和推理。
-
標準化的語義定義:採用統一的描述語言和規範,如統一建模語言(UML)、領域特定語言(DSL)等。標準化確保了架構知識的可讀性和可解析性,促進了人與機器之間的有效溝通。
藉助數字化的架構知識,AI 能夠在以下方面助力架構:
-
設計方案推薦:根據具體的需求和約束條件,AI 可以快速推薦最佳的架構設計方案,幫助架構師做出更明智的決策。
-
規範合規性檢查:自動驗證設計方案是否符合組織的架構規範和標準,減少人為錯誤,確保一致性和合規性。
-
自動生成原型:基於高層次的架構設計,AI 能夠自動生成程式碼骨架或原型,支援快速迭代和驗證,加速開發流程。
-
智慧問答系統:利用自然語言處理技術,AI 可以回答團隊成員關於架構的疑問,提供即時支援,促進知識共享。
-
智慧化協同設計:在協同設計平臺上,AI 提供即時建議和錯誤檢查,幫助團隊成員協調工作,提高設計效率和質量。
綜上所述,架構數智化透過整合數字化表示和人工智慧技術,實現了架構知識的高效管理和利用,推動了架構設計過程的智慧化轉型。這不僅提升了組織的創新能力和響應速度, 也為數字化時代的持續發展提供了堅實的技術支撐。
實踐:提煉架構知識,整合 AI 工具
我們的探索圍繞於三個平臺/工具:
-
ArchGuard 治理平臺:用於架構知識的管理、分析和最佳化,支援架構元模型的定義、知識圖譜的構建和標準化的語義定義。
-
Team AI 平臺:在 AI 平臺上整合開發流程與架構知識,提供智慧化的協同設計、規範合規性檢查、自動生成原型等功能。
-
Shire AI 助手:在 IDE 端提供直接 Prompt 能力,並與遠端智慧體的互動,以實現基於程式碼骨架的 AI 互動和迭代。
其中的 ArchGuard( https://archguard.org/ )和 Shire ( https://archguard.org/ ) 都是我們自研的開源工具,可以在 GitHub 上找到原始碼和文件。
1. ArchGuard:提取架構知識與資料
我們在 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 中的視覺化展示:

2. Team AI 平臺:整合 AI 工具與架構知識
我們在 Team AI 平臺中,整合了開發流程,併兼容 ArchGuard 介面。如下是,相同資料在 Team AI 平臺中的展示:

結合生成式 AI 的生成能力,我們可以快速構建基於程式碼庫的介面知識,用於快速進行知識檢索和查詢:

以便於我們可以從需求階段,就可以查詢到需求可能影響 的範圍,方便進行架構設計和文件的編寫等。Team AI 平臺也提供了面向其它工具、平臺的介面,諸如於 Shire IDE 外掛就可以快速接入。
3. Shire AI 助手:AI 與架構知識的互動
在 Shire 可以直接呼叫遠端的 Http API、流式 API 等:

因此可以直接從平臺獲取所需要的架構知識,並將其與程式碼庫相結合,以實現更高效的軟體開發。我們還在即將釋出的 Shire 新版本中新增更好的 Protobuf 支援:

以直接在 IDE 中就可以讓 AI 修改 prompt。
結語:架構知識的數字化與智慧化
在我們的探索中,架構知識的數字化與智慧化成為提升軟體開發效率的關鍵。透過將 AI 應用到基於 Protobuf 的微服務架構,我們在需求、設計、開發、測試和運維等環節實現了智慧化支援。
藉助 ArchGuard 治理平臺、Team AI 平臺和 Shire AI 助手,我們構建了一套工具鏈,使架構知識能夠被 AI 理解和應用,推動開發流程的自動化與智慧化。儘管面臨著規範與流程的挑戰,我們相信,架構知識的有效整合將為 AI 的成功落地和研發效能提升提供強有力的支援。未來,我們將繼續深入探索架構與 AI 的融合,推動軟體工程的持續變革。