利用 Redis 來優化功能部署和錯誤分類

來源:Redislabs前端

做者:Shabih Syedredis

翻譯:Kevin (公衆號:中間件小哥)數據庫

 

爲了讓系統運行更流暢,又避免 Knights Capital 在 2012 年犯下的 4.6 億美圓的錯誤,一家領先的金融市場製造商的單日計算機系統故障給 IT 社區提供了一些教訓,包括系統組件的設計、實現,和DevOps 的重要性。在這個由兩部分組成的博客中,我將分享一些想法,以幫助開發團隊保持其持續集成和持續部署(CI / CD)流程的安全, 特別的,我將展現如何使用特性開關和特性上下文來來管理持續更新,如何建立一個容易訪問的日誌數據庫,一個能夠快速查找的錯誤信息數據庫--全部這些都藉助 Redis。想象一下,您是一名工程總監,管理着一個由多個開發人員組成的團隊,這些開發人員負責具備數千個併發用戶的Web 應用程序的前端。您的應用程序已部署在 AWS 中,您須要每週推送新的版本,公司沒法承受因Web 應用程序帶來的任何破壞,所以若是發生錯誤,您的團隊必須當即回滾到最近更新的版本。您必須快速識別出問題代碼,讓開發人員對其進行修復,並在後續對外發布,並且產品團隊老是要求儘快提供新功能,所以您如何迅速對錯誤作出反應,並以業務需求的速度上線新功能?api

在 2019 年遊戲開發者大會(GDC)上,我參加了一個主題爲「大規模調試:每個月活躍用戶超過 7 千萬的跨平臺穩定性」的議程,由Redis Labs 客戶 Roblox 和 Chris Swiedler 共同主持,描述了一種能夠能夠支撐每週更新的軟件發佈過程。克里斯分享了他的團隊如何在 Roblox 上修改應用程序行爲而不改變代碼,這樣能夠減小現網問題的發生。他們使用特性標記,這與 Martin Fowler 的「特性開關」方法很是類似。安全

 

新功能發佈的示例 CI / CD 流程網絡

 圖2:功能開發和推廣


讓咱們分解圖 2,其中概述了能夠做爲CI / CD 和分類過程的一部分的方法:
1. 開發人員開始研究新功能;併發

2. 開發人員和產品管理團隊決定哪些場景將使用新功能(可能僅針對部分用戶);分佈式

3. 開發人員提出了一種切換策略,其中新代碼和舊代碼由「 if and else」塊分隔;測試

4. 一旦開發人員完成新功能代碼的開發,他們便將Canary 版本發佈到生產環境(藉助 DevOps);翻譯

5. 人們在使用該應用程序中,根據其角色和切換,能夠執行新代碼或者舊代碼;

6. 若是出現問題,能夠將切換開關設置爲false,以將全部用戶轉移到舊代碼;

7. 一段時間後,該功能將升級爲正式發佈版本(GA)。

此策略可有助於:

1. 將canary 版本發佈到生產中,以實時流量和真實用戶(而不是模擬)進行測試;

2. 在不回滾任何代碼的狀況下即時禁用功能;

3. 經過切換特性開關啓用功能或功能組合;

4. 可經過特性開關中的元數據輕鬆識別(對於大型開發團隊而言)負責的開發人員。可是能夠將這種方法前進一步,以幫助分佈式開發團隊安全地發佈新功能,並在須要時以最小的影響回滾新功能。

 

Redis Enterprise 的 CI / CD

 

 

您須要快速,持久的數據庫時,Redis Enterprise 很是適合。其功能包括:

  • 具備永久網絡存儲的徹底託管的 Redis 數據庫即服務,可防止實例數據存儲丟失;

  • 跨多個 RedisEnterprise 羣集建立的無衝突可複製的數據庫,這些集羣位於各地的不一樣數據中心,這提供高可用的雙活和主備部署。

  • 強大的搜索功能(經過 RediSearch 模塊)可跨數據庫集羣運行搜索查詢。

 

爲了讓您的 CI/ CD 分流過程更加有效,在本系列的下一部分中,我將提供更多詳細信息和代碼段來具體展現如何使用 Redis 構建特性開關、特性上下文、錯誤數據庫和日誌數據庫。

 

原文連接:https://redislabs.com/blog/using-redis-to-optimize-feature-rollouts-and-error-triaging/

多優質中間件技術資訊/原創/翻譯文章/資料/乾貨,請關注「中間件小哥」公衆號!

相關文章
相關標籤/搜索