譯者 | 李睿
審校 | 重樓
將遺留代碼和應用程序遷移到現代系統面臨風險并且耗時費力,然而這一過程通常是不可避免的。本文將闡述利用生成式人工智能工具簡化應用程序遷移的一些有效策略。
一項研究表明,在財富5000強公司使用的軟件中,多達70%的軟件都是在20年前開發(fā)的。雖然升級遺留應用程序具有充分商業(yè)理由,但這種遷移通常面臨風險。遷移軟件成本高昂,遺留技術知識的缺乏,以及測試老舊軟件的復雜性,這些挑戰(zhàn)減緩了遷移進度,并增加了技術債務。
應用現代化的方法可以用所謂的“云遷移的7R法則”來概括:退役(Retire)、替換(Replace)、遷移(Relocating)、重新平臺化(Re-platforming)、重用(Reusing)、重構(Refactoring)和重建(Rebuilding)。好在生成式人工智能(GenAI)可以簡化并加速這些過程。
本文將應用程序遷移定義為需要在新平臺上編碼的任何方法;例如,在語言和開發(fā)平臺(如Java、.Net、Python、JavaScript和PHP)之間遷移全部或部分的應用程序或服務。
應用程序遷移也許是明確之舉
需要大量重新編碼的應用程序遷移通常被視為最后的手段。但有時,遷移是實現系統現代化最謹慎的方式。以下是一些例子:
- 需要對數據模型、業(yè)務邏輯或用戶體驗進行重大重新設計的應用程序在重新利用現有代碼方面可能沒有什么價值。
- 通過庫和第三方服務的新功能可能會使許多現有代碼變得過時,重寫代碼可以大幅減少技術債務。
- 具有重大可擴展性挑戰(zhàn)或新安全要求的API、服務和應用程序可能需要重新設計自下而上的架構。
- 對于在過時的平臺上運行遺留應用程序并且文檔很少,以及管理應用程序的工作人員離職的組織來說,可能別無選擇,只能遷移應用程序。
- 收購小型企業(yè)的組織可能會選擇將應用程序遷移到標準平臺,以降低成本并簡化維護。
生成式人工智能如何提供幫助
對于組織來說,應用程序遷移的成本高昂。如果組織希望在不改變架構或用戶體驗的情況下重新編碼,代碼翻譯器可以幫助加快這一過程。但是在需要進行重大更改的情況下,應用程序遷移可能需要完全重寫代碼。在某些情況下,生成式人工智能可以加速流程、降低成本或提高質量。
Descope公司的聯合創(chuàng)始人Gilad Shriki說:“生成式人工智能正在通過簡化開發(fā)工作流來改變應用程序遷移,包括生成啟動器模板和轉換腳本,幫助開發(fā)人員在適應新范式的同時保持邏輯一致性?!?/span>
根據麥肯錫公司發(fā)布的研究報告,生成式人工智能可以消除應用程序現代化過程中的大部分人工工作,從而使進度加快40%至50%,并將成本降低40%。接下來,將探討在使用生成式人工智能功能規(guī)劃應用程序遷移時的關鍵考慮因素。
了解工作流和變更需求
審查現有文檔和采訪主題專家通常是為應用程序遷移做準備的最佳起點。在尋求改進的機會時,了解現有系統的業(yè)務目的、工作流和數據需求至關重要。
這種由外而內的審查有助于組織的開發(fā)團隊制定一份清單,列出對遷移至關重要的需求,需要更改的內容,以及需要進一步發(fā)現的未知因素。此外,開發(fā)團隊應該期望并計劃變更管理程序,以便在遷移過程中為最終用戶提供支持。即使只需要很少的應用程序更改,與最終用戶的溝通也有助于緩解他們的擔憂,并開辟反饋渠道來報告意外問題。
產品所有者和業(yè)務分析師應該審查新興的生成式人工智能工具,以幫助編寫需求和敏捷用戶故事。Jira平臺的示例包括Jira的人工智能測試用例和用戶故事問題自動生成器,以及Jira的敏捷用戶故事圖、投資組合路線圖和人物角色。
分析架構中的依賴項
技術人員還需要進行由內而外的分析,包括代碼審查、繪制運行時基礎設施圖、進行數據發(fā)現,并分析日志文件或其他可觀察性數據。更重要的是捕獲依賴項,包括依賴的API、第三方數據源和數據管道。
這種架構審查可能非常耗時,并且通常需要豐富的技術專業(yè)知識。使用生成式人工智能可以簡化和加速該過程。Chronospher公司首席技術官兼聯合創(chuàng)始人Rob Skillington表示:“生成式人工智能正以多種方式影響應用程序的遷移,包括幫助開發(fā)人員和系統架構師快速回答有關目標遷移應用程序的架構和部署選項的問題。此外,生成式人工智能通過幫助概述可以在新擬議架構中使用的外部依賴項(如數據庫、負載均衡器和第三方服務)來加速應用程序的遷移,從而創(chuàng)建一種與遷移的風險和可用性約束相匹配的遷移方法?!?/span>
利用生成式人工智能的創(chuàng)建架構和流程圖的方法包括使用ChatGPT生成PlantUML圖,以及使用Eraser的DiamondGPT對代碼庫進行診斷。
冷靜理智地解讀代碼
審查他人的代碼是軟件開發(fā)人員最厭煩的工作之一。然而,代碼審查對于發(fā)現缺陷、識別安全漏洞、為拉取請求生成文檔以及遵守編碼標準是至關重要。
在準備遷移時,分析遺留代碼甚至更為重要。像OpenAI Codex(現在是ChatGPT的一部分)和GitHub Copilot這樣的生成式人工智能工具可以加速將代碼轉換為描述、提取業(yè)務規(guī)則、繪制函數調用序列圖、識別數據驗證以及分離測試功能等任務。
SADA公司人工智能主管Chad Johnson表示,“應用程序遷移的一個常見挑戰(zhàn)是理解遺留代碼和應用程序邏輯,特別是由于時間流逝或人員流失而丟失的知識。生成式人工智能可以幫助破譯和解釋遺留代碼,而無需工程師了解老舊語言和細微差別。深度研究代理可以廣泛掃描網絡存檔文檔、用戶論壇和博客,以制定解決復雜漏洞和遷移問題的方案。”
開發(fā)人員可以用代碼段提示生成式人工智能工具,并收到自然語言的響應,解釋其目的并描述其功能。
將實用程序代碼翻譯成其他語言
在審查應用程序的遷移時,需要重寫某些代碼區(qū)域,特別是在用戶體驗或業(yè)務邏輯需要更改的情況下。其他實用程序代碼區(qū)域可能只需要從一種語言翻譯成另一種語言,同時提高性能并避免缺陷。代碼翻譯器是自動化部分轉換的一種選擇。
Yugabyte公司副總裁Shreyas Agnihotri說,“生成式人工智能通過自動化代碼翻譯、優(yōu)化性能和識別遷移過程中的錯誤來簡化應用程序移植。例如,當將應用程序轉換為利用更新的技術時,生成式人工智能可以重構遺留代碼以獲得兼容性,生成測試用例,簡化依賴項映射,從而顯著減少人工工作量和風險?!?/span>
開發(fā)人員可以使用Java語言轉換助手(JLCA)之類的工具將Java轉換為.Net,或者使用CodeConvert將C#轉換為Java或Python。解釋和翻譯來自遺留語言(如COBOL)的代碼具有額外的挑戰(zhàn),因為很難找到熟練的專家。生成式人工智能和其他用于遷移Cobol項目的工具使得沒有Cobol專業(yè)知識的開發(fā)人員更容易為這些項目做出貢獻。
Postman公司高級開發(fā)人員倡導者Sterling Chin說,“在大型機到現代平臺的遷移過程中,生成式人工智能分析COBOL和其他遺留代碼庫的能力變得特別有價值。它可以解析嵌入在幾十年前的代碼中的復雜業(yè)務規(guī)則,在現代測試框架中自動生成等效的測試場景,并驗證關鍵業(yè)務邏輯在遷移過程中保持不變?!?/span>
為遺留代碼生成測試用例
翻譯、重構和改進代碼可能是應用程序遷移中比較容易的方面。測試通常是更困難的挑戰(zhàn),特別是因為許多遺留應用程序缺乏單元測試和自動化回歸測試。
Chin說,“生成式人工智能全面分析現有應用程序的能力使測試驅動的遷移方法成為可能??梢灶A先生成自動化的測試套件,以驗證整個遷移過程中的功能一致性,確保每個遷移的組件在支持增量現代化的同時保持原始系統的行為。”
在可能的情況下,最佳實踐是在遷移遺留應用程序之前生成測試用例和測試框架。然后,可以使用新的應用程序上的等效測試用例對兩個應用程序版本的結果進行基準測試。
Shriki補充說:“人工智能測試框架通過自動生成測試用例,在軟件開發(fā)生命周期的早期集成安全檢查,以及優(yōu)化新平臺的性能基準,進一步加速了這一過程。這些進步不僅減少了技術債務,而且使開發(fā)團隊能夠更快地實現應用程序的現代化,而不會影響質量、安全性或開發(fā)人員的效率?!?/span>
規(guī)劃數據遷移
即使在測試了應用程序及其依賴項之后,也可能需要進行數據遷移。如果數據庫技術和模式不需要更改,那么應用程序的遷移可能很簡單;例如,將小型的本地SQL數據庫轉換為云數據庫服務。但是,如果模式發(fā)生了重大變化,或者需要修復數據質量問題,那么遷移本身就是一個項目。
SS&C Blue Prism公司美洲首席技術官Lou Bachenheimer表示:“生成式人工智能可以解決與應用程序遷移相關的兩個主要痛點:考慮各種依賴項的廣泛計劃,以及通過繁瑣的檢查來防止數據丟失或損壞的重復數據遷移。人工智能可以理解必要的步驟,并觸發(fā)預先構建的受控自動化來執(zhí)行數據遷移,利用傳統的自動化技術來減輕與生成式人工智能接觸潛在敏感數據相關的風險,從而顯著加速并簡化遷移過程。”
如果應用程序具有高吞吐量事務,或者業(yè)務無法在長時間停機后從遺留應用程序切換到遷移的應用程序,那么對于大型數據庫來說,迭代遷移數據段的增量遷移可能是必要的。
管理人工智能生成代碼的風險
雖然許多工具都可以幫助應用程序遷移和生成代碼,但專家警告說,開發(fā)團隊應該將詳細的代碼和安全審查作為測試的一部分,即使應用程序正在經歷最小的功能更改。開發(fā)團隊應該與利益相關者溝通,應用程序遷移仍然需要測試和安全審查。
Apiiro公司首席產品官Moti Gindi表示:“在軟件開發(fā)中采用生成式人工智能工具極大地提升了開發(fā)人員的工作效率,但代碼量的快速增長已經超越了關鍵的人工應用程序安全控制措施的步伐,例如安全審查或威脅建模,這凸顯了這些過程實現自動化的必要性。雖然采用生成式人工智能生成的代碼高效,但通常缺乏對公司特定政策和合規(guī)要求的認識,因此可能會引入新的業(yè)務風險。此外,將生成式人工智能集成到每個業(yè)務的應用程序堆棧中會引入新的潛在攻擊面(例如提示注入),需要針對這種新出現的威脅實施和執(zhí)行新的代碼安全控制?!?/span>
成功遷移的關鍵是理解需求、與最終用戶溝通、選擇適當的工具來幫助應用程序的遷移,以及制定全面的測試計劃。企業(yè)有大量需要現代化的應用程序,開發(fā)遷移實踐的IT組織可以加速遷移、降低成本,并最大限度地降低風險。
原文標題:How to simplify app migration with generative AI tools,作者:Isaac Sacolick