微盟癱瘓:一個程序員引發的20億血案

2月23日,大批商家發現微盟伺服器崩掉了,一時間,相關商城、小程序都無法登陸。
問題突發之後微盟官方一開始還甩鍋,遲遲沒有修復,這讓300W+使用微盟的商家停擺兩天,損失慘重。
微盟癱瘓:一個程序員引發的20億血案
微盟癱瘓:一個程序員引發的20億血案
01
 
一直到了25號,微盟才露面,暗戳戳的發了一個「自願公告」:
微盟癱瘓:一個程序員引發的20億血案
微盟癱瘓:一個程序員引發的20億血案
仔細研究一下這些公告,我們能發現很多「反常」的地方:
首先這個程序員的行為就很反常。
根據公告的信息,這個DBA是用自己的賬號,在晚上七點,通過個人VPN進跳板機刪的庫,事發之後很快被定位,第二天就被抓起來了。
用自己的賬號,沒用多重跳板偽裝,而且你看這個作案時間,對於整天加班熬夜的程序員們來說,下午七點等於剛上班啊,大家都在幹活,你去刪庫砸鍋,這跟把身份證貼臉上去搶銀行有啥區別?
同歸於盡啊,還是咋滴?
微盟癱瘓:一個程序員引發的20億血案
然後就是撲朔迷離的刪庫動機,一開始微盟發公告說是:因個人精神、生活等原因。
微盟癱瘓:一個程序員引發的20億血案
後來27號,微盟的老闆孫濤勇又解釋是因為這個程序員深陷網貸,在家裡悶了30多天,然後就把資料庫刪了。
微盟癱瘓:一個程序員引發的20億血案
這個就有點欺負大家的邏輯了,程序員借網貸他刪你資料庫幹什麼呢?
給平淡的生活找點刺兒嗎?沒有因果關係啊。
如果是缺錢的話,老哥這麼高的許可權,在後台隨便搞點什麼數據拿下來賣一賣,投入產出不比刪庫高嗎?為什麼去做這種損人不利己的事情呢?
難道刪庫只是為了找刺激?
微盟癱瘓:一個程序員引發的20億血案
再一個就是恢復的時間,23號出問題,預計到28號才「可能解決」,這意味著什麼?
微盟癱瘓:一個程序員引發的20億血案
懂點行的都知道,該類問題只要備份機制還奏效,有完整備份,直接回滾就可以,最多一兩個小時就能完事兒,如果需要這麼久,往往意味著破壞的非常嚴重。
整個事件梳理下來看一看:
這個老哥用自己的賬號,明目張胆刪庫,而且一出手就是下狠手,擊穿所有的應急預案和備份,直接把系統刪崩,回滾都沒得滾,擺明了是想要玉石俱焚。
微盟癱瘓:一個程序員引發的20億血案
一時間行業里也是各種猜測,流傳著不少八卦,目前靴子還沒有落地,大家還是謹慎吃瓜比較好,靜觀事情發展:
微盟癱瘓:一個程序員引發的20億血案
一個員工,獨立操作,就能把一家上市公司的數據破壞到這種程度,甚至可以連備份一塊搞掉,許可權隔離怎麼做的?無論他是一個什麼角色,都意味著微盟在後端管理的極度混亂。
這等於是把公司,還有幾百萬客戶的命都交到了這少數幾個人手上。
我堅持一個原則:人,永遠是商業活動中最大的變數
 
不管什麼時候,都不能把命讓別人攥在手裡,我見過太多人吃過這方面的虧了。
微盟癱瘓:一個程序員引發的20億血案
02
 
我早些年調查過技術服務這個行業,這裡面有些技術外包公司,路子非常野,「騷操作」特別多。
很多人根本無法想像,一個不穩定的程序員會給一個公司帶來這麼大的衝擊。少數幾個人,只要掌握了關鍵環節和關鍵技術,就能擁有巨大的破壞力和談判籌碼。
當時我調查的是一些中小規模的外包服務公司,當時他們賴以生存的整個商業生態是非常惡劣的。
一般來說項目合作初期,甲方會先付一部分定金,然後乙方就開始根據甲方需求,投入人力物力推項目。
到了項目中後期,往往需要自己掏腰包墊資,才能完成項目。
如果順利的話,最後成功拿到尾款,還能賺點辛苦費,但是很多時候,事情不會這麼簡單,東西是做出來了,服務也到位了,爸爸們往往拿了東西,把嘴一抹,立馬就變臉拖賬期,乙方還得繼續當舔狗,想盡一切辦法要尾款。
微盟癱瘓:一個程序員引發的20億血案
尤其是廣告公司,他們一般體量比較小,話語權又低。
財大氣粗的甲方爸爸們也不是直接說不給,就是賬期特別長,這兩年我見過的被賬期拖死的廣告公司,已經有幾十家了。
技術外包類公司也一樣。
但是,技術外包和廣告公司扮演的角色還不一樣,對於很多互聯網公司來說,數據是核心資產,系統是運行的命脈,技術扮演的角色非常關鍵。
根據牛頓第十二定律,我們可以得知:破壞永遠比建設更容易。
基於此,一些路子比較野的技術外包公司就玩起了「黑吃黑」。
微盟癱瘓:一個程序員引發的20億血案
這些公司會在開發初期的時候,直接就埋好後門,哪怕是項目交付了,正式投入使用了,要確保自己手裡仍舊掌握著主動權。
爸爸們要是不按照合同,按時打款,拖延賬期什麼的,那就等著系統三天兩頭出問題吧。
很多地方底層的商業生態就是這樣,一手交錢一手交貨最好。
這種周期比較長的項目,先給錢的往往拿不到貨,先給貨的就拿不到錢,這話,很多做服務類乙方的一定感同身受,他們總是扮演一個被「拿捏」的角色。
如果說為了要尾款,留後門是出於無奈,那麼路子更野的那些人,留定時BUG,邏輯炸彈,偷偷下載倒賣數據給競爭對手,那就是赤裸裸的壞了。
一魚八吃,在他們那裡,從來就不是夢。
微盟癱瘓:一個程序員引發的20億血案
03
一般來說,外包公司把項目做好之後,進入交付使用階段,還會簽一個長期維護的合同,費用通常在幾十萬。
常規的維護一年也能有個幾萬塊,主要是伺服器運維、域名、常見的bug修復,應急事件處理等等。
一般來說,甲方開發系統,後期的維護會直接給負責開發的公司。
因為這個錢是easy money,能拴住客戶,榨到更多剩餘價值,於是為了拿到這個長期維護的合同,很多外包公司就會故意把程序寫得非常晦澀,或者是隱藏一部分關鍵內容,放一些只有自己內部知道的BUG。
這樣,來確保只有自己能吃到這塊肥肉。
因此自己人去做維護沒有一點問題,但只要甲方敢換人,一定三天兩頭出問題。
程序寫的繞過來,繞過去,對方刪也不敢刪,改也不敢改,很難定位到真正的問題所在。
這個時候,甲方就被吃定了。
主要是因為「沉沒成本」,開發系統的大頭都花了,客戶基本就已經被牢牢綁定了,根本沒法再找別人插手這個東西。
常規被吃點運維費用還能接受,但是,騷中自有騷上人。
微盟癱瘓:一個程序員引發的20億血案
04
有些外包公司,簡直是天天在違法的邊緣瘋狂試探,他們不光想要吃維護費,還會搞「釣魚修復」。
頭幾年一般比較老實,過個三四年,甲方就會發現,系統開始頻繁出問題了,外包公司就會借著電腦系統老化,兼容性問題,資料庫需要優化,數據規模大了需要擴容等理由。
然後假模假樣搞優化和修復,趁機再大賺一筆。看上去忙活大半個月,其實可能只是注釋掉自己當年留下的一個定時Bug而已。
有自己技術團隊的公司,可能還好點,但是完全技術外包的中小公司,錢該花的都花了,這個時候真是一點辦法沒有.自己沒有懂行的人,根本察覺不到,察覺到了也沒法驗證,就算驗證了,打官司也很難贏。
而外包公司這樣一通操作下來,一年又能多掙個幾萬塊。
行業裡面有很多這樣的外包公司,幹個3年5年,手裡攢著幾十個客戶,後面光吃維護,一年純掙個幾十萬不成問題,抱著聚寶盆美滋滋的吃紅利,這是一些外包公司的生財之道。
微盟癱瘓:一個程序員引發的20億血案
05
 
這個操作其實是相當普遍的,也不僅僅存在小公司,關注行業消息的可能知道,前幾年西門子也遇到過類似的事情。
不要以為西門子就是做冰箱的,家電業務只是西門子很小的一個板塊,真正牛逼的地方是軟體、信息系統和行業解決方案。
微盟癱瘓:一個程序員引發的20億血案
西門子之前有一個管理訂單用的電子表格需求,其實也不複雜,就是用自定義腳本更新庫存和訂單的信息,之前是外包給一個合同工設計的。
完成之後五六年的時間一直運行挺正常的,後來表格開始頻繁崩潰,然後西門子只能重新找他做維護,陸陸續續一共花了4萬多刀,直到後面事發突然,緊急修復,有其他工程師要到了管理密碼,才發現程序裡面藏了一個邏輯炸彈,會在特定的時間或者是特殊情況下誘導系統崩潰,然後事情才敗露。
類似這樣的還有很多,02年的時候UBS PaineWebber 的一個員工,在公司1500台聯網的電腦裡面,偷偷摸摸把其中1000台植入了邏輯炸彈。
然後想搞個大事故,整成負面新聞,配合起來做空公司的股價。
2002年3月4號,他植入進去的程序開始大規模刪文件,結果到最後公司也沒出什麼大問題,股價穩如老狗,最後事情敗露,自己賠進去了2萬多刀,還判了8年多。
微盟癱瘓:一個程序員引發的20億血案
結合著這個騷操作,我們再翻過來看一下微盟這段時間的股價變化:
微盟癱瘓:一個程序員引發的20億血案
歷史,還真是有趣呢。
這些技術起家,有資深技術團隊,監察系統比較完善的大公司相對而言會好很多,如果是非技術公司找外包的話,對方大概能有1萬種辦法,讓你跪下來叫爸爸。
所以說很多時候千萬不能小看程序員。
禿禿的腦袋下,往往藏著大大的力量。
微盟癱瘓:一個程序員引發的20億血案
06
 
雖然大家都在強調規範管理,許可權隔離,多人驗證,但在實際操作當中,對於中小公司互聯網公司來說是很難做到的。
因為規範的流程意味著效率的降低,大多數公司,你真正參與進去的時候就會發現,很多制度表面上看起來嚴絲合縫,但是在關鍵位置的人,能找到1萬種方法把這個系統搞崩掉。
然而保證人不出問題是非常困難的,在我的經驗里,人是所有的商業要素當中變數最大的一環。
所以我一直有這樣一個原則:真正的靠譜需要把別人的不靠譜也cover掉。
所以,我在解決問題的時候,尤其是比較重要的環節,一定會留預備方案,只要一個關鍵環節沒有雙保險,我就會重新考慮整件事的可行性。
只要一個環節出問題就全部完蛋,這種事情我是絕對不能接受的。從墨菲定律定律來理解,一件事,只要有可能往壞處發展,那麼只要時間夠長,這件事就一定會發生。
 
不要拿命來賭概率。
這些年很多規模不小的企業都選擇直接購買SaaS的解決方案而不是自建系統,但是微盟這個事情出現之後,我們是不是要重新考慮一下,SaaS要不要把數據管理的許可權歸還給客戶?定期允許客戶自行備份相關的數據?或者提供更多災備手段?
對於互聯網公司來說,數據是最核心的資產,而且是不可再生的。
核心的商業資源一定要掌握主動權,把數據交出去,就是把生命線交出去。
微盟癱瘓:一個程序員引發的20億血案
公告中講到是28號修復,截止到發稿,很多商家的小程序仍舊還是維護狀態,對於使用服務的企業來說,停擺這麼久,無疑是巨大的損失。
一些公司幹了3年5年的數據、訂單、用戶信息都存在你這裡,萬一出了問題,如果一點補救措施都沒有的話,那些企業怎麼辦呢?損失誰來賠付呢?
不管是黑天鵝也好,灰犀牛也罷,程序員刪了庫也好,老闆跑路了也好,機房失火了也好,誰的責任先不說,總要有一些補救的辦法吧?
商業合作信任是必要的,但一定也是有限度的,無限度的信任就是把腦袋交出去。
這次危機,應該是整個SaaS行業需要認真考慮反省的一個時機。
微盟癱瘓:一個程序員引發的20億血案

發表評論

您的電子郵箱地址不會被公開。