天天看點

第二十四篇:穩定性之多環境建設

前言

在很多網際網路公司依然淩晨才能夠上線,上線那天面臨各種突發情況,導緻通宵上線,這些問題都很常見,經常因測試不周且頻繁版本變更,及未經充分驗證的代碼,線上上直接運作出現故障屢見不鮮,适當的變更有助于減少故障的發生,但是無法杜絕後患,在這種情況,如何降低或減少未經驗證的代碼出現線上上環境,如何在上線日釋放人力并有效改善現狀。

多環境建設

為了提升産研的疊代效率,通常情況下都會存在多個環境,分别是開發環境、測試環境、預發環境、線上環境,不同環境的職責也不同,對于業務立項、研發、最終上線都會先後經過上述環境,一方面是為了提升産研的效率,另外一方面是驗證新業務功能的完善性、正确性及對目前系統的影響以及可靠性和相容性。

多環境同時也對應Git倉庫的多分支,分支用途也不同,分支名稱和環境是一一對應的,例如:

●Dev分支:開發分支,對應開發環境,使用者内部內建聯調、自測

●Test分支:測試分支,對應測試環境,分支代碼合并,部署等等,使用者功能測試

●Release分支:預釋出分支,對應預發環境,用于最後一輪的測試和驗證

●Master分支:主分支,對應線上環境,提供線上服務,上線完成後,繼續新開發功能再從 Master 分支上拉代碼進行新的開發

開發環境

開發環境是供研發工程師使用和維護,是代碼最超前版本的一個環境,通常情況下開發環境是被研發工程師用來内部聯調測試或者内部內建測試,在新業務的疊代中,任務最終可能拆分到不同研發工程師中,各自都是獨立研發完成,最終可能在開發環境上做内部內建測試,隻有經過研發工程師内部測試通過的才可送出到測試環境供測試人員進行測試。需要注意的是,在提測時盡可能由owner進行發送提測郵件,郵件内容一般包括:業務功能描述、此次所有的git倉庫位址、分支名字、是否配置變更、是否有資料庫表結構變更、是否涉及其他依賴、影響範圍、功能負責人等等。

測試環境

測試環境是供測試人員使用,一般情況下研發人員是沒有權限動測試環境,将研發和測試隔離開,為了使測試結果更加真實有效。在以往的經驗中,遇到很多次測試人員在測試環境進行業務測試,研發工程師動了測試環境,導緻整個測試阻塞,測試人員在該環境按照測試用例進行測試,經過多輪的測試,直到所有的Bug都被解決掉,最後經項目責任人或産品經理驗收測試,一旦完成,等待上線時間進行上線。

預發環境

經過測試驗證過且到達上線時間點,在這個過程中,提前預留部分時間,将其釋出到預發環境,預發環境最後經過一輪驗證,預發環境不論是環境真實性還是資料庫更接近線上環境高度仿真,在這個過程中測試人員會再次回歸測試一輪,驗證是否可達上線狀态。

預發環境和測試環境差別

預發和測試環境的差別是預發環境更接近線上環境高度仿真,無論是環境配置還是資料庫、配置等都和線上一樣,另外還會有線上真實的資料可進行驗證,比測試環境更準确,更提升可靠性;面向的使用者群體也不同,預發環境可使用更貼近真實使用者的資料進行測試驗證。

預發環境高度仿真

引入預發環境可以幫助我們解決很多在測試環境發現不了的問題,為了保證預發環境的高度仿真,是以基礎環境、配置方面和線上環境保持一緻,差别主要是在容量和資料存儲上,說到這裡可能能夠想到面對資料庫結構修改,如何保持高度仿真呢。

●容量:預發環境一般是最小單元,不會和線上部署伺服器數量一樣,通常保持2台,保持基礎可用即可,節約成本,縮小規模。

●資料存儲:可參考定期備份同步政策,定期和線上的資料保持一緻,這樣就可解決資料庫表結構修改的問題,資料存儲一般中等配置即可,更多占用的磁盤存儲空間。

線上環境

多環境維護

小結

繼續閱讀