如圖所示,完整的混沌工程實驗是乙個持續性迭代的閉環體系,從初步的實驗需求和實驗物件出發,通過實驗可行性評估,確定實驗範圍,設計合適的觀測指標、實驗場景和環境,選擇合適的實驗工具和平台框架;建立實驗計畫,和實驗物件的干係人充分溝通,進而聯合執行實驗過程,並蒐集預先設計好的實驗指標;待實驗完成後,清理和恢復實驗環境,對實驗結果進行分析,追蹤根源並解決問題,並將以上實驗場景自動化,併入流水線,定期執行;之後,便可開始增加新的實驗範圍,持續迭代和有序改進。
下面我們會深入討論有關混沌工程實驗的準備事項:
可行性評估篇提供了這樣乙個混沌工程實驗的可行性評估模型,從多個維度對實驗技術的成熟度做了定性分析。此處的實驗可行性評估,依照這個可行性評估模型,會針對具體的實驗需求和實驗物件進行細緻評估。常見的乙個形式是對照「可行性評估問題表」,對實驗物件的干係人進行訪談。可行性評估問題表的內容會包含以下幾個方面:
觀測指標的設計是整個混沌工程實驗成功與否的關鍵之一。最新的調研報告「chaos engineering observability: bringing chaos experiments into system observability」指出在進行混沌工程實驗過程中,系統可觀測性已成為一種「強制性功能」,良好的系統可觀測性會給混沌工程實驗帶來乙個強有力的資料支撐,為後續的實驗結果解讀、問題追蹤和最終解決提供了堅實的基礎。
以下是常見混沌工程實驗的觀測指標型別:
sps 模式通常是比較規則的,受到假日和事件等外部影響會有所變化。上圖描繪的就是 sps 隨時間變化的波動情況,可以看出,它有乙個穩定的模式,每天 sps 峰值發生在晚上,谷值發生在清晨。這是因為人們習慣於在晚餐時間看電視節目。假期時,白天的**次數增加,因為有更多的空閒時間在netflix上**節目。
實驗場景和環境的設計要努力遵循以下三大設計目標:
實驗場景設計
以下是亞馬遜aws雲上常見的實驗場景:
實驗環境設計
實驗環境的不同,帶來不同的業務風險。生產環境的業務風險最大,開發環境的業務風險最小,其他依次類推。我們會建議使用者在生產環境上進行混沌工程實驗,當然前提是這些實驗場景和工具已經在開發/測試和預生產環境得到了驗證。當然在生產環境上進行混沌工程實驗也不是強制的,使用者可以選擇適合自己的推進節奏,逐步向生產環境靠攏。因為實驗越接近生產環境,從結果中學到的越多。同時,為了體現實驗對照的效果,在生產環境進行的混沌實驗可以通過真實生產流量分支的方式,組建控制組和對照組,以此區分故障注入的影響,從一定程度上控制了**半徑。對於非生產環境的混沌工程實驗,可採用模擬生產流量的方式,盡量和生產流量相似,來驗證實驗場景和工具的可靠性。
軟體工程之設計要求
在企業中每個軟體專案開發都要涉及到專案的開發計畫和軟體的需求分析這兩個階段的任務 內容 方法 技術和文件。那麼什麼叫專案開發計畫呢?專案開發計畫 是軟體工具中一種管理性文件,主要是對開發的軟體專案費用 時間 進度 人員組織 硬體裝置的配置 軟體開發環境和執行環境的配置等經行說明和規劃,是專案管理人員...
軟體工程之系統建模篇 設計視窗設計
在建立使用者介面原型之前,應該先建立視窗結構圖,視窗結構用於描述視窗之間的關係,於uml沒有直接的關係,本章介紹視窗結構的設計過程,先介紹視窗結構的設計方法,然後設計總體視窗結構圖,最後設計下一層的視窗結構圖。1 設計方法 視窗結構是視窗之間的切換流程,通過視窗結構,可以直觀地看到通過用例的路徑流程...
軟體工程之九 使用者介面設計
使用者介面是適應人的需要建立的,因此,首先要弄清將要使用這個介面的使用者型別。對每一類使用者,都要列出對一下問題作出考慮 什麼人,目的,特點,成功的關鍵因素,熟練程度以及任務指令碼。本章小結 使用者介面設計的任務分析主要包括使用者特性分析,工作分析,記錄有關系統的概念和術語,確定介面型別。使用者的介...