全部產品
Search
文件中心

Well-Architected Framework:設計方案

更新時間:Apr 29, 2024

基於穩定性支柱設計原則,整體穩定性設計方案可參考如下:

(應用上雲規劃-應用上雲實施-圖5)  備份 2 2.jpg

架構設計原則

軟體系統從所有的功能都在一個應用程式內啟動並執行單體應用架構,到不同的功能模組分別部署在不同的伺服器上的傳統分布式應用架構,再到服務細分通過輕量級的通訊機制進行互相調用的微服務架構,到現在將雲端運算、容器化、微服務架構等技術結合起來的雲原生架構。在軟體系統架構演化中不變的是系統的基本屬性,包含儲存、計算和網路,變的是儲存、計算和網路的實現方式和規模,往大規模、高效能、高可靠、易擴充等方向迭代演化,所以對架構穩定性提出了更高的要求。

系統可預見的穩定性風險包含軟硬體故障和不可預期的流量,小到線程級風險,大到地區級災難,從此出發可通過容災、容錯、容量三方面建立系統架構穩定性。

容災

容災就是在災難發生時,在保證生產系統的資料盡量少丟失的情況下,保持生存系統的業務不間斷地運行。異地多活、同城雙活都屬於容災的範疇。藉助阿里雲多地區(Region)及可用性區域(Availability Zone,簡稱AZ)能力,應用可以用較小成本來完成容災架構部署。

容災需要具備較為完善的資料保護與災難恢複功能,保證生產中心不能正常工作時資料的完整性及業務的連續性,並在最短時間內由災備中心接替,恢複業務系統的正常運行,將損失降到最小。

容錯

容錯是指在分布式系統中,系統出現故障時,通過設計和實現可靠的機制和策略,使系統能夠自動檢測、排除或者糾正錯誤,保證系統能夠正常運行,從而提高系統的可靠性和穩定性。

容量

容量是在一定時間內,系統能夠處理的最大工作量或資料量,或指系統所能夠承載的最大負載。系統容量與系統的硬體、軟體、架構以及網路頻寬等因素密切相關。在雲上,還需要關注單個阿里雲帳號下的雲端服務配額,避免因觸及雲端服務配額限制導致的業務故障。

變更設計原則

在企業的營運管理與運行過程中,就會有變更產生。變更是指添加、修改或刪除任何可能對服務產生直接或間接影響的內容。當變更失敗時可能會帶來嚴重後果:業務中斷、客戶輿情等等一系列問題。為了降低變更帶來的業務風險,需要遵循變更設計原則:可灰階、可監控、可復原。

可灰階

可灰階,需要建立起完整的灰階發布機制,完善的灰階機制有助於變更失敗時降低業務影響,提升使用者體驗。

灰階發布機制包含但不限於以下幾點:灰階方式、灰階批次、間隔時間、灰階觀測等。灰階發布需注意:

  1. 灰階間隔時間:合理設定灰階間隔時間,不宜過長。過長的灰階間隔時間可能導致下遊應用出現資料不一致等問題。

  2. 灰階發布方式:合理選擇灰階發布方式,可按使用者、按地區、按渠道等方式進行灰階,避免出現灰階過程中使用者體驗不一致的問題。

  3. 灰階發布批次:建議先小範圍的進行灰階驗證,再逐步擴大灰階範圍。

  4. 灰階觀測指標:明確灰階期間的可觀測指標,用於判斷髮布結果,避免造成連鎖反應。

可復原

大部分變更要做好應急恢複手段,最常用的技術手段就是復原。

理論上復原永遠是最合適最有效方法,當問題發生時,保證業務連續運行永遠是第一要義。實際中可能存在其他解決方案,但後果無法預料,所以選擇復原是最好方式。

在發布時建議多版本小更新,避免因變更版本跨度較大,帶來的系統依賴關係問題導致無法復原。

可觀測

在變更過程中,會影響到現有環境以及上下遊業務,通過對業務、鏈路、資源等做到可觀測,就能夠第一時間發現問題。在觀測過程中,關注業務指標(如下單成功率)和應用指標(如CPU、Load、異常數量等)。當指標較多時,優先關注高優先順序的業務指標,業務指標能夠最直觀反映當前系統狀況,當業務指標發生變化時,往往應用指標也會有相應的變化。

變更前需準備好對應的檢查清單。在變更期間,要做到持續觀察監控資料,確定是否有負面影響或問題。在變更結束後,對變更前後的業務指標進行對比,沒有問題後才結束變更。

應急響應機制

應急響應機制的關鍵點在於事件發生後,有標準的操作流程和動作。阿里巴巴在過去十幾年的安全生產過程中,沉澱了一套故障應急響應機制,簡稱應急響應1-5-10。是指在1分鐘內發現故障,5分鐘內組織相關人員進行初步排查,10分鐘內開展故障恢複和處理工作。企業在設計應急響應機制時,可以參考該方式明確響應期間的標準動作和流程,確保在事件發生時,相關干係人都能夠明確自身職責和所需要採取的措施。

故障發現

故障一旦發生,越早發現故障,能夠越早進行響應。建議通過以下途徑實現故障的快速發現:

  • 統一警示:在發現故障後,需要將相關資訊及時告知相關人員,包括系統管理員、營運人員等。可以通過簡訊、郵件、DingTalk等方式進行警示,確保所有相關人員第一時間得知故障情況,以便快速組織應急響應。

  • 監控大屏:監控大屏是指將所有系統的運行情況以圖形化的方式展示在螢幕上,以便即時監控系統健康情況。在發生故障時,監控大屏可以快速反應故障情況,並提供相關資料,為故障排查及處理提供依據。

  • 風險預測:風險預測是指在發生故障前,通過資料分析、機器學習等方式,預測系統的風險情況,提前進行預防和處理。在故障應急響應中,風險預測可以作為重要參考,協助快速識別問題的根本原因,提高故障處理效率和精度。

故障響應

在發現故障後,需要快速定位問題,通常有以下做法:

  • 組織協調:故障發生後,需要迅速組織相關人員進行應急響應。組織協調包括設定指揮中心、確定應急響應流程、分配任務等。這些工作的目的是提高應急響應的效率和準確性,讓每個人都清楚自己的任務和責任,避免出現混亂和誤操作。

  • 警示關聯分析:在故障發生時,系統會自動產生警示資訊。為了更好地定位故障原因,需要對各種警示資訊進行關聯分析。這樣可以快速確定故障的範圍和影響,並且能夠協助排查故障的根本原因。警示關聯分析可以使用各種工具和演算法,如事件關聯分析、機器學習等。

  • 知識圖譜:知識圖譜是指通過將各種資料和知識進行關聯和組織,建立一種知識庫或知識圖譜,以便在故障發生時快速定位和解決問題。在應急響應中,知識圖譜可以指導故障排查和處理工作,提高效率和準確性。知識圖譜可以使用各種工具和技術,如自然語言處理、圖資料庫等。

故障恢複

定位故障原因後,按照應急預案快速恢複業務,並在事後進行複盤總結。

  • 預案執行:在故障響應的過程中,需要按照事先制定的應急預案進行執行。應急預案包括了應急響應流程、各個崗位的職責、處理流程等。預案執行能夠保證故障恢複和處理的正常化和標準化。

  • 故障自愈:故障自愈是指系統自動檢測到故障並採取自動回復措施。故障自我修復技術可以協助故障恢複和處理更加快速和準確。例如,利用容器技術,系統可以自動遷移容器來解決故障。

  • 故障複盤:故障複盤是指對故障進行分析和總結,以便更好地避免故障的再次發生。在故障複盤過程中,需要對故障的起因、影響、處理過程等進行詳細的記錄和分析,並制定相關的措施。故障複盤也是一種學習和提高的過程,能夠不斷完善系統和提高團隊的應急響應能力。

演練常態化

故障演練提供了一種端到端的測試理念與工具架構,本質是通過主動引入故障來充分驗證軟體品質的脆弱性。從提前發現系統風險、提升測試品質、完善風險預案、加強監控警示、提升故障應急效率等方面做到故障發生前有效預防,故障發生時及時應對,故障恢複後迴歸驗證。基於故障本身打造分布式系統韌性,持續提升軟體品質,增強團隊對軟體生產啟動並執行信心。故障演練可分為方案驗證的容災演練、穩定性驗收的紅藍攻防,以及故障應急驗證的突襲演練。

容災演練

容災演練是通過類比執行個體、機房或地區級故障,判斷系統服務的逃逸能力,驗證系統的容災能力以及面對災難時的應對能力。容災演練可以協助企業更好的驗證RPO、RTO指標,及時發現和解決相關問題,提高系統的可用性和可靠性。

紅藍攻防

紅藍攻防是在想定情況誘導下進行的作戰指揮和行動演練,是部隊在完成理論學習和基礎訓練之後實施的,近似實戰的綜合性訓練,是軍事訓練的進階階段。演習通常分為紅軍,藍軍,多以紅軍守,藍軍進攻為主。

紅藍攻防不僅能夠用於安全演練,在穩定性演練中同樣適用。在穩定性攻防中,藍軍從第三方角度發掘各類脆弱點,並向業務所依賴的各種軟硬體注入故障,不斷驗證業務系統的可靠性。而紅軍則需要按照預先定義的故障響應和應急流程進行處置。在演練結束後,建議針對故障中的發現、響應、恢複三個階段的時間長度和操作內容進行複盤,並梳理改進點進行最佳化,提升業務系統的穩定性。

突襲演練

突襲演練是一種手段以及目標對紅軍不透明的組織形式。通過突襲演練可以全面檢驗技術團隊在面對突發故障時的應急和恢複能力,提升人員的安全意識。在突襲演練中,紅藍雙方是純對抗的關係,因此對紅藍雙方提出了更高的要求,藍軍不僅需要瞭解目標系統的薄弱點,更需要瞭解目標系統的業務,紅軍不僅僅需要修複故障,還需要快速的發現故障和有效應急協同。相比較計劃演練,突襲演練涉及到的人員,情境,流程也會更加複雜,同時不但確保演練計劃的私密性,還需要充分評估在紅軍未及時處理故障時的影響面控制。