你了解自己系統中某個特定服務使用的產能是多少,對于可擴展性來說,至關重要。知道這一點,就可以計算距離擴展,你還有多少時間和發展空間。它是規劃余量和基礎設施項目、拆分數據庫/應用以及制定預算的基礎。而確保你計算準確的方法是對所有發布的版本都進行性能測試,這樣可以保證你沒有引人意想不到的負載增加。一個組織在一次發布中達到了所允許的最大負載增量是很常見的。當你在產能規劃方面變得日益成熟時,你就會把新功能帶來的負載看作一種成本,要把它計入成本收益分析。此外,為了確保預計的斷點和性能下降曲線仍舊與以前識別的一樣,壓力測試也是必需的。有可能常規的使用負載沒有變化,但新的代碼路徑或邏輯改變卻會造成整體負載能力的下降。例如,如果一個數據結果的查詢增加了90毫秒,那么在用戶請求的整體響應時間中,它可能不會引起注意,但如果這個服務是和其他服務同步綁定在一起的,如負載構建服務,那么成百上千個90毫秒的延遲累加起來,就會降低該服務的最大產能。
當我們討論變更管理時,我們不只討論了適用于創業公司的輕量級變更識別流程,還討論了積極管理生產環境中的變更的公司可以采用的完整變更管理流程。我們把變更管理定義為由下列組件構成,即變更建議、變更批準、變更日程安排、變更實施和記錄、變更驗證以及變更審查。性能測試和壓力測試強化了變更管理流程,它們提供了實踐性的實現,并且非常重要的是,驗證了變更。如果你沒有證明一個變更會真的按照你預想的那樣影響系統,例如修復了一個bug或者提供了一個新功能,那么你一定不想實施這個變更。作為性能測試和壓力測試的一部分,我們可以在一個可控的環境中驗證預計的變更結果。這個額外的步驟,可以確保變更在生產環境中實施后,它能夠在各種負載下,像它在測試時表現的那樣運行。
在把性能測試和壓力測試關聯到可擴展性時,我們應該考慮的最重要的因素是風險管理。要確保你的系統能夠擴展,風險管理是最重要的流程之一。在風險管理之前要進行風險分析,即嘗試計算各種行動或組件中的風險大小。性能測試和壓力測試是兩種能夠大大降低某次服務變更帶來的風險的方法。例如,如果我們使用的是故障模式和后果分析法,識別出某個功能的故障模式是會增加查詢時間,而建議的補救措施是在真實的負載條件下測試這個功能,就像性能測試一樣,以確定該功能的真正反應。還可以像壓力測試那樣,用極限負載來進行測試,以觀察該功能在超常規條件下的反應。這兩種測試都能提供更多關于該功能的真實性能都是強有力的工具。的信息,從而降低了風險。對于降低或管理每次發布的風險或系統整體的風險來說,這兩種測試有著內在的聯系。
不過,正如我們在討論網站建設壓力測試時所警告的,制造測試負載并不容易,如從余量、變更控制和風險管理這三個方面,我們可以發現系統的可擴展性與采用性能和壓力流程。如果做得不好,會生成錯誤的數據。但這并不意味著就不值得去理解、實施以及(最終)掌握這些測試。
本文地址:http://knowyourextract.com//article/3860.html