金絲雀測試:它是什麼,您如何從中受益?
已發表: 2022-08-20如果您不是程序員,您可能從未聽說過金絲雀測試。 沒關係,但是您可能想知道它是什麼,為什麼稱為金絲雀測試?
該術語源自“煤礦中的金絲雀”一詞。 您會看到,煤礦工人過去常常將籠中的金絲雀帶入煤礦,因為金絲雀對有毒氣體的耐受性較低。
因此,工人們知道,如果金絲雀死了,他們就應該離開礦井。 在軟件開發方面,在創建新軟件時,目標是在問題成為用戶問題之前盡快發現並解決問題。
什麼是金絲雀測試?
金絲雀測試是嘗試新功能和特性的方法,希望對用戶端的負面影響最小。 這種類型的測試通常與一小部分用戶一起使用,對於這些用戶,應用程序會進行一些小的更改。 這樣,大多數用戶仍將使用當前版本的軟件,而選定的較小用戶群將使用略微升級的版本。
這個練習的目的是讓大多數使用該軟件的人繼續使用它,沒有任何問題,同時只為一小部分用戶推動更改。
這一切都是在保持應用程序的現有版本和新版本同時運行的同時完成的。 然後,如果金絲雀測試沒有返回任何錯誤,您可以繼續將其擴展到更大比例的用戶。
讀者也喜歡:什麼是快速應用程序開發? RAD 方法的 4 個階段 – DevriX
如何進行 Canary 測試?
金絲雀測試的第一步是啟動一組後端服務器或容器來運行新代碼。 一旦有新用戶,您的負載均衡器會將其中的一部分發送到“金絲雀集群”。
然後,DevOps 專家監控服務器以識別潛在問題,例如計算負載或更高的 I/O 速率。 而且,請記住,即使發生嚴重問題,也很容易將事情恢復到原來的狀態,因為該過程不會影響使用該軟件的每個人。
否則,您可以使用 Spinnaker 等工具輕鬆實現和自動化金絲雀測試,以指定使用新代碼的用戶數量。
所述百分比通常在 5% 左右,一旦指定的 DevOps 團隊確定沒有問題,他們就可以穩步增加該百分比,直到每個人都在使用應用程序的新代碼版本。
此外,金絲雀測試在開發或暫存環境與生產環境不完全匹配的情況下是有益的。 使用一小部分用戶測試組可以揭示在登台或開發環境中未檢測到的任何問題。
讀者也喜歡:使用 WordPress 進行 A/B 測試:權威指南 – DevriX
Canary 測試的優點和缺點
讓我們使用金絲雀方法來定義測試的好壞。
金絲雀測試的好處
- 真實世界的測試。 在封閉的內部環境中進行測試非常棒,但是,能夠在真實用戶身上測試軟件會讓您更進一步。 通過金絲雀部署,您可以做到這一點——在小規模受眾上測試您的應用程序,而不會有發布全新應用程序的風險。
- 更好的風險管理。 逐步發布新功能並確保它們正常工作,可以大大減少任何重大錯誤和任何失敗的總成本。
通過使用金絲雀測試方法,您基本上無需回滾主要更新或重寫大量代碼。 - 更加面向業務。 需要向經理和營銷/銷售人員展示業務數據? 使用 Canary,您可以非常快速地查看結果。 例如,如果您想測試一個新的軟件功能——您可以為一小部分用戶部署一個新功能,然後等待該功能是否順利進行,然後您可以使用這些數據來提高參與度你的產品。
Canary 測試的缺點
- 軟件問題。 仍有未經測試的代碼,因此自然存在風險。 如果即使是少數用戶在特定功能方面遇到嚴重問題,最好跳過金絲雀測試,轉而進行更嚴格的內部測試。
- 較大的開支。 如果您打算使用負載均衡器對用戶進行分區,您將需要額外的基礎設施和更多的管理。 這意味著您必須創建兩個獨立的生產環境和後端來執行測試。 因此,需要兩個應用服務器、兩個代碼行、兩個 Web 服務器和一個網絡基礎設施來維護。
- 糟糕的用戶體驗。 一些用戶可能不太熱衷於被用作測試對象的想法。 如果您想對正在發生的事情持開放態度,您可以通過“早期採用”計劃或類似的方式讓用戶知道他們被用作“金絲雀”。
什麼時候不使用 Canary 測試?
金絲雀測試在很多情況下都是有益的,但是,它並不是對所有事情的萬無一失的答案(即 42)。
這是你絕對不應該使用金絲雀方法的時候:
- 在不適合持續部署的環境中。
- 在處理生命支持系統或核反應堆等關鍵軟件時。
- 失敗可能導致重大經濟影響的金融系統。
當您無法遠程更新軟件時。
如何進行 Canary 部署?
現在,讓我們看一下為了執行金絲雀部署需要採取的必要步驟。
- 準備在登台服務器上部署。
- 通過負載均衡排除金絲雀節點。
- 將新版本部署到金絲雀節點。
- 使用自動化測試腳本測試新版本。
- 通過負載平衡將金絲雀節點連接到流量。
- 將更新推廣到剩餘的生產節點。
實際上,部署從準備登台服務器開始。 檢查配置文件、測試腳本、構建工件等。 之後,您可以運行自動或手動測試,或者讓服務器保持運行狀態,看看一切是否運行良好,或者是否崩潰。
何時將 Canary 投入生產?
一旦您在 5% 或 10% 的用戶上測試了您的金絲雀更新,並且一切正常,您可以繼續將測試用戶的百分比提高一倍或三倍。
然後,再次測試,從指標中收集反饋,一旦您評估一切正常,您就可以繼續更新 70% 的生產環境。
最後,重複測試過程,如果一切順利,向 100% 的用戶推出新版本的軟件,當然還要繼續監控。
已實施 Canary 部署的公司
為了向您展示金絲雀部署是一種流行的實現方法,我們將看看一些使用金絲雀部署的公司。
網飛
自 2018 年以來,這家流媒體服務巨頭一直在使用 Kayenta 的自動金絲雀分析。這使得 Netflix 的生產環境能夠以極快的速度更新。 該公司表示,這種部署方法提高了開發人員的生產力,同時降低了對其生產環境進行更改的風險。
這個社交媒體平台也一直是金絲雀部署的忠實擁護者。 他們的聯合創始人兼首席技術官 Mike Krieger 分享說,金絲雀版本確保錯誤不會造成太大的損害,並且只會影響一小部分人。
谷歌
您知道 Google Chrome 有一個專門為開發者設計的特殊版本嗎? 沒錯,Google Chrome Canary 允許您測試新的 Web 平台 API,並在其他人之前看到瀏覽器的未來會是什麼樣子。
微軟
微軟使用自己的員工來測試他們所有的產品更新。 自 Windows Vista 和 Microsoft Azure 以來,該過程就已經到位。 Windows 10 升級也是使用其員工操作系統的金絲雀更新完成的。
概括
Canary 測試是在真實測試環境中快速引入新應用程序版本的好方法。 不僅如此,它還可以實現更好的風險管理和更可跟踪的數據。
儘管金絲雀測試有很多好處,但它並不總是能解決所有情況。 確保在開始金絲雀部署之前進行研究,否則可能會適得其反。