可灰度
灰度為變更提供一種快速低成本的試錯機制,其具有多種不同層面的實現形式。一種典型的灰度機制,是提供一套完整而獨立的灰度環境,用于正式生產變更前的提前驗證。另一種較為典型的灰度機制,為在生產環境分批次變更,通過細化控制變更的節奏和影響范圍,實現小規模生產試錯能力。
灰度環境
灰度測試環境的目的是隔離生產流量,減少風險影響,在環境內形成調用閉環,方便測試,具體灰度環境建設如下圖所示。灰度環境灰度的時間點位一定要在上線生產之前。可引流內網全部流量和線上1%流量作為測試覆蓋的基礎。
灰度分批
這里列舉三個常見的分批方式:簇內分批、簇間串行、簇間打散,每個層面中對應的灰度方式如下圖所示:
圖中的簇指的是可以繼續拆分的邏輯組,包含但不限于單元、地域、機房、可用區、VPC、集群、分組、自定義邏輯區域等。
線上生產環境灰度變更建議包含以下要求:可分批、可控制分批間隔、可觀測/可驗證、可暫停/可回滾。
可分批:指灰度方式必須至少滿足灰度分批方式中的一項:簇內分批、簇間串行、簇間打散。確定好灰度方式后,至少需要2批進行發布。如果確實不具備灰度能力,建議提升審批申報層級。
可控制間隔:指變更可對每批次的發布時間間隔進行控制。一般建議重大風險的變更灰度時長至少一個小時。核心系統的生產環境灰度發布總觀測時長不少于30-60分鐘。第一批變更完后至少觀測20分鐘,后續發布批次間隔可自定。
可觀測:指變更系統每批次發完后,需要觀測并驗證本批次發布無問題后才能進行下一批次的發布。觀測和驗證的手段包括但不限于以下方式:在變更系統里至少記錄一項核心反應健康狀態的指標(業務監控項、日志文件名等)或記錄二次確認人員或采用自動化觀測等,并能通過對線上文件驗證等方式確定已發布成功。
可回滾:指灰度時需具備分批回滾、全量回滾的能力,回滾單要有變更記錄并可追溯。