GCP 遷移日誌:53 個站有資產,但只有 12 個真的過關
這是遷移工作最忙的一天之一。整晚到深夜,多個 AI 代理人在同一份授權下並行作業,把有雲端資產的網站數量從個位數一路推到 53 個(全部約 130 個站),也打通了資料鏡像最後一道關卡,讓一個先前被卡住的大站真的跑出完整建置。但到這天結束,仍然是 0 個站真正切換上線,所有網域的對外指向都還停在原本的平台。
以為驗過了,其實只驗過一半
白天把 28 個站部署到新平台,第一次用「打開網址看有沒有回應」逐站驗證,25 個站都顯示正常。但緊接著換一批只讀代理人拿這 28 站和現網逐項比對,結果推翻了原本的樂觀結論:28 站裡只有 12 站真的跟現網一致。最大的問題是有 10 個站的網址清單和「這個網址的正式版本」欄位裡填的是本機測試位址,因為建置時沒有把正確的網站網址傳進去;其中兩個站的整份網址清單全部都是這種測試位址,而且當下搜尋引擎是能收錄的——如果照這樣切換上線,Google 會去爬一個外部連不到的測試位址。其餘幾個站也各有問題:一個站的測試版本會把訪客導去正在服務中的正式站;一個站導去帶連接埠號碼的位址,一般訪客連不上;一個站在新平台上顯示的其實是一個已經整併停用的舊站內容,而現網那個網域早就轉址去別的地方,照樣搬上去等於同一份內容在網路上出現兩份;還有一個站資料完全沒接上、一個站的網址清單顯示伺服器錯誤且資料只剩一半、一個站的說明頁面整組都是找不到頁面。結論很直接:這些問題不解決,28 站一個都不能切換。
另一個同一天浮現的問題更隱蔽。好幾個站判斷「這一頁該不該讓搜尋引擎收錄」的邏輯,寫死綁在舊平台才有的特定設定上;搬到新平台後那個設定永遠讀不到值,程式就走向「全站不給收錄」的分支,但頁面內容照樣顯示正常,乍看完全沒事。一開始以為有 8 個站中招,逐一跟現網核對後只有 4 個是真的問題,另外 4 個站現網本來就是這樣設計,硬把它們「修好」反而會做出跟現網不一樣的行為。這 4 個真問題站當天修完並重新核對,網址清單筆數和現網一筆一筆對上:36 比 36、54 比 54、30 比 30、8 比 8,收錄設定也逐字相同。也因為這次教訓,新增一條規則:任何「新平台有問題」的判斷,都要先跟現網的實際行為比對過才能成立。
驗證方法本身壞了
晚上另外派代理人把一批新建置好的站接上路由設定時,發現一件更根本的事:這批站在路由層完全沒有設定規則。不管打哪一個網域名稱去問,包含根本不存在的網域,都會得到同一個、而且是錯的站的首頁,還回應正常。這代表當天用「打開網址看回應」來驗證的方法,對這批站完全失效——會被誤判成一切正常,其實看到的是別人的首頁。其中一個站的完整資料其實已經成功送上雲端,卻因為這個原因完全看不到。這也印證了稍早為正式環境做的一個設計決定:找不到對應規則的網域一律指向一個空白的錯誤頁,而不是隨便指向某個真實的站——這樣漏掉設定時會馬上出現明顯錯誤,而不是安靜地顯示錯的內容還讓人以為沒事。
白天也發現一個架構層級的硬卡點:能接上路由層的名額被設定得很低而且已經用滿,全部約 79 個純內容站裡還差 76 個名額,已經在排隊要接上的 18 個站裡只成功接上 1 個。這件事需要帳號擁有者到後台申請提高名額,已經記錄下來,當天沒有再往下推進。
等 Google 的兩天,其實是等自己
另一條線上,建立新版正式環境所需要的雲端專案一直卡在一個通用錯誤訊息上,大家的假設是「就是要等 Google 審核」。直接去信箱查證後才發現 Google 兩天前就已經回信了,標示需要處理,內容是要求先完成一筆小額付款驗證身分才會繼續審核。那封信一直沒有人打開過。發現後立刻付款,付的金額(美金 150 元)遠超過信裡要求的最低金額(10 美元),也回信確認了兩次。教訓很直接:「對方還沒回」跟「對方回了但沒人看」,從外面看起來是一樣的——任何標成在等外部回覆的卡點,都應該同時檢查一次信箱,這件事沒做到,讓整條路白等了兩天。
一筆意外的帳單調查
順便查了另一件事——程式碼平台的自動化測試費用持續上升,推算下來每個月約 275 美元,其中約 181 美元被判定是純粹浪費掉的。三個只讀代理人分頭查證後,抓出三個原因:一個原本該加速建置的快取功能因登入資訊失效,每次都要重新跑一次完整流程,原本一兩分鐘可以做完的事變成 20 幾分鐘;共用程式碼庫本身有兩個一直沒修好的測試,只要有人剛好在那個時間點跑到,不相干的修改也會被拖著一起顯示失敗;測試執行順序又把最貴的步驟排在最前面,便宜的檢查排在後面,導致失敗要等很久才會顯示出來。這三個問題修好估計可以省下 110 到 130 美元。當天已經把快取的登入資訊重新設好,但還沒有一次真正的建置流程可以驗證效果。
這天其他出錯的地方
- 其中一個站版本控制裡存的網頁只有 546 頁,實際建置出來卻有 11,580 頁,而且「不給搜尋引擎收錄」的設定被同時寫了三層,是刻意設計還是遺留下來的沒人確認,當天沒有把這個站推上新平台。
- 為了重新設定一組快取用的存取憑證,畫面對話框還開著時就先截了圖,憑證原文因此意外留在對話紀錄裡;評估風險後決定沿用同一把憑證,並訂下新規則:這類畫面在對話框關閉前一律不能截圖。
- 暫存工作區在收尾時被清空,大約 18 份代理人查核報告的原始細節因此遺失,結論、工具與已經套用的設定都還在,只是查核過程紀錄不見了;之後訂下規則,代理人的報告一律要直接寫進正式留存的位置,不能只放在暫存區。
- 雲端建置流程一直漏傳一批版本控制裡本來就有的檔案,因為建置設定沒有自己的排除清單、誤用了給版本控制用的那份,其中包含一個站的實際資料來源檔案,還有一個下載按鈕要用的參考檔,兩個都已經修好補傳。
- 有一個檢查工具原本用簡單的文字比對算網址清單筆數,遇到寫法不同的清單就會直接算出零筆、跟真的清單是空的沒兩樣;換成正確解析的工具重新檢查一輪後,抓出好幾個原本判斷方向完全相反的案例,其中最嚴重的一個把「現網正常、新平台壞掉」看成了相反的結果。