APM最佳實踐:Web 2.0和AJAX四大優(yōu)化戰(zhàn)略
隨著Web應(yīng)用程序速度與效率快速增長,網(wǎng)站已經(jīng)成為企業(yè)與其客戶進行交互的第一途徑——某些情況下甚至成為惟一途徑。在線電子商務(wù)網(wǎng)站的爆炸式發(fā)展就是這種情況的集中體現(xiàn)。
根據(jù)Forrester研究公司最新發(fā)布的報告,美國國內(nèi)在線零售業(yè)務(wù)總銷量至2017年將達到3700億美元——相當于在未來幾年內(nèi)美國在線零售業(yè)年度復(fù)合增長率都將保持10%以上。為了保持自身競爭力,經(jīng)營實體店鋪的零售商們被迫將其關(guān)注重點轉(zhuǎn)向在線銷售渠道,從而避免成為Amazon.com及其它電子商務(wù)網(wǎng)站的免費展示設(shè)施。當然,這股風潮的涉及范圍遠不止于零售行業(yè)。
網(wǎng)站能夠以成本更低的解決方案為客戶帶來產(chǎn)品與服務(wù),此類機制與在物理位置提供現(xiàn)場服務(wù)的傳統(tǒng)機制相比顯然更具成本效益。
IT消費化趨勢同樣對網(wǎng)絡(luò)經(jīng)濟體系的發(fā)展起到了推波助瀾的作用。消費者希望能夠在任意所處位置、通過任意設(shè)備訪問更多服務(wù)。根據(jù)Flurry Analytics公司的調(diào)查,智能設(shè)備的普及速度比上世紀八十年代的PC革命快了十倍還不止,即使是上世紀九十年代的互聯(lián)網(wǎng)風潮與近年才出現(xiàn)的社交網(wǎng)絡(luò)覆蓋在速度方面也分別只達到其二分之一與三分之一。
有鑒于此,在線體驗——以及對網(wǎng)站在速度與功能多樣性所提出的要求——已經(jīng)成為關(guān)鍵甚至是核心。一系列趨勢性特征已經(jīng)在Web應(yīng)用程序的設(shè)計當中顯現(xiàn)出來,通常借由Web 2.0技術(shù)實現(xiàn)、例如JavaScript與AJAX,其中包括:
降低頁面加載數(shù)量。很多電子商務(wù)網(wǎng)站會通過減少用戶瀏覽與結(jié)賬所需要的頁面數(shù)量來簡化整個購買流程。舉例來說,消費者在填寫計算機配置單的過程中,完全可以在無需重新加載整個頁面的前提下變更自己的選項、從而快速搭配出能夠滿足需求的組裝機方案。
異步頁面加載機制。通常情況下,我們所使用的大多是HTML頁面,這種方式能夠大大提高網(wǎng)頁的性能表現(xiàn)。具體來說,系統(tǒng)會首先加載體積較為小巧的HTML代碼,而后以異步方式逐步加載其它體積更龐大的元素。舉個例子,主頁面會快速加載完成、全部信息與功能都以異步方式率先交付給用戶。在此之后,宣傳廣告以及內(nèi)容區(qū)信息(通常在操作后才需要顯示)才逐步載入完成,并異步顯示在我們眼前。
純客戶端處理。現(xiàn)在對頁面中各事件的渲染已經(jīng)可以在完全不必與后端服務(wù)器產(chǎn)生交互的前提下完成。在這種情況下,對應(yīng)內(nèi)容由Web服務(wù)器作為頁面的組成部分加以交付,但并不會直接予以顯示——除非大家在操作中觸發(fā)了相應(yīng)事件。舉例為說,當用戶將鼠標懸停在某個下拉菜單上時,對應(yīng)選項才會顯示出來。
內(nèi)容分發(fā)網(wǎng)絡(luò)(簡稱CDN)。通常情況下,來自瀏覽器的HTTP請求會由CDN或者其它緩存技術(shù)負責填寫,這就避免了時刻觸及后端Web服務(wù)器所帶來的性能折扣。這種處理方式旨在為圖片等靜態(tài)內(nèi)容提供更為出色的訪問速度表現(xiàn)。舉例來說,Akamai(網(wǎng)絡(luò)存取加速服務(wù))會在Akamai邊緣處對全部頁面進行緩存處理。
調(diào)用第三方服務(wù)供應(yīng)商的解決方案。另一類常見情況是,由瀏覽器生成的調(diào)用會直接指向第三方服務(wù)供應(yīng)商,因此根本不會觸及到相應(yīng)Web服務(wù)器。此類實例包括嵌入式社交媒體插件以及用于提供位置信息的谷歌地圖工具。
單頁面應(yīng)用程序。這是一類新近興起的異步式交互機制,其中整套應(yīng)用程序都被容納在單一頁面內(nèi)部、而且其使用體驗與桌面應(yīng)用非常相似。該頁面的加載過程由一系列異步式調(diào)用組成,而且完全由用戶的操作實現(xiàn)觸發(fā)。此類解決方案徹底擺脫了根據(jù)所需內(nèi)容向服務(wù)器發(fā)送單一調(diào)用的傳統(tǒng)機制,從而顯著提高了性能表現(xiàn)并降低網(wǎng)絡(luò)負載。Gmail就是此類方案中的杰出代表。
盡管優(yōu)勢明顯,但Web 2.0卻也給APM領(lǐng)域帶來了不少挑戰(zhàn)。在Web 2.0誕生之前,大家只需要對HTTP頁面請求及其相關(guān)響應(yīng)加以監(jiān)控即可輕松追蹤用戶活動。在那個時候,Web服務(wù)器會將返回內(nèi)容以完整頁面的形式響應(yīng)到用戶瀏覽器當中。有鑒于此,監(jiān)控機制只需要關(guān)注高級頁面中的獨立請求,也就是說整體與單一請求性能表現(xiàn)都可在HTTP請求層面實現(xiàn)監(jiān)控。由于所有請求都會被發(fā)回到Web服務(wù)器,我們只需通過Web服務(wù)器層中的代理機制或者對通過線纜傳輸?shù)臄?shù)據(jù)包進行采樣即可有效完成監(jiān)控任務(wù)。這也是APM解決方案早期曾經(jīng)采用過的常見處理方式。
在Web 2.0時代,各類瀏覽器都擁有了在單一網(wǎng)頁內(nèi)部執(zhí)行嵌入代碼的能力,這就消除了代碼執(zhí)行需要調(diào)用后端應(yīng)用程序服務(wù)器的必要需求。JavaScript是目前在此類應(yīng)用領(lǐng)域中普及程度最高的語言選項,憑借著自身在速度、效率以及降低網(wǎng)絡(luò)負載方面的優(yōu)勢(通過運行在終端用戶本地硬件之上實現(xiàn))、它甚至在全部主流編程語言中也保持著旺盛的人氣。JavaScript的適用范圍極廣,其中包括處理頁面動畫元素、播放音頻與視頻以及驗證Web輸入數(shù)據(jù)等等。
AJAX(即異步式JavaScript與XML)編程趨勢的普及則進一步拓展了瀏覽器在處理異步式請求方面的能力,進而使其能夠僅對頁面中的特定部分加以更新、而不再需要重新加載整套頁面。舉例來說,用戶在處理結(jié)賬頁面以及運費請求時,他或者她完全可以在與專家溝通后直接查看價格變化而無需重新載入整套頁面。
AJAX與JavaScript強大無比,但也給利用傳統(tǒng)方法監(jiān)控Web應(yīng)用的管理人員帶來了一系列挑戰(zhàn)。
下面來看其中一些與上述方法相關(guān)的主要盲點,包括:代碼級分析缺乏,傳統(tǒng)角度講APM解決方案專注于通過在數(shù)據(jù)中心服務(wù)器內(nèi)安裝代理機制以實現(xiàn)對代碼執(zhí)行情況的監(jiān)控。但現(xiàn)在這類方案只能反響一部分實際情況。
在現(xiàn)代Web應(yīng)用程序當中,約有八成的代碼執(zhí)行在瀏覽器內(nèi)部完成。應(yīng)用程序服務(wù)器內(nèi)的字節(jié)碼也存在類似的情況,換言之,必須將測試工具轉(zhuǎn)向瀏覽器端才能有效監(jiān)控JavaScript執(zhí)行與錯誤狀態(tài)。
不正確的頁面響應(yīng)時間。時至今日,單純監(jiān)控網(wǎng)絡(luò)流量本身已經(jīng)無法準確衡量頁面的實際響應(yīng)時間。利用這種方式,只有每一個獨立對象(或者點擊)所引發(fā)的HTTP請求與響應(yīng)才會返回到Web服務(wù)器(或者原點)處、并接受時間檢查。然而在Web 2.0時代,很多請求根本不會返回到原點,而更多地被路由至CDN或者利用緩存技術(shù)被填充在其它環(huán)境當中。
我們同樣無法利用網(wǎng)絡(luò)采樣方式處理指向第三方Web服務(wù)(例如谷歌地圖工具)的調(diào)用操作。為了對廣告、地圖、購物車、網(wǎng)絡(luò)分析、社交媒體模塊、CDN與DNS響應(yīng)時間等進行全面調(diào)查,必須通過身處瀏覽器內(nèi)部的監(jiān)控方案對頁面載入時間加以審查才有可能實現(xiàn)。
背景信息不足
在理想條件下,網(wǎng)絡(luò)流量監(jiān)控能夠?qū)⒑蠖苏{(diào)用與將其發(fā)出的頁面關(guān)聯(lián)起來。對于傳統(tǒng)應(yīng)用程序而言,由此帶來的背景信息已經(jīng)足以用于進行故障排查,但在AJAX領(lǐng)域卻無法順利起效。在AJAX環(huán)境下,單一頁面發(fā)出的調(diào)用可能成百上千。而更具挑戰(zhàn)的是,大量JavaScript事件(例如鼠標點擊菜單選項)根本不會創(chuàng)建出指向Web服務(wù)器的調(diào)用,這就讓此類純?yōu)g覽器事件消失在了網(wǎng)絡(luò)采樣方案與Web服務(wù)器監(jiān)控機制的視野當中。
隨著網(wǎng)站自身對于動態(tài)內(nèi)容及第三方服務(wù)依賴性的持續(xù)提升,終端用戶的實際使用體驗往往只能依靠瀏覽器自身加以衡量。
四種方式讓你的APM戰(zhàn)略步入現(xiàn)代化軌道
隨著一系列新興技術(shù)成果的出現(xiàn),Web 2.0在帶來挑戰(zhàn)的同時也蘊藏著巨大機遇。盡管傳統(tǒng)方法已經(jīng)不能單憑自身力量完成任務(wù),但將令人振奮的新興檢測技術(shù)作為補充、進而與原有方案相結(jié)合則能夠提供遠超以往水平的洞察能力。下面我們就來介紹四種足以應(yīng)對Web 2.0新時期下新型難題的APM戰(zhàn)略升級思路。
1. 捕捉功能性問題并建立背景信息
在處理面向外部的應(yīng)用程序時,性能表現(xiàn)并不是惟一需要關(guān)注的重點。應(yīng)用程序的功能性問題在出現(xiàn)頻率上要遠高于性能問題,這同時也是導(dǎo)致用戶放棄甚至轉(zhuǎn)而使用其它站點的首要原因。由于Web應(yīng)用程序通常扮演著企業(yè)與其客戶進行交互的惟一渠道,因此故障排查人員往往不太可能親自與用戶進行溝通以了解到底是哪些環(huán)節(jié)出了問題。
試想一下,假設(shè)由于應(yīng)用程序的設(shè)計存在缺陷、其在處理開頭為零的郵政編碼信息時出現(xiàn)了錯誤。
在這種情況下,采用能夠捕捉瀏覽器事件的解決方案,例如鼠標點擊以及鍵盤輸入數(shù)據(jù),顯然能夠重現(xiàn)用戶的會話活動、從而幫助我們主動識別并解決這些問題。
2. 捕捉JavaScript錯誤并對其進行故障排查
考慮這樣的場景,如果某家企業(yè)希望推出一項全新AJAX功能以實現(xiàn)網(wǎng)上下單操作、但卻不斷返回JavaScript錯誤,結(jié)果會怎樣。這一切在Web日志當中可能根本沒有體現(xiàn),而且所有響應(yīng)時間看起來都極為正常。結(jié)果呢,故障排查人員甚至根本感受不到問題的存在——直到客戶們的抱怨之聲鋪天蓋地而來。在這種情況下,糊涂不再是福、而意味著潛在營收的大量外流。
我們的APM解決方案應(yīng)該能夠檢測JavaScript錯誤并就此發(fā)出警告,從而敦促技術(shù)人員盡快著手加以處理。
3.關(guān)注來自頁面加載時間的細節(jié)信息
為了將廣告、地圖、購物車、網(wǎng)絡(luò)分析、社交媒體模塊、CDN與DNS響應(yīng)時間等因素確切納入監(jiān)控范疇,我們必須在瀏覽器內(nèi)部對頁面加載時間進行高度關(guān)注。幸運的是,現(xiàn)在新一代IE、火狐以及Chrome瀏覽器都已經(jīng)提供HTML 5導(dǎo)航定時功能。它能夠?qū)⑼暾捻撁婕虞d時長拆分成DNS查找、重新定向、SSL握手、處理以及緩存訪問時長等具體項目。務(wù)必選擇一套具備此類功能的APM解決方案。
4. 將問題隔離在特定頁面元素當中
目前瀏覽器所能捕捉的信息還僅限于完整頁面加載內(nèi)容,也就是說無法針對個別頁面提供定時信息,例如載入圖像或者圖片、CSS樣式表、指向Web服務(wù)器或者REST API的后端調(diào)用所用去的時間。具備網(wǎng)頁分析功能的網(wǎng)絡(luò)采樣工具則可以為指向單獨頁面對象的HTTP請求與響應(yīng)計時,從而幫助故障排查人員將問題固定在特定頁面元素身上。在選擇網(wǎng)絡(luò)監(jiān)控解決方案時,請大家務(wù)必確保自己采購的產(chǎn)品具備這項功能。
APM對Web 2.0應(yīng)用程序?qū)嵤┍O(jiān)控原理
好的APM產(chǎn)品要以客戶為中心、且能夠與APM相協(xié)作的解決方案,能夠在數(shù)據(jù)之外為IT以及業(yè)務(wù)部門帶來更為確切的答案。除此之外,大家可以選擇將其與數(shù)據(jù)庫、虛擬化或者網(wǎng)絡(luò)性能監(jiān)控機制結(jié)合起來,從而進一步發(fā)揮APM在整體企業(yè)監(jiān)控戰(zhàn)略當中的全能實力。
結(jié)合傳統(tǒng)與現(xiàn)代解決方案中的諸多優(yōu)勢要素,APM產(chǎn)品應(yīng)該具備如下卓越特性:
- 能夠捕捉每位用戶的每一次點擊并重現(xiàn)Web用戶的實際活動,從而真正復(fù)制用戶使用體驗、從而實現(xiàn)背景信息取證并完成故障排查。
- 利用強大的應(yīng)用程序運行時架構(gòu)自動發(fā)現(xiàn)機制將我們的應(yīng)用程序與基礎(chǔ)設(shè)施關(guān)聯(lián)性加以映射。
- 確保精確的問題區(qū)域識別、詳盡的響應(yīng)時間分解以及完整的傳輸路徑可視化呈現(xiàn)——從應(yīng)用程序?qū)拥浇K端用戶,整個流程盡在掌握。
- 將所有用戶以及追溯信息容納在一套以“事務(wù)”為核心的通用型框架當中——從而保證數(shù)據(jù)與工作流程以無縫化方式進行協(xié)作,并提供獨一無二的可視化顯示效果。
- 彌合虛擬化與共享資源沖突給Web應(yīng)用程序帶來的影響,保證數(shù)據(jù)與關(guān)系在所有事務(wù)維度中的和諧統(tǒng)一——從瀏覽器到數(shù)據(jù)庫、從代碼層到虛擬機管理程序。
- 利用細致的根本原因分析機制,在Java與.NET應(yīng)用程序服務(wù)器內(nèi)部揪出代碼層瓶頸。
- 追蹤每項請求的調(diào)用堆棧并捕捉相關(guān)支持證據(jù),包括內(nèi)存(堆)統(tǒng)計、方法參數(shù)以及SQL綁定變量等。
- 利用豐富的監(jiān)控數(shù)據(jù)與高可擴展性分析機制提供開箱即用的分析與可視化處理方案。
總結(jié)
以JavaScript與AJAX為代表的Web 2.0技術(shù)體系為Web應(yīng)用程序帶來了優(yōu)勢顯著的處理速度提升,同時也讓性能表現(xiàn)與執(zhí)行效率邁上新的臺階。希望APM產(chǎn)品能夠為開發(fā)者給予幫助。