在阿里“救了八年火”的程序猿,這樣講述淘寶的技術進化史
馬云爸爸曾說過,正是因為自己不懂技術,所以阿里的技術才強,“因為我不懂,我才會好奇敬仰地看著他們說,他們怎么說就怎么做。”
據說淘寶最早的版本,就是阿里小二拿了馬爸爸的一張信用卡去加拿大買了一個開源的系統,當時的淘寶還只是個社區。
不過,馬云說的很輕巧,背后的程序猿卻著實不輕松。羅馬不是一日建成的,無論是每年挖空用戶心思、傷透技術腦筋的“雙11”大考,還是淘寶從PC向移動端的轉型,對于程序猿們都是極大的考驗。
阿里巴巴集團無線技術資深總監莊卓然(花名:南天)告訴鈦媒體,他自 2009 年加入阿里,在阿里的將近 8 年時間里,從一線工程師,到帶領整個技術團隊,再到做產品、做業務,他成長的每一個節點都與阿里技術的進化史有著很大關聯,拿他的話說就是“臨危受命”。
南天幾天前做了一場有趣的分享,聊了聊八年“救火”史里那些有趣的幕后故事:
程序猿的阿里八年
阿里巴巴集團無線技術資深總監莊卓然(花名:南天)
南天最初是在淘寶負責技術架構,2011年,“三淘分拆”(淘寶分拆成一淘、淘寶和天貓),他被調到了天貓,復雜帶領天貓的產品技術團隊。
2013年是阿里一個重要節點——全面轉向無線。當年,無線業務被寄予了很大期望,阿里從各個BU里抽調精兵強將組建成無線事業部,南天也是在那一年被調到無線事業部,開始負責手淘的技術。
去年,阿里合并了手淘和淘寶,之所以做這樣一個舉動,南天也道出了其中的緣由。13年向移動化轉型的淘寶,其實是處于一個非常被動的局面下,當時很多的小的移動電商規模已經做到了百萬量級,當時淘寶想的是先快速的把業務搬到移動端上,至于移動化的電商到底是什么,當時并不明確。
后來,隨著淘寶DAU的不斷攀升,移動端的成交量已經占到了60%至70%,所以單獨一批人來做PC的意義就不是很大了,所以阿里決定不再區分PC和無線,將二者合并。目前包括閑魚在內的很多阿里系APP,移動基礎設施都是由南天的所在的團隊提供的。
2016年,南天又兼起了優酷團隊的技術平臺負責人。 在他看來,淘寶和優酷的業務類型是非常像的,本質上都是通過做內容的分發,來撮合供需關系,只不過分發的內容會有所不同。
淘寶的技術演化之路
淘寶技術演化之路,放到整個互聯網領域去看,是很具有代表性的。目前整個阿里底層的計算、存儲等基礎設施,都是從淘寶這個體系中慢慢演化出來的。
2003年,阿里開始做淘寶的第一個版本,南天聽說, 當時就是阿里小二拿了馬云的一張信用卡去加拿大買了一個開源的系統,這時候的淘寶還只是一個社區 ,就只有一個十幾個人的團隊圍繞著這個開源系統做開發。
隨著業務規模的快速擴大,出現了很多平臺都面臨過的問題,存儲、IO環節的難題。為了更好地去管理IO、存儲和網絡,阿里做了一個大的底層的架構的改造——把淘寶遷移到JAVA,在南天看來,很多技術架構上的調整都是圍繞著兩件事情:
- 第一,當業務的規模大到不能通過簡單的加機器的方式去做調整的時候,通常就需要去做架構的改造。
- 第二,當開發的規模大到所有人在一起開發一個東西時,會互相影響的時候,也需要去做架構的改造。
南天在2009年加入淘寶的時候,整個淘寶的系統服務器做了第一次深化。按照他的回憶,“800多人的技術團隊,分不同的研發小組,有做交易的、做會員的、做商品的,由于有很多相互疊加的功能,一旦哪一個應用出現了問題,就會對所有的模塊產生影響。”
正是因此,當時的淘寶進行了SOA改造。SOA的核心,就是把所有業務做分層,進行垂直的和水平的切分,也是到那一年,才有了淘寶的第一個雛形。
到了2014年,云時代開啟。在技術團隊的工作中有一項重要任務,即每年雙十一的零點,都會為了支撐峰值去加大機器資源,來保證在零點能夠抗起一個比較高的交易量,比如,今年的交易速度就達到了17.5萬每秒。
實際上,在零點之外的時間,尤其是下午的時候,并沒有很多的人流量,這就是造成大量機器被閑置,產生資源浪費的情況。
為了解決這個問題,阿里開始采取混合云的部署方式,用自己電商集群里的所有資源去抗起交易量。天南舉例說,設定一個幾萬每秒的基本成交量,剩下的通過云計算的方式彈性的去做資源的補充,這樣,峰值以外的時間,機器的資源還可以就可以拿去做其它的事。
從“黑色五分鐘”到1207億的背后
南天說,2011年到2013年到天貓的這三年,是“幸運又悲催”的三年;同時,每年的雙十一都是一次考驗,而每一次大的改造,都是技術能力上的一次提升。
2009年雙十一出現的那一年,還沒引起太多人注意,2010年就發生了很大的變化。這一年,整個淘系面臨的全線資源枯竭,雙十一當天整個帶寬無法支持正常運作,當時技術團隊都考慮是不是要關掉一些省份的訪問,或是把彩色圖片變成黑白圖片。最終還是采取了折衷的辦法,把大圖變成小圖,以支撐讓更多人能夠訪問。
2011年,可能是雙十一最混亂的一年,還出現了著名的“黑色5分鐘”。
每年雙十一,技術團隊都會做一個系統的流量預估(系統要抗住每秒多少的成交的能力),比如過了11萬筆/秒,系統如果抗不住,就要做一個自我保護,讓超出11萬筆/秒的那些用戶去排隊。南天說,雙十一的技術核心,就是對系統里每一個應用的服務能力做一個精確的評估,要有一個很精確的保障機制。
2009年、2010年被消費者廣為詬病的就是,商家都是把價格抬高后再打折,所以 2011年雙十一想要解決的就是價格的確定性問題。
所以那年雙十一就變成,商家告訴平臺要打幾折,平臺根據原先的價格數據來通幫商家修改價格。但是,在零點剛開始售賣的時候,技術團隊發現,管理優化定價的系統掛掉了。
“這也是我們雙11每年說的,沒有經過雙11考驗的系統在我們眼中都是不穩定的系統,都會出問題,那是那個系統第一年的亮相,果然不出所料的掛掉了,任何一個你擔心,你沒有去驗證的一個地方往往就會出問題。”南天笑著說。
所以技術團隊當即做了一個決定,逐個把價格刷新到商品庫里去。但是,預案的那一行代碼又出現了問題上。
“你把一個數據讀進來做修改,再更新回去,在更新的過程中,那行對應的接口的就會由一個問題,沒有設置的值默認為空。”
這就導致了,價格改對了,但是商品的顏色、尺碼卻不匹配了。
于是那一年的雙十一就出現了著名的“黑色五分鐘”,一方面價格一片糟,有的對有的錯;有的價格好不容易改對,東西也賣出去了,結果商家這邊卻看不到賣出去的東西是幾碼、什么顏色。
但是有人就提出,打開商家修改后臺的系統。讓能夠商家能夠自行更改價格,但南天當即反對。“因為解決A問題犯了一個B的錯誤,現在我如果為了解決B的錯誤,再把A的問題拿回來,等于今年什么也沒做。”在南天的堅持下,差不多在早晨七點左右的時間,終于恢復了所有的信息。
那一年還有很多有意思的關健詞出現——爆倉、自燃,“2011年的時候很多商家打印出貨單,打印機就自燃起來了,好幾個商家發生這樣的事情。”
2012年,吸取教訓的天貓,開始從每年5月31號就正式立項,做雙十一的準備,在每年的業務突破方向上設立產品,做針對性的系統架構的升級、改造優化。
“有一個直觀的數據,比如說2011年的時候,整個公司準備雙11的預案,一共只有20個,預案代表什么呢,當出現A情況,要做什么事情,當出現B情況我要做什么事情。但是到2012年的時候,整個公司800個預案,系統整個的精細度已經做得非常深了。”
可是,2012年的雙十一又出了問題,阿里內部稱之為“最長的180分鐘”。這一年,商品的數據庫的網卡超出了上限,爆掉了。“那一年已經代表了阿里在交易系統上穩定性達到一定水準了,但問題依然來了。那真是非常長的180分鐘,180分鐘振蕩的過程中產生了一系列的問題。”
伴隨著問題的不斷顯現,預案也逐年增多,2011年20個,2012年800個,2013年到了2300個。
“這其實是一個很恐怖的數字,因為它不是要保證2300條的準確性,是要保證2300條的排列組合,不是要測2300次,是要測2300個排列組合。”
為了應對這個問題,技術團隊想出了一個辦法,是不是能夠真正的去模擬一下消費者在雙十一的那一刻?
于是,那一年技術團隊花了很多的精力去做 全鏈路壓測,模擬所有用戶行為和訪問數據,然后把這個數據打到系統上,去模擬雙十一那一刻。 然后在里面看這個預案生不生效,能不能抗得住,這個系統掛了,那個系統有沒有問題,整個的鏈路就有辦法能夠還原和測試。
“全鏈路壓測做的事情,對阿里有著里程碑的意義的一面,意味著我們不再按照說這個事情會不會出問題、那個事情會不會出問題,去一點點評估。而是我們直接模擬那一刻,去看到底哪里出問題,我們再去修改,這樣的邏輯順了很多。”
在經歷了幾年雙十一的南天看來,雙十一對于阿里來說就是解決兩件事:第一個,系統的伸縮性有沒有上限,是不是能通過快速的加機器或者擴容,去解決系統容量問題;第二個,所有為系統可能會發生的情況做的準備,是不是都能落實到確定性的層面上。
但對于接近上萬人的團隊,要在每個點上都保證不出問題“是很難的”,所以全鏈路的壓測是一個標志性事件,對于上述兩個問題有了解。
PC到移動端,技術思路怎么變?
從PC時代一路走來的淘寶,曾面臨過各種的不適應。三個要命的問題:第一個是網絡帶寬的問題;第二個,在大規模的業務遷移中所涉及到的架構上的改造,第三個,架構靈活性上不足。
當時,南天面臨的挑戰是,PC時代的阿里最核心的技術競爭力體現在研發效率上;但移動時代速度上的優勢變的不奏效了,APP必須先要搞定“用戶安裝”。
南天和他的團隊把客戶端版本——“手機淘寶”分為兩個時代:APP 1.0 和 APP 2.0。
APP1.0時期解決的是便捷性問題,“當時的版本除了搜索下單,什么都沒有。PC時代一個生態屬性的電商平臺,退化成了一個工具”,天南這樣說。這讓阿里的很多業務都無法得到很好的體現,這讓產品升級就變的勢在必行。
“跟PC時代不同,APP的孤島效應非常明顯”,這是阿里的技術團隊把所有功能都聚集在一個APP中的出發點。
電商相比社交還是低頻的,所以需要把所有跟生活消費有關的東西,放到一個APP里去,讓它能夠產生更多的業務上的協同效應,通過更多的低頻的業務的組合去打造一個高頻的入口,這就有了手淘的2.0版本。
過去電商講究的是效率,這是淘寶早些年一直在追求的。但是平臺規模上升到超過4億月活躍用戶的時候,留存就變的更為重要。 淘寶的思路變成了——從 save time 到 kill time,用內容去拉動銷售。
大批垂直電商平臺的出現,也在不斷蠶食淘寶的領土,所以,淘寶也在嘗試去做大平臺上的“小而美”。比如,淘寶讓個人商家可以在自己私域空間來去運營自己粉絲,提供給他們不同的工具,來幫助商家建立起與粉絲的連接,最終拉動銷售。
而做社區的邏輯是,在移動場景下,用戶可以隨時在線,這意味著,可以通過增加一些人和人之間的弱連接,來使得場景中人和人之間的連接屬性增強,最終的目的也是為了讓用戶kill time。
移動場景帶來的另一個變化是,屏幕越來越小。 在移動場景下,屏幕變小,人工能夠運營的東西十分有限,而機器學習和人工智能就成了唯一出路。
人工智能在淘寶上有兩個典型的應用場景。
- 第一個是搜索和推薦。
比如手淘上的“有好貨”,達人和買手挑選他們認為好的東西,放到這個商品庫里,再根據用戶的興趣圖譜做推薦。這個模塊的入口圖,每個用戶看到的都不一樣,用戶看到的圖片都是“有好貨”里跟自己相關度最高的商品。
- 第二個,就是“問大家”——很多用戶都用過這一功能。
提一個問題給買過這個商品的人,誰能收到,誰收不到,都是通過算法去完成,讓問題可以給到一個既樂意回答、又沒有被過度騷擾的買家。“問大家”還會通過機器學習的方式,把大致相同的問題進行歸類,來降低提問量。
在南天看來,只要是作分發的APP,都會經歷內容化、社區化和智能化這三種形態。 而從PC到互聯網,從圖文再到視頻,每一次用戶觸點技術發生變革的背后,本質都在于信息組織和分發的方式發生了變化。在天南看來,這個過程 “和媒體變化的過程類似,從最早的文本到圖片到視頻,到今年火爆的直播,是很明顯的一個演變,也就是從一維到二維,未來一定會進入到三維的時代。”
來自:http://www.tmtpost.com/2547367.html