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