持續測試新範式:撥壓測一體化

近日,在 TiD2023 質量競爭力大會上,來自阿里云云原生可觀測團隊的吳垚進行了《持續測試新範式:撥壓測一體化》主題分享,本次分享包含三部分:

  • 業務連續性對穩定性平臺的需求
  • 阿里穩定性平臺的演進及趨勢分析
  • 撥壓測一體化的概念及最佳實踐

01 如何保證業務連續性

在正式開始今天的話題前,我們先來聊一聊業務連續性。隨着信息技術的快速發展和廣泛應用,以互聯網和金融業爲代表的業務創新和正常運轉越來越依賴於信息系統的安全和穩定運行。如何保證信息系統所支持的關鍵業務功能在故障或災難發生後能及時恢復和持續運作,以減少故障或災難可能造成的損失,已成爲技術建設和運行維護必須考慮的重點課題。

不管是行業企業還是政府機構,對災難恢復和業務連續性建設一直都十分重視,出臺多項規範和指定性意見,如金融行業的《信息安全技術信息系統災難恢復規範》(GB/T 20988 – 2007)和《銀行業信息系統災難恢復管理規範》(JR/T0044-2008)等標準、規範。同時,業界有非常多關於業務連續性的模型指導企業落地連續性建設,其中最讓人熟知的就是 6R 模型。6R 模型詳細描述故障從產生到結束的完整生命週期。縱覽模型的整個週期,我們可以看到,整個週期被劃分三道防線從而去保障業務的連續性:事前防控、事中應對、事後重建。業務中斷髮生前,主要進行事前防控的工作,稱爲 Reduce(減少)階段,即風險減少階段。Reduce(減少)階段是組織團隊進行日常風險管理、IT 運維管理、業務連續性管理等管理工作。

業務中斷髮生後,進行事中應對工作,並分爲 Respond(應急響應)階段和 Recover(恢復)&Resume(重啓)階段。Respond(應急響應)階段階段進行人員召集、情況瞭解和通報、損失評估、故障排查等工作;Recover(恢復)階段主要執行恢復預案,包括IT部分的和業務部分以及配套支持職能部分的預案。恢復預案執行的啓動是在宣佈故障或災難後開始。恢復預案執行完畢後事件穩定,進入 Restore(重建)和 Return(返回)階段,業務回到正常狀態。

在不斷總結和覆盤穩定性建設的過程中,我們發現在事前防控、事中應對階段投入越多,全年故障發生總量也會相應降低。因此,我們對穩定性建設進行持續投入的同時,明確兩個核心需求,即兩個防線加固:

第一道防線加固:模擬真實流量做壓測,驗證系統容量;故障演練,驗證系統容災容錯能力。

第二道防線加固:感知中斷點左移,及時發現業務故障;建立開關預案機制,快速降級止損。

首先,是第一道防線的加固,即事前防控儘可能攔截到更多的故障。一方面,在業務上線之前做到充分的功能測試同時,對關鍵核心業務進行模擬真實流量的容量測試,也就是壓力測試。另一方面,在整個系統上線之前,對預生產環境或灰度環境進行故障演練。比如說對基礎設施層、應用層分別注入故障,觀察系統自愈能力是否符合預期。所以,第一道防線加固需要確保在系統上線之前,能夠把這個故障提前收斂掉。

其次,是第二道防線的加固,即縮短事中應對所花費的時間。事中應對的時間分爲兩個:感知時間與 Recover(恢復)時間。針對感知時間,這給監控和穩定性平臺提出了新要求,即讓感知點儘量左移,不要等到客戶已感知到故障並反饋之後,才進行處理。做到能夠提前主動感知到並在探測到故障之後進行快速的止損。同時,在實際生產過程中,隨着各種意想不到的故障越來越多,我們就需要一套完整的預案機制。這其實就是 SRE 體系的建設,通過一套完整的應對機制來應對各種的故障。在阿里實踐過程中,我們設計了開關預案機制,將歷史發生的各種故障都抽象提煉到預案中。對故障處理的過程中,設計能夠動態配置的功能降級開關。在大促時,如果有些業務的容量已達到水位閾值並會影響到穩定性時,可以直接通過動態的開關把對應功能進行降級,保證用戶的整個使用體驗平順。

02 阿里保障業務連續性的最佳實踐

接下來,我們看一下阿里巴巴及阿里雲建設穩定性體系的演進過程,以及如何衡量體系建設的收益。

整個穩定性平臺的演進與技術架構的演進息息相關,主要分爲三個大的階段。

首先,在淘寶剛剛開始時,技術架構主要還是單體應用。隨着業務量的增加,PHP 單體應用被 Java 單體應用所取代。直到 08 年時,Java 單體應用也遇到了業務瓶頸,裏面的業務邏輯非常複雜,開發人員非常多,迭代效率非常低。此後,阿里巴巴開始嘗試分佈式的應用架構拆分並在阿里雲出現後,逐漸將核心電商交易系統遷移上雲,以應對規模愈發龐大的業務。2018 年,阿里巴巴基本所有業務都跑在雲上,並開始嘗試容器化、Serverless 化等雲原生化的探索。

與此同時,隨着技術架構的演進,阿里巴巴圍繞故障容錯、異地多活容災、容量規劃進行穩定性的建設。通過引入調用鏈路分析平臺、故障演練能力、壓測體系等技術手段來提升穩定性,並將 ChaosBlade 等項目進行了開源,並進入 CNCF Sandbox。

與此同時,在支持內外部實施撥壓測的過程中,我們發現測試角色的職責權限在 DevOps 環形圖中向右移。越來越多測試團隊不止負責上線前的功能測試、性能測試,也就是 Test 階段。在功能上線後,還要通過撥測主動監控站點,線上業務可用性,也就是 Monitor 階段。也是基於上述趨勢與需求,雲原生可觀測團隊提出撥壓一體的概念,以幫助運維與測試團隊更好的進行穩定性建設,這對於團隊的收益非常明晰:

  • 提升業務穩定性:壓測驗證系統吞吐量,保證容量穩定性,撥測實時監控線上業務可用性,比業務方提前發現問題,縮小爆炸半徑。
  • 組織提效:測試團隊統一負責撥壓測,梳理業務測試腳本工作不再需要測試、運維團隊做 2 遍;運維團隊專注資源監控,線上業務監控交給測試團隊。
  • 工具提效:撥測壓測共用一個平臺,一套腳本語法,一組測試數據,提升工程師幸福感。

具體到業務收益,如故障數的減少、故障恢復時間縮短、提高無故障時間和失效間隔以及減少了故障處理的人力投入等。

03 撥壓測一體化是什麼

業務流量往往有峯谷效應,高峯期的業務中斷可以通過服務端應用監控和告警及時感知,但在業務流量低谷期,如何感知業務中斷成爲難題。如果參照業務高峯期監控指標配置告警閾值,流量低谷期就不會觸發到告警,無法感知到業務中斷,如果告警閾值配置過低,在業務高峯期又會收到大量誤告警。針對上述問題以及前文提到的右移,撥測、壓測被有機的結合到一起。

(1)什麼是撥測

撥測試一種零侵入、開箱即用、主動式服務的可用性和性能監控工具,它通過部署在全球的監測點,模擬真實用戶的業務行爲,定時對站點發起測試,持續監測業務連續型和網絡性能,並衡量用戶體驗。作爲主動式監控服務,不受業務峯谷期的影響,全週期守護業務連續型。雲撥測的核心能力和應用場景如圖:

(2)什麼是壓測

壓測是容量規劃中不可缺少的工具,相信大家也非常熟悉了,根據驗證的場景不同,壓測又可以分爲以下幾種測試類型:

(3)撥壓測一體化平臺

可以看出,撥測和壓測都是通過模擬真實用戶的行爲,來對系統的容量、可用性、性能做測試,從業務場景和系統架構的角度來看,撥測平臺和壓測平臺有高度的相似性。因此,我們把撥測壓測平臺整合爲撥壓測一體化的平臺,統一管控腳本、調度任務和流量。

壓測前需要準備業務腳本,其實撥測也是需要這麼一套腳本的。當撥測和壓測分爲兩個平臺的時候,同一套業務流程,需要使用兩個平臺的語法,配置兩遍。通過撥壓測一體化腳本,其實可以把這個配置腳本的工作減半,一套腳本,既能發起撥測,也能發起壓測。

04 撥壓測一體最佳實踐

阿里雲網站測速平臺支持對 PING、TCP、DNS、網站測速、HTTP 接口、文件下載等場景進行撥測,並支持對 HTTP 接口進行壓測。您還可以通過阿里雲網站測速平臺發起對比撥測,瞭解兩個網站之間的性能差異。下面介紹如何通過阿里雲網站測速平臺,驗證站點可用性和接口性能。

(1)發起網站測速任務

此處以模擬電信、移動和聯通運營商在全國 34 個省會城市對阿里雲官網訪問爲例,演示如何使用阿里雲網站測速平臺對網站進行測速。

1. 登錄阿里雲網站測速平臺[1]

2. 選擇撥測類型。此處選擇網站測速

3. 單擊撥測類型下方的下拉框,選擇監測點。此處選擇運營商爲電信、移動和聯通,選擇地區爲全國 34 個省會城市

4. 在下拉框右側輸入需要進行撥測的 Web 應用地址。例如:http://www.aliyun.com

5. 單擊立即發起

6. 在撥測結果區域查看網站的可用性、首包用時、首屏用時、完全加載用時等指標,以及各監測點詳細數據列表。

7. 單擊詳細數據列表對應監測點右側的詳情,可以查看對應監測點的詳細性能指標和頁面元素。

性能指標

頁面元素

(2)發起對比撥測

您還可以通過阿里雲網站測速平臺發起對比撥測,瞭解兩個網站之間的性能差異。

此處以模擬電信、移動和聯通運營商在全國 34 個省會城市對阿里雲和其他雲廠商訪問爲例,演示如何使用阿里雲網站測速平臺對比兩個網站的性能。

1. 登錄阿里雲網站測速平臺。

2. 選擇撥測類型。此處選擇網站測速

3. 單擊撥測類型下方的下拉框,選擇監測點。此處選擇運營商爲電信、移動和聯通,選擇地區爲全國 34 個省會城市

4. 單擊對比撥測,然後輸入需要進行對比撥測的 Web 應用地址。例如:http://www.aliyun.com 和 http://www.XXcloud.com

5. 單擊立即發起

6. 在撥測結果區域查看兩個網站的可用性、首包用時、首屏用時、完全加載用時等指標,以及各監測點詳細數據列表。

7. 單擊詳細數據列表對應監測點右側的詳情,可以查看對應監測點的詳細性能指標和頁面元素。

(3)發起性能測試

1. 登錄阿里雲網站測速平臺。

2. 選擇性能壓測。

3. 輸入需要進行壓測的 Web 應用地址。例如:http://www.example.com/api/test

注意:請確保您對此 url 有壓測權限,對於您沒有權限的 URL 進行壓測導致的一切法律後果將由您自行承擔。

4. 查看壓測中接口的性能指標

相關鏈接:

[1] 阿里雲網站測速平臺

https://cesu.pts.aliyun.com/

作者:拂衣

點擊立即免費試用雲產品 開啓雲上實踐之旅!

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章