昨天我們聊過 藍綠部署,重點是「兩個環境準備好,隨時能切換」,就像副本前備好兩隊人馬,打不動隨時換人上。
但現實中,很多時候不是「整隊換掉」,而是「先派幾個人去試試看」。
這就是 金絲雀部署(Canary Deployment)。
金絲雀這個比喻來自礦坑。
早期礦工會帶金絲雀下礦,因為牠對毒氣很敏感,萬一環境有毒,金絲雀會先出狀況,提醒大家撤退。
放到CI/CD就是:
在我們的環境裡,做法大概是這樣:
Caddy 的 Caddyfile 就能做到流量分流,我們可以加一段簡單的「隨機權重」:
app.hacuba.site {
@green {
random 10%
}
handle @green {
reverse_proxy green:8000
}
# 其他 90% 走舊版
handle {
reverse_proxy blue:8000
}
}
這段意思是:
金絲雀部署的最大好處,不只是「10% 安全網」,還能漸進調整比例:
整個過程,就像遊戲活動逐步開放伺服器,先限量測試,再全面開放。
如果新版本出問題,不需要重新部署,也不用緊急打補丁。
只要改設定,把分流比例調回 100% → blue,使用者立刻回到舊版環境。
這種「隨時能退」的安全感,就是金絲雀部署的核心價值。
它讓團隊敢於嘗試新功能,而不用怕「一上線就全服陪葬」。
金絲雀部署,重點不是炫技,而是:
藍綠部署是「兩套環境快速切換」
金絲雀部署則是「流量分批切換」
兩者搭配起來,就像有「存檔點 + 試玩模式」,不只安全,還多了彈性。
自動化部署不是衝最快,而是走得穩。金絲雀部署,就是在高速前進時,留一顆小小的測試氣球,提醒我們何時該剎車。