複製鏈接
請複製以下鏈接發送給好友

應用性能工程

鎖定
應用性能工程是一套特定的方法論,旨在解決應用系統性能受到了日益增加的分佈式移動終端、雲和地域間IT環境所帶來的風險和挑戰。 它包括角色、技能、活動、實踐、工具在應用生命週期中每個階段的交付,確保應用程序將設計、實現和運營可以滿足性能要求。 應用性能工程指出, IT企業或組織需要首先設計應用程序的性能要求,並在整個應用生命週期中進行測試、測量和調整性能。
中文名
應用性能工程
外文名
Application of performance engineering
性    質
方法論
類    型
現代詞

應用性能工程應用性能工程與應用性能管理

應用性能工程不同於應用性能管理,雖然兩者都致力於確保高質量的最終用户體驗。但應用性能管理更趨向於通過監測和報告實際最終用户的體驗情況。而應用性能工程旨在通過利用預生產活動中的技術和最佳實踐,在應用部署發佈或提交給最終用户之前,根據性能預期進行驗證和優化,主動避免代價高昂的性能事故。
在過去的十年中,企業和組織越來越重視確保應用的成功交付,其中應用性能管理與網絡和應用優化也曾引起過廣泛關注,不過由於它們在應用程序開發或部署後才可以使用,所以這兩種方法通常是被動型的手段。隨着應用基礎架構變得更加複雜,企業和組織認為業務流程的支持和保證具有更重要的意義,隨之而然的是基礎設施建設和IT管理的重點必然轉向主動型性能的測試和驗證。應用性能工程就是企業和組織在實施過程中形成的技術、技能和最佳實踐。 [1] 
不過應用性能工程並能替代應用性能管理,兩者都是必須存在並相輔相成的。應用性能工程和應用性能管理都應將應用系統的性能,包括從設計、部署再到管理,貫穿到整個應用生命週期中。 [2]  應用性能工程和應用性能管理為性能信息帶來持續性的反饋環: 應用性能工程以真實世界的應用程序行為創建性能基準和服務水平;應用性能管理利用應用性能工程測試結果來確定哪些監控警報閾值被觸發。

應用性能工程應用性能工程方法論

根據美國國家標準與技術研究所,在應用程序部署後的問題查找和修復耗費了80%的總體擁有成本。但其中有三成的成本是可以通過進行更全面和更有效的軟件測試手段來避免掉的。 [3]  性能測試的價值及投資回報不單要用於避免成本消耗,也需要考慮其產生的商業利益。性能測試可以改善客户滿意度、增加銷售額、提高員工工作效率,並有助於避免後期出現部署發佈成本等問題。 [4] 
當應用性能工程成本效益最大化的情況下,一個有效的策略能夠在應用生命週期的前期部署階段,對應用進行快速修復和性能優化。 [5]  雖然企業或組織在應用性能工程中的做法各不相同的,但其核心都是對真實世界的情況進行模擬和重建,尤其當應用被實際使用或跨網絡進行數據訪問時,在這些情景下,若最終用户通過移動設備訪問會出現帶來更明顯地差別和影響。 [6]  在移動接入後,移動互聯網的底層基礎設施造成的延遲損傷,不僅影響移動用户的體驗,也會影響到所有互聯網用户。因此網絡仿真是應用性能工程的重要組成部分,因為它能夠對網絡環境進行可靠地仿真,建立一個準確並能預測性能狀況的測試環境。
可以將應用性能工程方法論中的最佳實踐和技術分為三個部分:探測、網絡仿真測試、分析與優化。 [7] 

應用性能工程探測

應用性能工程探測層需要探測到實際生產環境下最終用户體驗的技術、服務和方法,包括探測用户地理位置、用户終端設備和應用系統的依賴項,如第三方內容交付網絡和服務、業務流程、服務水平目標與實際網絡情況的探測識別。
瞭解這些實際的使用條件是預測用户體驗並建立和驗證性能水平基準的關鍵。隨着移動互聯網產業的興起,產生了新的網絡類型,如2.5G3G4GLTE基站距離產生的延時也需要探測並在應用性能中評估,這些都對應用性能工程中的探測方法的帶來新的變化因素。探測層提供了不同地點的用户體驗條件。從網絡方面探測網絡性能指標,如可用帶寬延遲抖動數據包丟失。而這些度量指標可以有效地在應用性能工程下階段的網絡仿真和測試中使用。

應用性能工程網絡仿真與測試

傳統的應用系統測試的失敗,主要歸結於缺乏能夠再現影響分佈式用户的真實世界的環境條件。而探測層能夠在測試環境中精確有效地模擬真實應用系統使用場景。通常設備、服務和負載都可以在測試環境中重建,而這些要素之間的網絡連接也必須能夠關聯到真實世界網絡中。
網絡仿真就是用來模擬創建這些真實世界網絡連接的技術和過程。因為在沒有真實世界的條件下,無法得知網絡上的最終用户體驗以及與外部服務進行通信造成的影響,導致產生不可靠的測試結果。
隨着移動設備全球化大規模製造和應用以及雲計算的興起,網絡的作用比以往更受“最後一公里”條件的性能影響,主要由於移動本身就具有動態特性。因此在任何移動或雲部署情況下尤其需要結合網絡仿真。
應用性能工程方法論指出,當測試環境由仿真成真實世界的網絡環境後,需要性能測試貫穿到整個應用生命週期測試過程中,包括單用户、負載可擴展性容量功能測試。通過性能測試為確保遵守業績目標或服務級別目標提供了明確的質量保證測試。需要注意的是,測試並不是一次性活動,因為需求和生產網絡的性能會隨時間變化,尤其在移動網絡中,測試條件可以根據需求和網絡特徵進行修改和重現。

應用性能工程分析與優化

通過探測和網絡仿真建立出的測試條件,可以使測試分析出的數據更準確地反映和預測出應用系統在真實世界中的表現。在應用性能工程框架中,性能分析可以使組織預測和驗證性能水平、確定是否符合服務級別目標SLO或服務級別協議SLA、找出性能瓶頸的根本原因並進行診斷、修復和優化。
功能和非功能性的績效目標測試完成後,就可以對應用系統的處理能力進行測量和關鍵指標分析。這些信息需要按照地理位置分類,使測試人員和性能工程師可以根據每種用户羣和網絡環境條件,找出表現不佳的業務交易和性能問題根本原因。此外還需要進一步的細分測試結果,例如在分析移動應用測試場景中的每個設備類型的測試結果可能需要了解最終用户體驗的設備或移動操作系統差異。
隔離和修復性能問題需要在應用性能工程增加驗證步驟。修復的結果必須在精確相同的條件下重新測試和驗證。而網絡仿真技術能夠使測試環境仿真出相同的網絡特性,所以測試結果才能可靠地顯示出性能差異或是否出現新的問題。
除了性能修復,也可以在性能問題並不明顯時進行性能優化來提高應用性能。通過研究開發和部署最佳實踐,包括使用第三方的產品和服務,可以實現性能進一步的提高。例如,網絡加速器應用交付控制器可提供潛在的性能優勢。通過評估這些類型的解決方案,並準確地在相同條件下測試這些組件對應用性能的影響,確定可以對哪些產品提供最大的性能收益,產生的代價是什麼。通過分析性能增益來保證投入達到最佳分配。

應用性能工程應用性能工程的應用

越來越多的企業正在採用積極主動的性能保證措施,建立卓越性能中心,從而使性能成為應用的關鍵成功因素。在應用發佈前,不僅需要通過常用的負載和壓力測試手段測試應用系統的功能和容量,隨着性能要求不斷增加,也需要進行測試性能和網絡延遲對應用系統響應時間的影響。 [8]  應用性能工程方法論使企業把應用性能當成標準需求,並對性能測試和最終用户體驗需求在企業範圍內建立政策規範。
參考資料
  • 1.    "The Mandate for Application Performance Engineering," Ashton, Metzler & Associates.
  • 2.    The 2011 Application & Service Delivery Handbook, page 82.
  • 3.    "The Economic Impacts of Inadequate Infrastructure for Software Testing," National Institute of Standards and Technology.
  • 4.    Automated App Performance Testing ROI: More Than Dollars and Sense, Info-Tech Research Group.
  • 5.    "Code Complete," Steve McConnell. Microsoft Press. Page 960.
  • 6.    "Testing and Optimizing Mobile Application Performance," Software Test Professionals Online Summit, June 6, 2012.
  • 7.    The 2011 Application & Service Delivery Handbook, pp. 10, 81, 82.
  • 8.    "How to Improve Application Performance and Reduce Latency," CIO.com. Sept. 10, 2012.