做好移動APP質(zhì)量保障工作你需要知道哪些?
原創(chuàng)本文是WOT2016互聯(lián)網(wǎng)運維與開發(fā)者大會的現(xiàn)場干貨,新一屆主題為WOT2016企業(yè)安全技術(shù)峰會將在2016年6月24日-25日于北京珠三角JW萬豪酒店隆重召開!
我叫楊強,在阿里巴巴負責(zé)的事情比較雜,從線下研發(fā)管理、發(fā)布流程,到質(zhì)量保障,到線上客戶端的監(jiān)控運維等等方向。今天想向大家分享的是我們在手機淘寶端上所做的一些運維以及優(yōu)化的相關(guān)工作。
從2012年加入手機淘寶以后,我發(fā)現(xiàn)APP實在是比PC端有太多的痛苦,***是閃退,閃退就導(dǎo)致手淘不可用。第二個,響應(yīng)時間太慢,有時能長達五六秒鐘,這對用戶來說是很不可接受的一個時間。還有就是耗電和耗流量的問題。還有一些是和PC上類似的問題,比如頁面加載異?;蛘咭恍┌踩系膯栴}。
面臨這么多困難要解決,解決的思路肯定是發(fā)現(xiàn),發(fā)現(xiàn)然后解決,然后再看問題有沒有存在。說起來比較容易,但是端上還是有很多的復(fù)雜性。
首先是機型復(fù)雜。據(jù)不完全統(tǒng)計,線上市面上存在的的機型已經(jīng)超過兩萬種了。如何保證我們的APP在這兩萬種機型上都是可用的一個狀態(tài),對于我們來說是一個非常困難的事情。我們曾經(jīng)接到用戶的反饋,說手機淘寶下單不能用,我們在線下試,什么機型都試過來了,線下都可以用,為什么他不能用呢?***客戶拿出來一款黑莓的手機,說黑莓上也可以兼容安卓的APK來使用。
再一個問題是網(wǎng)絡(luò)。各位移動開發(fā)者可能對網(wǎng)絡(luò)這個問題都感到比較頭大,因為這個網(wǎng)絡(luò)***個是移動網(wǎng)絡(luò),第二個用戶使用的環(huán)境非常多,他在高鐵上,在地下室或者在比較偏遠的山區(qū)等等地方,我們都要保證這些場景下軟件的高可用性。
有了以上兩種特點以后,再加上一些其它的原因就產(chǎn)生了另外一個問題,小概率問題特別多。因為我們手淘可能是很多億的用戶,但是有問題的東西,有時候有些問題只有幾百個用戶有或者十個用戶有。發(fā)現(xiàn)問題了,就要重現(xiàn)與定位,這個手段不像服務(wù)端,在服務(wù)器上Bug一下,看一下服務(wù)器的日志就可以了,還需要了解手機當時所處的環(huán)境。
再有一個問題是修復(fù)手段,客戶端是通過應(yīng)用市場發(fā)布交付出去的,但如果出現(xiàn)問題的時候怎么樣解決?,F(xiàn)在一個APK可能30M、40M,這樣為了解決一個小Bug而推一個30兆、40兆的包下去,這個成本和代價是相當大的。
那么,針對以上這些問題,我們是如何處理如何解決的?首先是保證客戶端的穩(wěn)定性。我們做了一下幾個事情:定制各種各樣的聚類算法、多維度的分析和分發(fā)、按照業(yè)務(wù)維度進行告警、監(jiān)控等。
下面說一下比較常見的錯誤監(jiān)控。錯誤監(jiān)控大概分幾類:***個肯定是網(wǎng)絡(luò)層,各種超時,各種檢驗失敗等情況。接口調(diào)用就是網(wǎng)絡(luò)上的接口這種調(diào)用的,不管是網(wǎng)絡(luò)層的失敗還是業(yè)務(wù)層的失敗都會有相應(yīng)的監(jiān)控。業(yè)務(wù)錯誤就是在端上,其實你的端有時候也有很多業(yè)務(wù)這種邏輯,所以我們會把這些邏輯加上一些監(jiān)控的點。數(shù)據(jù)錯誤就是說數(shù)據(jù)本身可能有些都是人為的,本身會由于代碼的修改產(chǎn)生一種格式的變化或者數(shù)據(jù)量的變化,所以我們對數(shù)據(jù)本身也要進行一些分析與監(jiān)控。
本著節(jié)約成本辦大事的原則,我們就把這些東西劃分開。首先實時告警可能到分鐘級別,也有到秒級的,它是保證這些關(guān)鍵的錯誤點,比如說Crash率、網(wǎng)絡(luò)的錯誤,一些業(yè)務(wù)的錯誤,下單失敗等等各種各樣的這種錯誤類型。然后我們可以用阿里云的大數(shù)據(jù)的計算服務(wù),達到了一個小時級別或者半小時級別的監(jiān)控,就是每半個小時或者每一個小時跑出來一份指標,然后與之前的數(shù)據(jù)進行對比。
有了上面的監(jiān)控、指標度量等等這種東西以后,可以展開一些專項的工作,去推動一些問題的修復(fù),甚至推動架構(gòu)的一個變化。當然,我們會有一個主動監(jiān)控的系統(tǒng)來進行這種功能上的、網(wǎng)絡(luò)層面上等等這種主動的監(jiān)測,說白了就是在線上不斷去跑自動化case,case失敗了就告警。
說完技術(shù)上的監(jiān)控,其實我想說的最重要的一點,用戶的反饋是非常非常重要的。舉一個簡單的例子,比如說APP出現(xiàn)了一個在啟動階段最早的問題,可能它壓根裝上就啟不起來,你什么都感知不到,怎么辦?那只能通過用戶的反饋,用戶在各大市場上他反饋了什么。
輿情系統(tǒng)我們做了幾個事情,當然這個是僅僅針對用戶反饋這一塊。首先我們進行了分類達標,我們把它分為系統(tǒng)故障、體驗問題、產(chǎn)品問題、客戶咨詢。我們就通過輿情系統(tǒng)進行發(fā)現(xiàn),然后進行干預(yù)、進行排查、進行修復(fù)。
當遇到一連串非常嚴重的業(yè)務(wù)邏輯錯誤時該怎么辦呢?我們會進行動態(tài)部署。對比原來老的包生成一種差量,然后下發(fā)到端上。***如果所有手段不行,只能重新發(fā)版,當然重新發(fā)版也是有策略的。所以我們有一整套發(fā)布策略,可以對發(fā)版,也可以對發(fā)動態(tài)部署、Hotpatch配置等等。
智能的放量人為控制,就是說在發(fā)布的過程中APP量級非常大的時候,不可能一次性全發(fā)的。先放一版,看指標,系統(tǒng)指標合格了,然后再次往上放,不斷放量,是一個逐漸灰度的過程。
***就是全量,用推拉結(jié)合的一種方式。拉就是拉接口,推是從通道推一個消息下來,然后接收這個消息。時效性高可能對服務(wù)端的壓力也是非常大的,所以這個推拉結(jié)合的方式可以提高我們的到達率。
總結(jié)上面說的,我們會有實時告警、離線分析,有用戶反饋這種分析,有實時日志分析,還有服務(wù)端分布式調(diào)用鏈路的分析,也有一整套故障解決方案。不斷去優(yōu)化線下質(zhì)量保證的系統(tǒng),發(fā)布策略、發(fā)布流程等等?,F(xiàn)階段雖然做了一些工作,但可能也不是那么***,我們一直努力在打造一套端上的運維分析的工具。
我講完了,謝謝大家!
本文整理自,由51CTO傳媒主辦的WOT2016互聯(lián)網(wǎng)運維與開發(fā)者大會上來自阿里巴巴高級技術(shù)專家楊強主題為《移動APP質(zhì)量保障工作》的精彩演講。
演講視頻:http://edu.51cto.com/lesson/id-100756.html
講師簡介:
楊強,2012年加入阿里巴巴,負責(zé)無線產(chǎn)品的研發(fā)支撐與無線線上監(jiān)控運維相關(guān)平臺相關(guān)工作。支持了手淘、天貓、聚劃算、釘釘?shù)劝⒗锇桶蛢?nèi)部APP的研發(fā)支撐和線上監(jiān)控運維相關(guān)工作。