完成兼職工程師的第一單任務,心驚膽跳,值得紀念 XD
任務是讓土炮搜尋引擎能讓其他單位用。為了後續開發、維護和資安稽核,不得不把 project 套件全都更新一輪,從 Laravel 8 一口氣升到 11 開始。
因為版本差太多,連 DB schema 都不完全相容,且老系統基本只有我在用,除了需要被 search 的資料外,沒什麼值得備份的。這次「升級」乾脆直接重建,用乾淨 Laravel 11 環境,再把原本的 App 逐步移植過來。線上部分環境也推倒重來。
升級過程根本是災難片。Laravel 包含前後端全家桶還有大量 dependency,牽一髮動全身。例如 Laravel 11 改用 Vite 取代 Laravel Mix,所以 view template 語法得改,JS 也要 require 改用 import,導致 variable scope 和載入順序都不一樣等。Dependency 大改也引發一堆問題,例如部分自動化測試更新後,莫名其妙的 InnoDB deadlock,原來是測試 case 沒有正確解構,舊版本剛好沒觸發 bug。前端套件升級也讓頁面毀容,需要細微但繁複的修改,開著 CSS 原始碼、套件官方 demo、自己網頁的 Firefox console 來回比對好久才清理掉發現的問題。
升級還是有愉快的部分。因為直接打掉重練,所以可以下 drop database production_db 這種快樂指令。只可惜 dev team 只有我一人,無法找其他 member 分享刪庫的喜悅。等搜尋引擎未來逐漸成為公司資產後,應該就不能享受一言不合就 drop database 的快樂 QQ。
這次升級,慶幸當初有認真做自動化測試。雖然沒完整自動化 CI/CD,但至少我寫的後端 code 有 100% test coverage。後端真的 test 全過,線上就過。趁周末值班空檔備份、下線、刪庫、更新、部分重新初始化,解掉個佈署腳本的小 bug,docker 一啟動看到的就是正常的服務,非常舒心。
過程中 GPT-4 老師也很幫忙。像我 jQuery 老人根本不懂什麼 import、require、CommonJS、AMD 啊,現在問題和 code、錯誤訊息全問 GPT。GPT 如果不能直接給 sample code 也能給 hint,幫我這一人萌新團隊快速過掉問題。
之後還有很多問題要處理,特別是安全方面沒碰過頭有點大,只能走一步看一步。現在還已經正式兼職,不能再說我只是個發燒友來推託了 orz
0 意見:
張貼留言