當(dāng)產(chǎn)品發(fā)生重大事故時,正確的姿勢是什么?
互聯(lián)網(wǎng)運營多多少少都會遇到一些事故,事故有大有小,影響不一,有些微乎其微,但是有一些卻舉足輕重。系統(tǒng)發(fā)生重大災(zāi)難難道只能“刪庫跑路”?本文作者列舉了互聯(lián)網(wǎng)公司一些比較重大的事故,并總結(jié)了自己的幾點建議,與大家分享。
一、什么是重大事故?
刪庫跑路?還是系統(tǒng)奔潰?重大事故讓人沮喪、肝兒顫、似乎又無可奈何?
近來所在的部門和產(chǎn)品發(fā)生幾次大事故,用戶大量涌入,在峰值時刻導(dǎo)致系統(tǒng)癱瘓,造成不可估量的經(jīng)濟損失:原有線上活動不能正常進行,除此之外,無論是對產(chǎn)品本身還是品牌形象的損害更是無法估量,所謂創(chuàng)業(yè)難、守業(yè)更難。
當(dāng)然重大事故在任何產(chǎn)品和任何公司都有發(fā)生的可能,比如——
1. 拼多多優(yōu)惠券BUG事件
2019年1月20日凌晨,拼多多遭遇了成立以來的最大BUG事件:當(dāng)日凌晨,有用戶發(fā)現(xiàn)可以領(lǐng)取100元無門檻券,切換微信、QQ等賬號可以多次領(lǐng)取,且兌換券可直接用于充值話費、Q幣、購買商品時抵扣。
該BUG于凌晨被發(fā)現(xiàn),隨之被擴散開來,凌晨五點傳遍全網(wǎng),吸引了大批羊毛黨進入,至早上九點拼多多才反應(yīng)過來,下架了相關(guān)優(yōu)惠券,10點左右BUG被修復(fù)。由于有羊毛黨進入,眾所周知其作戰(zhàn)能力彪悍,開啟了嘻唰唰模式。傳言該BUG使拼多多一夜損失200億。
2. 攜程癱瘓門事件
2015年做互聯(lián)網(wǎng)行業(yè)的人應(yīng)該都耳聞過攜程“癱瘓門”事件,那天是5月28日,突然之間攜程官網(wǎng)和APP雙雙崩潰,訪問不了。一時間謠言四起,兩個小時后,攜程發(fā)布聲明說服務(wù)器受到不明攻擊,正在努力恢復(fù)中。
但是據(jù)坊間流傳,說攜程的數(shù)據(jù)被懷恨在心的一個工程師物理刪除,數(shù)據(jù)全部丟失?;ヂ?lián)網(wǎng)公司最核心的就是數(shù)據(jù)了,若用戶數(shù)據(jù)丟失,公司會成為一個空殼,變的一文不值。次日攜程發(fā)布官方聲明,說是由于員工操作失誤,誤刪除了生產(chǎn)服務(wù)器上的代碼所致,就此事件結(jié)束,受此事件影響,攜程盤前股價暴跌11.67%。
3. 王者榮耀test郵件事件
如果你不知道玩什么,就玩王者榮耀吧。如果你不知道朋友去哪了,就去王者榮耀找吧。
2018年12月3日王者榮耀不少安卓QQ區(qū)的用戶收到了標(biāo)題為“test”的郵件,打開后里面是英雄沈夢溪、棒球奇才、英雄李信和灼熱之刃四個永久道具。價值有多大呢,這次郵件內(nèi)容被用戶戲稱為“天美史上最強福利”。
郵件發(fā)出后,全網(wǎng)沸騰,微信群、QQ群關(guān)于郵件內(nèi)容的截圖滿天飛,然而不到1小時,進入游戲提示:停服維護。官方動手了,對已經(jīng)使用了道具的賬號,強制進行了回收。未打開郵件的賬號,郵件被刪除。按照游戲出 BUG 必補償?shù)脑瓌t,事后官方對全服玩家發(fā)放了每人10個英雄碎片和2000個銘文碎片補償。
二、一分為二看待“重大事故”這件事情
1. 第一個“一分為二”:主動還是被動
通過上邊的案例我們可以看到,重大事故的發(fā)生分為人為的、故意的,和非人力可以控制的、意外的,前者如程序員刪庫跑路,后者如活動大量流量訪問時系統(tǒng)的暫時性奔潰(此處應(yīng)該有一個淚奔的表情)。
2. 一分為二看待“重大事故”這件事情的生命周期,挑戰(zhàn)還是機遇
首先我們應(yīng)該慶幸,我們能夠遇到和處理、解決這些“重大事故”,因為一定程度上說明了我們做的產(chǎn)品到了一個比較大的用戶量階段,對系統(tǒng)的高并發(fā)有了比較高的要求,這無論是對產(chǎn)品還是對技術(shù)來講,都是一次在壓力中成長的機會。
就像一個孩子的成長一樣,一路上的跌跌撞撞、磕磕碰碰之后,才能成長為一個身體和心理都較為強壯的人,而系統(tǒng)也因此變得越來越健壯。
三、重大事故是事實和性質(zhì)雙重嚴(yán)重的問題,怎么辦?
這總歸不算事一件特別好的事情,至少不值得炫耀。
這是項目或者產(chǎn)品冒著拼盡洪荒之力的重壓給參與者的一次成長的機會,風(fēng)險永遠(yuǎn)不可消除和避免,但是我們還是有章可循盡量能預(yù)防,從而降低風(fēng)險和損失。
(1)對于人為原因的事故,我們只能從人的角度多關(guān)注,關(guān)注每一個參與者的幸苦付出,讓大家感受到參與的熱情和價值,做好團隊的心理建設(shè)
(2)對于非人為的原因造成的事故,大概有以下一些處理方案,主要是一些在用的方案,坊間通用的以后用到再談。
- 首先,產(chǎn)品的功能和壓力測試要做、并且要做好。很多次事故的發(fā)生,除了不可以預(yù)估的問題之外,很多都是所謂的“小問題”導(dǎo)致的,比如一行代碼寫錯、代碼編寫的不規(guī)范、需求邏輯的漏洞等等;
- 第二點,針對大型活動的緊急預(yù)案怎么做也很關(guān)鍵,比如服務(wù)器的動態(tài)擴容,如果沒有動態(tài),那么讓運維的同學(xué)現(xiàn)場支援行不行,我們要想盡一切辦法和可以動用的資源去保障活動過程中盡量將損失降到最低;
- 第三點,持續(xù)的性能優(yōu)化。我們在產(chǎn)品從0到1點階段往往會一定程度上降低對產(chǎn)品性能的要求,加上不同的人由于經(jīng)驗和能力的不同,往往會不能夠兼顧到“以后”,我們很多時候總是滿足“當(dāng)下的需求”而忘記了看遠(yuǎn)方的路。因此,我們要找機會,對做過的東西不斷的優(yōu)化,一種是純技術(shù)層面的,比如代碼邏輯和編譯上的優(yōu)化;更好的方式當(dāng)然是要在戰(zhàn)場去驗證,產(chǎn)品做出來一定要在不停的實戰(zhàn)使用中、在一次次的峰值跳躍間,找到問題,優(yōu)化問題。
- 活動過程中的實時監(jiān)控。在業(yè)務(wù)線上使用的過程中,我們也不斷增加了一些實時監(jiān)控工具,可以實現(xiàn)在活動作業(yè)過程中對服務(wù)器壓力、CPU性能、數(shù)據(jù)庫壓力等的實時看板監(jiān)控,做到秒級的實時監(jiān)控。
- 一比一模擬線上活動,功能自動化腳本測試和性能腳本壓測。永遠(yuǎn)沒有萬全之策,但是我們可以離安全再近一點。每次活動之前我們按照業(yè)務(wù)預(yù)估的訪問量進行模擬環(huán)境的功能測試和性能測試,當(dāng)然這一切都要形成腳本,進而可以變成自動化,這樣一方面可以節(jié)省時間,另一方面也可以不斷豐富監(jiān)控庫。
- 活動策劃的時間把控和活動報備,同時段多個活動同時在線時怎樣錯峰處理。其實很多時候系統(tǒng)奔潰的問題會出現(xiàn)在活動運營的整體時間把控不足,對活動效果估計不足或者樂觀估計等問題上。比如,我們預(yù)估活動只會有20萬人參與,但是實際訪問量卻是100萬;我們認(rèn)為一切萬無一失,但總是馬失前蹄。還有,同時段如果有多個活動同時進行,這種多線程的壓力就會被放大多倍。
- 多系統(tǒng)聯(lián)動而導(dǎo)致的關(guān)系復(fù)雜度提高問題。除了我們自己單獨的系統(tǒng)會遇到瓶頸而導(dǎo)致系統(tǒng)問題之外,如果我們跟多個系統(tǒng)進行多次聯(lián)動,那么發(fā)生問題概率會大大提升。比如,一個業(yè)務(wù)規(guī)則在我們自己的系統(tǒng)是OK的,但是保不齊上下游關(guān)聯(lián)系統(tǒng)會發(fā)生什么“意外”,這個時候出了問題大家就只能一起背鍋(請叫我背鍋俠)。
- 很有很多,這次先寫這么多……
四、性能優(yōu)化與用戶體驗的永恒博弈
剛剛講了很多實際處理重大事故的方案和預(yù)案,但是當(dāng)我們透過現(xiàn)象看本質(zhì)我們會發(fā)現(xiàn),在基本的功能問題處理完畢后,后續(xù)我們將面臨的是系統(tǒng)性能和用戶體驗的艱難博弈。
簡單來講:比如我們減少一個炫酷交互的操作,可以提高頁面打開效率的1%;為了方便用戶篩選,我們將篩選做的層級分明,極為細(xì)致,但是這樣的設(shè)計系統(tǒng)接口間的詢問次數(shù)就會變得多了起來。
在處理這部分問題和工作的時候,小胖發(fā)現(xiàn)一個很有意思的點:技術(shù)同學(xué)往往想讓產(chǎn)品降低一些操作和搜索類邏輯的使用,從而可以提高一部分系統(tǒng)的性能,但是產(chǎn)品同學(xué)往往對用戶體驗細(xì)節(jié)要求極高,所以很多方案都是大家盡量溝通達(dá)到所謂的“中和”點,但是這樣的中和是否就是完全對的呢?
五、怎么進行事故的解釋和匯報
1. 下下策:報喜不報憂
許多人喜歡報喜不報憂,哪怕是出了很大的事故,這種做法其實是不太明智的,畢竟老板也不是傻子,可能開始的一兩次忽悠還可以蒙混過關(guān),但是路遙知馬力日久見人心,諸君共勉。
2. 中策:報憂不報喜
有些人又比較慫,只是會承認(rèn)錯誤,災(zāi)難都發(fā)生了,承認(rèn)錯誤是應(yīng)該的,但是光承認(rèn)錯誤是沒有用的。并且,如果只講不好的部分,本來相關(guān)人員就不順心,無疑是雪上加霜。
3. 上策:往往絕境就是機會
小胖比較人可以的方式是既要主動認(rèn)識到問題的嚴(yán)重性和快速定位到為題,解決問題;也要找到問題的轉(zhuǎn)折點,化悲痛為力量。比如可以抓住機會提出針對產(chǎn)品的優(yōu)化資源需求,要錢要資源;當(dāng)然更好的方式是,能否讓一個災(zāi)難變成一次好的公關(guān)。
比如曾經(jīng)某個漢堡品牌被爆出使用的肉有問題,媒體一時間得理不饒人,但是后來公司想了一個讓社會繼續(xù)幫這個品牌尋找用餐過程中的重大問題的活動,經(jīng)過一段時間后,不但更多的人知道了這個品牌,更知道了這個品牌是一個敢于當(dāng)擔(dān)的品牌。人也一樣,擔(dān)當(dāng)很重要。
以上,從事故中總結(jié)而來,也希望如果有一天你用的到,可以給你一些有用的思路和借鑒。
愛你們的小胖子。2020年夏。
參考資料:
http://www.aharts.cn/operate/2903465.html/comment-page-1
#專欄作家#
FatBoy,微信公眾號:夜來妖,人人都是產(chǎn)品經(jīng)理專欄作家,做了幾年產(chǎn)品。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
系統(tǒng)怎么樣才能穩(wěn)定?