Netflix與Google共同釋出開源的自動化金絲雀分析(Automated Canary Analysis,ACA)工具Kayenta,該服務能幫助開發團隊降低快速部署可能發生的風險,以應付現今各種規模以及持續交付的工作。

Netflix的資深軟體工程師Michael Graff表示,Kayenta集結了多年Netflix產品快速交付的經驗與教訓,而現在Kayenta是Netflix交付產品的關鍵部分,能有效降低改變生產環境所帶來的風險。 

由於鳥類金絲雀對甲烷以及一氧化碳很敏感,在過去科技較不發達的時代,礦工會帶著金絲雀進礦坑,透過金絲雀對空氣的反應,判斷是否存在危險氣體。而對軟體工程來說,釋出金絲雀版本是一種測試策略,能降低將新版本部署到正式產品環境的風險。

常見做法便是讓大部分用戶使用穩定正式版,而對小部分用戶部署金絲雀版本,並透過分析兩個版本產生的資料,來了解新版與舊版的差異。而Kayenta便在其中扮演自動化分析的角色。Netflix與Google合作後,Kayenta被整合到了開源多雲持續交付平臺Spinnaker中,現在還能跨多雲環境執行自動化的金絲雀測試。

為分析金絲雀版本,Kayenta會把金絲雀版本與產品基準(Production Baseline)相比。理論上應該是拿正式環境的產品來比較,但是由於正式產品已運作一段時間,會產生統計偏斜的問題,因此分析團隊需要產生新的產品基準來比較,才能確保後續產生的指標沒有偏差。

Spinnaker可以同時執行金絲雀版本與一群產品基準叢集,這些叢集通常每個都包含2到3個運算實體,而約1%少數實際用戶的服務請求,會被導引至這些叢集上,並根據時間紀錄性能以及功能指標,Kayenta能自動將基準從及與金絲雀版本比對判斷,讓開發團隊了解金絲雀版本與正式版本的細節差異。

Kayenta已整合許多監控工具,包括Stackdriver、Prometheus、Datadog和Netflix Atlas等。當然也能與其他工具合併使用,因為Kayenta為可插拔設計,包括指標來源、判斷系統以及結果儲存都是。而且因為與Spinnaker整合的關係,Kayenta還可用於在AWS、GCP、Azure、Openstack、Kubernetes或混合環境等,支援分析和部署金絲雀版本的平臺。

Michael Graff提到,Netflix正將整個金絲雀測試系統轉移至Kayenta,所有工作將在數個月內完成,目前Kayenta每天執行200個的判斷,占整體負載30%。他指出,由於受高度信任的部署,而大幅提升開發人員的工作效率。


Advertisement

更多 iThome相關內容