MapleCheng

在浩瀚的網路世界中無限潛水欸少年郎!

0%

企業系統升級最缺的,通常不是 Release Notes,而是自己的依賴圖

每次企業系統要升級,第一個被丟進群組的通常是 Release Notes。大家開始搜尋被移除的 API、改名的欄位、新增的權限,然後依照模組分工測試。這套做法不能說錯,但我越來越覺得,它只回答了半個問題。

官方版本說明告訴我們「產品改了什麼」,卻不知道「我們把什麼建立在它上面」。真正讓升級延誤的,往往不是那一百頁文件,而是企業自己的客製、整合、報表、權限與例外流程,早已長成一張沒有人完整看過的依賴網。

同一個版本,每家公司承受的風險都不同

標準產品升級可以提供通用修正清單,但企業使用情境從來不通用。同一個欄位改名,有些公司完全無感,有些公司卻可能同時影響匯入程式、審核條件、BI 報表、通知範本與外部介接。表面上只是一個 metadata 變更,落到特定環境裡,卻可能穿過五六個流程節點。

這也是為什麼我不太相信只用「模組測試完成率」管理升級。模組是產品的切法,業務則是跨模組流動的。採購、庫存、財務與簽核各自測過,不代表從需求提出到付款完成的整條路真的走得通。

更麻煩的是,企業系統裡最重要的相依關係,常常不在程式碼裡。它可能藏在低程式碼流程、排程、角色設定、報表公式、欄位條件、Webhook、試算表匯出,甚至某個部門沿用多年的操作順序。只掃 repository,會得到一張很漂亮但不完整的地圖。

升級影響分析,本質上是企業自己的知識工程

我認為升級前真正要準備的,不是更多檢查表,而是一張能持續維護的依賴圖。它至少要能描述幾類節點:

  • 標準模組、資料表、欄位、API 與權限;
  • 客製程式、流程規則、報表、排程與整合;
  • 業務流程、關鍵角色與人工審核點;
  • 上下游系統,以及資料進出方向;
  • 測試案例、負責人、風險等級與歷史異常。

節點本身不難,難的是關係。例如「這份報表讀了哪些欄位」、「這個 API 被哪些流程呼叫」、「這個角色權限改變後,哪些自動化會失去執行身份」、「這個客製規則覆蓋了哪一段標準行為」。沒有關係,metadata 只是一份資產清冊;有了關係,它才開始具備影響分析的價值。

這張圖也不該等升級專案開始才臨時整理。若平常的變更流程沒有更新它,半年後就只會變成另一份過期文件。比較務實的做法,是把 metadata 當成日常交付物:新增整合時登記上下游,修改欄位時標記使用者,建立報表時留下資料來源,調整權限時記錄對應流程。每次只補一小段,升級時才有可能真的拿來用。

AI 可以讀 Release Notes,但不能替企業憑空補齊脈絡

現在很自然會想到用 AI 做升級分析:把官方文件丟給模型,再請它整理風險與測試項目。這確實能省下大量閱讀時間,但如果只做到這裡,產出的仍然只是比較好讀的 Release Notes。

真正有用的 Agent,必須同時理解兩邊:一邊是供應商這次修改的產品物件,另一邊是企業環境裡與這些物件相連的客製與流程。它不是只做摘要,而是把「外部變更」投影到「內部依賴圖」上,再產出具體、可追溯的候選影響。

例如某個 API 的驗證方式改變,Agent 不只要提醒 API 有 breaking change,還應該列出使用它的整合、執行身份、相關測試與負責人。某個欄位準備淘汰,則應往下追到報表、流程條件與資料匯出,而不是只把欄位名稱加粗。

但我會刻意把結果稱為「候選影響」,而不是最終答案。因為依賴圖一定有缺口,動態查詢也未必能從靜態 metadata 看出來。AI 可以加快探索、比對與測試設計,不能把不完整的企業知識假裝成百分之百確定的事實。每一項結論都應保留來源:來自官方變更、程式碼引用、設定關係、執行紀錄,還是模型推論。

從依賴圖直接長出測試範圍

升級分析若最後只產出一份風險報告,價值仍然有限。我更在意它能不能進一步轉成測試與發布策略。

高風險節點應優先產生端到端測試;被多個流程共用的元件要安排回歸;缺少負責人的相依關係要先補 ownership;無法確認用途的客製則應列為人工盤點,而不是默默跳過。若某項變更只影響低風險查詢,可以先進測試環境;若牽涉寫入、財務結果或權限邊界,就應要求額外審核、資料比對與回滾方案。

這樣一來,升級就不再是把所有功能平均測一遍,而是根據實際依賴與風險分配有限資源。對技術主管來說,這比「測試案例完成了九成」更有意義。九成案例可能都在安全區,真正關鍵的那一條跨系統流程卻還沒走過。

我也會保留每次升級的實際結果:哪些候選影響最後成立、哪些是誤判、哪個未記錄依賴造成事故、哪一組測試最早抓到問題。這些資料可以反過來改善依賴圖與 Agent 的判斷,讓下一次升級不是重新從零開始。

最值得投資的不是一次升級,而是持續可問的系統地圖

很多企業把升級視為週期性專案:版本來了,成立小組、盤點、測試、上線,然後解散。於是每一次都重複詢問「這個有人在用嗎」、「改了會影響誰」、「當初為什麼這樣設計」。真正昂貴的不是升級本身,而是組織每次都要重新發現自己。

我現在更傾向把升級能力看成 metadata 與依賴治理的副產品。平常若能維護一張可信的系統地圖,除了版本升級,事故排查、權限稽核、客製退場、系統整併與新人交接都會一起受益。

Release Notes 當然還是要讀,但它只描述供應商的世界。企業真正需要管理的,是自己的世界如何依附在那個產品上。

當我們能從一項外部變更,沿著資料、流程、權限與責任一路追到實際測試,升級才不再是一場大型猜謎。AI 在其中最好的角色,也不是替主管宣告「沒有風險」,而是把原本散落在人腦、設定與程式碼裡的相依關係照亮,讓團隊知道該去哪裡驗證、由誰負責,以及出了問題要怎麼退回來。