應用發(fā)布前保障性能的十八種方式(一)
被文藝青年奉為“愛情圣經”的《愛在三部曲》第一部為我們描述了這樣一個美好的故事:兩個青年男女邂逅一見鐘情,度過了一個美妙的晚上,而此次約會將會在日出之間結束…這是不是像極了應用開發(fā)?一次程序員與應用之間的邂逅。然而我們可以確定是,確保應用性能絕不僅僅是程序員自己或者IT運維團隊的工作。在應用正式推出之前,開發(fā)、DevOps包括IT運維部門應當通力協作,預防應用在實際運行過程中出現意料之外的性能問題。
不過,原本獨立的各支隊伍該如何配合以實現這一共同目標?他們又該如何預防,甚至在應用開發(fā)完成之前就識別出其中所包含的性能問題?面對這些問題,國內外多位應用性能管理(簡稱APM)以及相關市場的專業(yè)人士,就實際推出前確保應用性能表現這一議題給出了自己的推薦方案,其中包括處理舉措、實施方案以及值得認真考量的工具選項等等。
由于此類建議性清單種類很多,很多推薦方式之間可能存在交集、或者單一舉措與多項條目相符。不過,清單本身的目標并非對此類建議進行定義與歸類,而是幫助大家從眾多應用性能問題的專業(yè)人士口中獲得具備泛用性以及實際價值的解決思路。
清單當中的多數建議涉及各類工具與流程,在考量這些選項之前,Performance Tuning Corporation首席戰(zhàn)略官Mark Swanholm推薦大家已這樣的心態(tài)去閱讀:“要在應用正式推出之前保障理想的性能,最理想的“工具”永遠是我們自己開放而認真的心態(tài)。”除非大家能夠選擇了一套科學且以實證為基礎的、涵蓋整套堆棧的方案,否則當今環(huán)境的復雜程度必將遠超大家的想象,同時帶來預料之外的各類問題。專業(yè)人士能夠提供出色的數據結構、高效的Web服務以及經過細心調試的服務器,但我們仍然需要運用自己的思維制定規(guī)劃,從而將這一切有利因素整合起來以構成一款完整的高性能應用。”
1、應用性能管理(簡稱APM)
APM能夠幫助IT運維從高層次轉向低層次,輕松實現優(yōu)秀應用性能表現,從而提高客戶滿意度以及效率:軟件正是商業(yè)成功的核心所在,這意味著更快的應用發(fā)布周期成為每一家企業(yè)必須達成的目標。因此,測試、預生產以及生產環(huán)境之間的界線開始變得越來越模糊。在此基礎之上,APM解決方案應當盡早介入軟件開發(fā)生命周期,確保我們擁有極致的應用性能表現。諸如代碼層分析以及最終用戶體驗監(jiān)控這類功能應當被納入到測試環(huán)境之中,從而確保性能問題影響到真實用戶之前就被發(fā)現。
--John Rakowski
AppDynamics公司產品營銷戰(zhàn)略師
前Forrester研究公司基礎設施與運維分析師
APM是對軟件應用的性能和可用性進行監(jiān)控和管理,致力于發(fā)現和定位性能瓶頸和故障,保證應用達到預期服務水平。而整個應用生命周期,從需求開始到研發(fā)到測試再到運營都需要監(jiān)測。復雜的應用交付鏈下傳統IT運維收到了很大的挑戰(zhàn),而APM自上而下的監(jiān)控方式為用戶、業(yè)務、代碼、服務以及用戶體驗提供了保障。只要在可能形成性能瓶頸代碼或者可能誘發(fā)其他性能問題的位置嵌入盡量簡潔的代碼就能實現APM。
--Wood
聽云 CTO
2、APM + 統一化監(jiān)控
保障應用性能表現是一項永無休止的任務,這其中將涉及多種產品、功能以及最佳實踐。同時利用APM工具以及統一化監(jiān)控工具為預生產與生產流程帶入監(jiān)控機制。APM工具會追蹤/調整我們的應用與應用服務器活動,且通常能夠通過事務合并掌握用戶體驗效果,開發(fā)團隊與DevOps團隊的人員非常需要這類幫助。統一化監(jiān)控工具則會監(jiān)控負責支持任務的基礎設施,從而給IT運維團隊幫上大忙。當然,DevOps也樂于擁有這種基礎設施監(jiān)控能力,因為這有助于提升IT運維團隊的工作效率,反過來幫助DevOps保障應用交付。
--Scott Hollis
Zenoss公司產品市場營銷主管
3、Devops
關鍵在于讓你的DevOps團隊參與進來。實際上開發(fā)與運維對于APM的審視角度略有不同,主要因為APM這一概念旨在利用多種互補方案解決與應用性能相關的問題。了解開發(fā)(即Dev)與運維(即Ops)所提出的不同要求是確保應用性能水平的重要前提。一旦明確兩支隊伍的具體要求,我們就能夠在應用正式推出之前的短時間內構建起一套應用性能基準。通過這一基準,我們能夠更為透徹地理解應用,同時掌握如何收集性能指標再簡潔的加以利用。
--Larry Dragich
APM戰(zhàn)略集團創(chuàng)始人
兼Auto Club Group企業(yè)應用服務主管
即使在應用生命周期早期,運維也應當成為決策考量的重要組成部分。作為規(guī)劃會議的參與者,保證其能夠在與積壓工作以及下一階段開發(fā)目標相關的開發(fā)討論當中發(fā)揮影響力。運維團隊關注的內容需要與用戶背景或者運維背景相結合,并作為重要信息反饋給開發(fā)團隊。總的來說,DevOps代表的是一種企業(yè)文化的轉變,即建立起以信任、開放與協作為核心的新型文化體系。
--Cameron Haight
Gartner公司IT運營與研究副總裁
目前企業(yè)的運維手段很難觸及深入到業(yè)務級的應用性能管理。這并非是技術上的問題,而是由于傳統的Web性能監(jiān)控關注的焦點往往偏向后端,比如服務器本身的CPU、內存等,這種監(jiān)控方式較標準化、規(guī)范化,獲得的數據也更方便、直觀。而當涉及到應用層面的性能監(jiān)控時,需要將響應時間、數據庫調用、緩存、SOA、RPC、External API等,都作為監(jiān)控的重要目標。在應用系統較復雜的情況下,還要涉及Web Service的調用。這使運維人員非常苦惱,因為他們很難再找到一個標準化的方式去執(zhí)行。
聽云APM通過嵌碼的方式深入應用代碼中,通過調用的監(jiān)測方式去監(jiān)測業(yè)務代碼的調用時間,出錯與異常,并及時上報監(jiān)測到的指標。通過對Web應用的性能和可用性進行監(jiān)控和管理,發(fā)現和定位性能瓶頸和故障,并將其做成一種SaaS服務。依賴聽云的SaaS平臺,運維人員就可以在應用上線后,根據業(yè)務需求完成監(jiān)控動作,而不再像之前只能依賴于研發(fā)才能實現某種功能,運維不再像原來那樣,必須依賴于研發(fā)才能實現它的監(jiān)控,這使研發(fā)、運維都能將更多的精力投入到對業(yè)務的更新迭代中去,加速了企業(yè)DevOps實現的進程。
--廖雄杰
聽云技術副總裁
4、移動APM
開發(fā)人員應當確保自己的清單當中包含一套企業(yè)級移動APM解決方案,能夠報告移動應用性能水平給實際業(yè)務帶來的影響。除了目標URL與應用操作響應速度等最基本的消費者吸引力因素之外,我們還應將更為復雜的商業(yè)活動條件納入其中。
--Mike Marks
Aternity公司首席產品經理
5、最終用戶體驗
性能優(yōu)化工作從始至終都應當從最終用戶角度出發(fā)。IT與生產團隊需要以每一個數字化觸點為基準掌握用戶體驗——包括Web、移動Web以及移動應用。當然,在正式發(fā)布之前進行負載測試同樣非常重要,不過單純以內部方式進行應用性能審查遠遠不夠。為了確保應用具備與預期相符的性能水平,我們需要一套綜合性解決方案,從而將開發(fā)、測試與運維團隊統一起來,并對每一項事務進行合并與真實用戶體驗監(jiān)控(單憑抽樣并不足以說明問題)。
只有這樣,我們才能體會用戶實際使用的真實感受。這類統一化方案不僅能夠在問題出現之前即將其解決,同時也能確保理想的上市時間并立即找到任何問題的根源與解決辦法。另外,它還能夠加快新功能與新特性的迭代速度,同時確保性能始終保持在可行區(qū)間內的最佳狀態(tài)。
--David Jones
Dynatrace公司技術專員主管
開發(fā)、IT運維以及DevOps團隊的最終目標都是為了服務客戶。這意味著他們需要將大部分精力用于關注最終用戶體驗。性能監(jiān)控工具體系應當成為貫穿整個軟件開發(fā)生命周期的重要組成部分。如果我們能夠在開發(fā)或者分段過程中發(fā)現問題并加以修復,那么這干預成本就能保持在最低水平。不過最理想也最為可行辦法仍然是在開發(fā)周期當中不斷向生產環(huán)境推出小型增量式更新,并對各個發(fā)布版本進行廣泛的全棧式監(jiān)控。
--Dan Kuebrich
AppNeta公司應用性能產品主管
注:本文系聽云工程師編譯整理