正如開爾文勛爵所言:“衡量的目的在于了解。”不過這項簡單的格言實現(xiàn)起來卻難度極高。其真實含義分為以下兩點。
第一層含義非常明確:我們無法在不加以衡量的情況下,對事物加以認知。舉例來說,如果大家希望快速了解應(yīng)用程序的運作情況,那么必須選取幾項關(guān)鍵并加以追蹤。“良好的性能”意味著功能可在短時間內(nèi)完成,而糟糕的性能則代表著功能要耗時極久才能實現(xiàn)。
另一項重要指標(biāo)在于,應(yīng)用本身是否擁有“理想的性能”。例如,性能是否在不同負載條件下保持穩(wěn)定,或者在應(yīng)用的不同組件之間保持穩(wěn)定?
而第二層含義則相對隱晦,但卻同樣重要:通過定義衡量標(biāo)準(zhǔn),我們實際上也是在定義自身的知識界線。在應(yīng)用環(huán)境當(dāng)中,這可能并不是什么大問題; 但云環(huán)境則提出了完全不同的挑戰(zhàn)。由于我們無法對環(huán)境加以全面控制,因此不能衡量一切將變得非??膳隆?/p>
當(dāng)應(yīng)用被遷移至云端
有鑒于此,當(dāng)將服務(wù)遷移至云端時,大家必須切實利用衡量手段掌握用戶的使用體驗。如果做不到這一點,或者同時只能關(guān)注同一項指標(biāo),那么我們將很難做出正確的判斷。
例如,在傳統(tǒng)Web應(yīng)用環(huán)境當(dāng)中,我們往往會將與頁面加載或者渲染速度指標(biāo)視為其它組件的性能參照。例如,緩慢的頁面加載速度可能意味著數(shù)據(jù)庫后端存在故障或者承受的強度過大。
不過這種思考方式明顯有著自己的局限:其假定應(yīng)用之間的連接并不存在問題。在內(nèi)部運作的基礎(chǔ)設(shè)施當(dāng)中,我們可以以此為前提進行排查——這種作法非常合理。但在云環(huán)境中,問題顯然沒那么單純。
云改變了一切
在云環(huán)境內(nèi),這種假設(shè)不再成立。我們的云服務(wù)供應(yīng)商會隨時變更當(dāng)前環(huán)境,且整個重新配置過程完全超出大家的控制范圍。服務(wù)本身就是我們付費所應(yīng)得的范疇,再無其它!而如果想像內(nèi)部基礎(chǔ)設(shè)施那么租賃完整的云資源,那么成本則會超出承受能力。
事實上,我們之所以將負載交由云環(huán)境打理,是因為其能夠提供傳統(tǒng)數(shù)據(jù)中心所無法企及的容量上限。這意味著底層基礎(chǔ)設(shè)施——包括服務(wù)運行所在的網(wǎng)絡(luò)、硬件乃至環(huán)境——始終作為變量存在。
這當(dāng)然不是壞事,但問題在于衡量眾多獨立變量會帶來巨大挑戰(zhàn)。幸運的是,云環(huán)境本身提供了一種能夠切實完成管理任務(wù)的辦法:
獲取數(shù)據(jù):大多數(shù)云服務(wù)提供單個指標(biāo)或者查詢機制,即使您所選擇的供應(yīng)商不提供相關(guān)方案,也可求助于其它廠商。每秒總線信息、存儲操作、計算資源使用量等等都能夠成為把握底層服務(wù)動態(tài)的線索。
處理數(shù)據(jù):
一部分云服務(wù)會聚合數(shù)據(jù)并以易于使用的方式集中提供。大家可以借此隨時檢查數(shù)據(jù)流量,這也應(yīng)當(dāng)成為任何形式的云系統(tǒng)的必要配套方案。
數(shù)據(jù)可視化:
大多數(shù)數(shù)據(jù)聚合服務(wù)都提供多種可視化工具。運維人員可隨后借此討論并向管理層解釋當(dāng)前運行狀況,并確保一切處于“基準(zhǔn)”范圍內(nèi)。只有把握住這種“正常”狀態(tài),異常問題才能被及時發(fā)現(xiàn)。
確保應(yīng)用生成有價值數(shù)據(jù):
應(yīng)用日志通常分為兩種類型:全面調(diào)試與停止發(fā)報。確保應(yīng)用能夠生成有價值且具備可操作性的指標(biāo)。
不要僅依賴單一來源:
如果大家只使用當(dāng)前云服務(wù)廠商提供的衡量指標(biāo),那么恐怕無法保證審計合格。正如良好的財務(wù)控制與審計是保障業(yè)務(wù)成功的關(guān)鍵,我們在技術(shù)層面需要采取同樣的心態(tài)。事實上,大家不妨以懷疑的態(tài)度審視一切,并在必要時求助于第三方廠商。
當(dāng)然,云服務(wù)供應(yīng)商本身往往是最先發(fā)現(xiàn)問題的一方。遇到這種情況,我們應(yīng)當(dāng)與外部監(jiān)控廠商交流問題,從而建立更可靠、更及時的衡量體系。