譯者按: 等待用戶反饋BUG沿腰,一切都晚了脆诉!實(shí)時(shí)監(jiān)控線上應(yīng)用才是王道。
原文: Why relying on your users to report errors is the dumbest thing you’ll ever do
譯者: Fundebug
為了保證可讀性芭商,本文采用意譯而非直譯哑了。另外,本文版權(quán)歸原作者所有缰泡,翻譯僅用于學(xué)習(xí)刀荒。
我們熱愛(ài)coding。
當(dāng)我們coding的時(shí)候棘钞,就如同從零建造一棟大樓缠借。新的特性、新的功能宜猜、絕佳的設(shè)計(jì)都在每一次更新后被用戶所使用泼返,期待他們的喜愛(ài)和贊美。這樣的一個(gè)過(guò)程讓我們感到心靈上的慰藉和擁有為數(shù)不多的成就感姨拥。
然而绅喉,現(xiàn)實(shí)并沒(méi)有想象中美好。
如果debug是移除bug的流程叫乌,那么編程就一定是將bug放進(jìn)去的流程柴罐。
軟件工程師將大量時(shí)間花在了其它事情上。他們需要參加各種會(huì)議憨奸、討論需求革屠、制定計(jì)劃、將現(xiàn)有的冗余代碼重構(gòu)排宰,以及還有一項(xiàng)花費(fèi)時(shí)間很多的工作:修復(fù)bug似芝。
我還沒(méi)有遇到過(guò)一位喜歡在代碼中去找bug的工程師,大概因?yàn)椴檎液蛷?fù)現(xiàn)一個(gè)bug往往要花費(fèi)很多時(shí)間板甘。
一直以來(lái)党瓮,debug就像大海撈針一樣。他們需要親自去發(fā)現(xiàn)問(wèn)題的原因然后尋找解法盐类,而不是依賴于用戶的截屏反饋寞奸。
用戶的截屏并不能告訴你足夠的信息痕寓,往往你會(huì)問(wèn)更多。
你用的哪個(gè)瀏覽器蝇闭,什么版本,操作系統(tǒng)是哪個(gè)硬毕,可以具體一點(diǎn)告訴我剛剛你是怎么操作的嗎呻引,你之前在哪個(gè)頁(yè)面,你是怎么到這個(gè)頁(yè)面的吐咳?
就算問(wèn)了用戶這么多問(wèn)題逻悠,也不一定能解決問(wèn)題。
Debug總是要花很多時(shí)間韭脊,然而還是一頭霧水童谒。
坐等用戶反饋真的好嗎?
很多開(kāi)發(fā)團(tuán)隊(duì)依然依靠用戶反饋來(lái)改進(jìn)產(chǎn)品沪羔,這其實(shí)是很荒謬的饥伊。
在快餐連鎖店,客戶用餐完畢之后蔫饰,需要自己將沒(méi)吃完的食物和用過(guò)的餐巾紙扔到垃圾桶琅豆。快餐店的食物可能一點(diǎn)也不好吃篓吁,客戶沒(méi)吃幾口就扔到垃圾桶然后直接走掉茫因。除非客戶真的是一個(gè)愛(ài)抱怨的人而且恰好有時(shí)間,才會(huì)如實(shí)評(píng)價(jià)杖剪。否則冻押,你只會(huì)認(rèn)為一個(gè)客戶吃完飯滿意的離開(kāi)了。
然而盛嘿,他再也不會(huì)來(lái)這里吃了洛巢!
一些開(kāi)發(fā)者會(huì)這么認(rèn)為:如果沒(méi)有用戶反饋問(wèn)題,那就代表我們的產(chǎn)品棒棒噠孩擂,對(duì)不對(duì)狼渊?認(rèn)為“如果用戶使用產(chǎn)品遇到問(wèn)題,用戶就會(huì)反饋”是比較局限的类垦。最終你會(huì)發(fā)現(xiàn)只有1%的用戶會(huì)反饋問(wèn)題狈邑,然而事實(shí)上多得多。
開(kāi)發(fā)者依靠很有限的信息去嘗試debug一個(gè)問(wèn)題蚤认,往往不能解決米苹。
你開(kāi)發(fā)的軟件并沒(méi)有你想象的那么完美!
一個(gè)在大型線上零售店工作的朋友跟我聊過(guò)他們解決公司線上訂單系統(tǒng)的一個(gè)重大問(wèn)題的故事砰琢。他們經(jīng)過(guò)好幾天的排查蘸嘶,都沒(méi)有發(fā)現(xiàn)問(wèn)題所在良瞧。最后決定使用一個(gè)專用工具來(lái)監(jiān)控和診斷應(yīng)用錯(cuò)誤。
最終的發(fā)現(xiàn)令人驚恐训唱!
八個(gè)服務(wù)器中的一個(gè)內(nèi)存不足然后報(bào)錯(cuò)褥蚯,導(dǎo)致用戶的訂單流程失敗。也就是說(shuō):“每八個(gè)用戶中有一個(gè)收到影響”况增。
發(fā)現(xiàn)和解決這個(gè)問(wèn)題使得一個(gè)月的銷售額提高了2萬(wàn)美元赞庶。事后評(píng)估發(fā)現(xiàn)總共影響了5000名用戶澳骤,但是只收到2個(gè)用戶反饋。雖然解決了bug大家都很開(kāi)心为肮,但這個(gè)錯(cuò)誤導(dǎo)致了10萬(wàn)美元損失摊册。
不建議這么做:一出錯(cuò)就給自己發(fā)郵件報(bào)警
你可以坐在電腦面前盯著錯(cuò)誤日志流颊艳。當(dāng)你休息的時(shí)候,可以雇一個(gè)小伙伴這么做籽暇∥轮危或則,當(dāng)異常出現(xiàn)的時(shí)候戒悠,給自己發(fā)報(bào)警郵件(貌似是個(gè)不錯(cuò)的主意)熬荆。直到你真的這么做了,你就不會(huì)這么想了绸狐!
你需要意識(shí)到:對(duì)于小的個(gè)人項(xiàng)目卤恳,一有錯(cuò)誤就通過(guò)郵件報(bào)警還可以。但如果業(yè)務(wù)量起來(lái)了寒矿,訪問(wèn)量打了突琳,事情就會(huì)變得一團(tuán)糟:
- 由于版本以及兼容性,很多錯(cuò)誤信息不完整
- 很難去指定一個(gè)報(bào)警規(guī)則符相,報(bào)警變成噪音
- 如果一個(gè)錯(cuò)誤剛好在循環(huán)里面拆融,可能一晚上給你發(fā)5萬(wàn)封郵件
- 錯(cuò)誤沒(méi)有優(yōu)先級(jí)或則嚴(yán)重性區(qū)別,混在一起
- 當(dāng)你查看了超過(guò)100封郵件以后啊终,你再也不回去讀它們了
你會(huì)開(kāi)始忽略這些郵件镜豹,甚至把它們歸類到一個(gè)單獨(dú)的文件夾然后發(fā)現(xiàn)無(wú)從下手而很少去碰。畢竟蓝牲,從幾千封郵件中找到嚴(yán)重的問(wèn)題并解決很不容易趟脂。
ELMAH - 記錄程序異常
ELMAH (Error Logging Modules and Handlers) 是一個(gè)錯(cuò)誤記錄服務(wù)。它可以動(dòng)態(tài)地加入到一個(gè)ASP.NET項(xiàng)目中例衍,而不需要重新編譯或則重新部署昔期。ELMAH不支持所有的程序語(yǔ)言已卸,他提供的功能也有點(diǎn)局限。ELMAH適用于小型的個(gè)人項(xiàng)目硼一。
專業(yè)BUG監(jiān)控
如果你想認(rèn)真對(duì)待應(yīng)用BUG累澡,可以使用一個(gè)專業(yè)的BUG監(jiān)控服務(wù),比如國(guó)外的Raygun(或則我們Fundebug)般贼。一個(gè)專業(yè)的BUG監(jiān)控服務(wù)可以幫你:
- 通過(guò)過(guò)濾和排序來(lái)定位嚴(yán)重錯(cuò)誤
- 配置多種報(bào)警方式永乌,比如郵件、Slack具伍、或則HipChat
- 使用一個(gè)監(jiān)控服務(wù)來(lái)追蹤多語(yǔ)言多平臺(tái)
- 相似錯(cuò)誤自動(dòng)聚合
- 團(tuán)隊(duì)協(xié)作齊力解決BUG
如果你使用簡(jiǎn)單的方案(直接郵件報(bào)警),那么你需要停下手頭的工作圈驼,花費(fèi)兩三個(gè)小時(shí)去復(fù)現(xiàn)一個(gè)bug人芽。這是非常浪費(fèi)時(shí)間,非常低效的做法绩脆!如果一個(gè)團(tuán)隊(duì)注重快速迭代萤厅,那么他們會(huì)愿意為開(kāi)發(fā)者節(jié)省花費(fèi)的debug上的時(shí)間,去開(kāi)發(fā)產(chǎn)品的新功能靴迫、新特性惕味。
總結(jié)
我們希望技術(shù)實(shí)現(xiàn)自動(dòng)修復(fù)軟件BUG。不過(guò)玉锌,軟件自愈依然還有一段距離。你可以使用一些錯(cuò)誤監(jiān)控服務(wù)來(lái)使得整個(gè)debug更加簡(jiǎn)單和高效禀倔。
在你的用戶發(fā)現(xiàn)問(wèn)題之前發(fā)現(xiàn)参淫,并且不要單純依賴用戶反饋問(wèn)題!
版權(quán)聲明:
轉(zhuǎn)載時(shí)請(qǐng)注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2017/08/30/rely-on-users--to-report-error-is-not-good/