部署字彙:build / deploy / restart 到底在做什麼
工程師說的「部署」,是一件事還是很多件事?
下午三點,你在等一個新功能上線。工程師說:「快了,我在跑 build,build 完要 deploy 到 staging,QA 過了再 deploy 到 prod。」
對你來說,這句話可能是一串無意義的單字。
但等到你學完這一課,你會知道:這個流程大概需要多少時間,以及中間如果某個步驟卡住,你可以問什麼問題。
核心字彙全解析
Build(建置)
是什麼: 把程式碼「編譯」成映像檔的過程。
就像廚師按照食譜,把所有食材準備好、預先處理,裝進一個密封的便當盒——這個便當盒就是映像檔。
你會在什麼時候聽到:
- 「build 失敗了,應該是某個套件版本有衝突。」
- 「build 完成,映像檔已經推到倉庫了。」
需要多少時間: 視專案大小而定,從幾十秒到幾十分鐘都有。如果工程師說「build 很慢」,通常表示有優化空間。
身為 PM 你要知道: Build 是「製作」的步驟,不是「上線」。Build 完還不等於用戶看得到新功能。
Deploy(部署)
是什麼: 把映像檔放到伺服器上並啟動,讓服務上線。
就像把便當盒從工廠送到便利商店的貨架上,開始販售。
你會在什麼時候聽到:
- 「deploy 到 staging 了,你可以去測了。」
- 「prod deploy 完成,新功能已上線。」
需要多少時間: 通常比 build 快,幾秒到幾分鐘。但大型系統可能有滾動部署(rolling deploy),需要更長時間確保不影響流量。
身為 PM 你要知道: Deploy 是「上架」的步驟。Deploy 完成,才代表用戶(或測試人員)可以看到這個版本。
Restart(重啟)
是什麼: 停止正在執行的容器,然後重新啟動它。
就像便利商店的店員把架上的便當拿下來又放回去——商品本身沒變,只是重新上架。
你會在什麼時候聽到:
- 「我更新了環境變數,你把容器 restart 一下。」
- 「記憶體洩漏的問題可以先 restart 緩解,但根本解法還要追查。」
身為 PM 你要知道: Restart 不會更新程式碼,只是重新啟動現有的映像檔。如果你想看到新功能,restart 沒用,要重新 deploy。
Rollback(回滾)
是什麼: 把服務從新版本退回到上一個可用版本。
就像便利商店發現新到的便當有問題,緊急把舊批次從冷藏庫拿出來重新上架。
你會在什麼時候聽到:
- 「新版本上線後訂單轉換率掉了 20%,我們先 rollback,之後再查原因。」
- 「這個 Bug 影響範圍太大,先 rollback 到 v2.2 再說。」
身為 PM 你要知道: Rollback 能做的前提是有舊版本的映像檔。這也是為什麼工程師每次 deploy 都要標記版本號——沒有版本號,就沒辦法精準回滾。
Scale(擴展)
是什麼: 把某個服務的容器數量增加(或減少)。
就像便利商店發現某款便當賣得太好,緊急多叫了幾批貨——商品是同一種,只是數量變多了。
你會在什麼時候聽到:
- 「雙十一前我們把 API 服務 scale 到 10 個實例,確保撐得住流量。」
- 「大促結束了,scale down 到 3 個節省成本。」
身為 PM 你要知道: Scale 是「數量」的操作,不是「版本」的操作。擴展容器可以應對流量,但解決不了程式碼的 Bug。
Image Tag(映像檔版本號)
是什麼: 映像檔的版本標記,例如 v2.3.1 或 latest。
就像便當的製造日期和批次號碼。
你會在什麼時候聽到:
- 「deploy 的時候記得把 tag 指到 v2.4.0,不要用 latest。」
身為 PM 你要知道: 用 latest 部署很危險——因為 latest 指的永遠是「最新推上去的那個」,有時候是你要的版本,有時候不是。好的工程團隊會用明確的版本號,確保每次 deploy 的是哪個版本。
用一張表整理
| 指令 | 白話解釋 | 是否更新程式碼? | 是否影響服務可用性? |
|---|---|---|---|
| Build | 把程式碼打包成映像檔 | 是(把新程式碼打包進去) | 不影響(只是在製作) |
| Deploy | 把映像檔放上線 | 是(用新映像檔取代舊的) | 短暫影響(部署期間) |
| Restart | 重新啟動現有容器 | 否(映像檔沒變) | 短暫影響(重啟期間) |
| Rollback | 退回上一個版本 | 是(換回舊映像檔) | 短暫影響(回滾期間) |
| Scale Up | 增加容器數量 | 否 | 影響服務能力(變強) |
| Scale Down | 減少容器數量 | 否 | 影響服務能力(變弱) |
練習題
AI 協作:學了這個,跟 AI 怎麼配合?
掌握部署字彙,讓你能和 AI 一起分析事件報告(incident report)、制定應急預案,不再因為看不懂術語而錯過關鍵資訊。
你的人類優勢:
- 你知道這次 deploy 的業務背景(例如:這個功能是連動促銷活動的,rollback 會影響哪些行銷承諾)
- 你能判斷「服務短暫影響」的可接受視窗——凌晨兩點 deploy 和下午兩點 deploy 的業務風險完全不同
可以這樣跟 AI 說:
我們電商平台昨晚 deploy 了新版本後,訂單成功率從 95% 掉到 78%。工程師正在排查,但評估 rollback 可能需要 20 分鐘。請幫我準備一份給業務主管的緊急說明,包含:現況、已採取行動、預計恢復時間、對今日營業額的初步影響估算框架。
挑戰任務
上線後發現結帳頁面有嚴重 Bug,工程師說「我先 restart 看看」。你作為 PM 應該如何回應?restart 能解決程式碼 Bug 嗎?
你的團隊要在週年慶前三天 deploy 一個新的優惠活動功能。作為 PM,你需要在上線計畫中確認哪些和「rollback」相關的事項?