2011年4月23日,主題為《云計算技術(shù)沙龍——大規(guī);ヂ(lián)網(wǎng)架構(gòu)實戰(zhàn)》的第九期TUP活動在中國科學(xué)院計算技術(shù)研究所一層報告廳舉行,本次沙龍活動主要涉及基于MySQL的B2C電商系統(tǒng)前端數(shù)據(jù)層架構(gòu)、應(yīng)對規(guī)模和復(fù)雜性挑戰(zhàn)、Hadooop未來走向等話題。
在此次活動中,來自凡客誠品項目管理與架構(gòu)總監(jiān)欒義來發(fā)表了《凡客的歷程分享:應(yīng)對規(guī)模和復(fù)雜性挑戰(zhàn)》演講,在此次演講中,他帶來了三方面的內(nèi)容,第一,為了應(yīng)對訪問規(guī)模的增長,除了常見的讀寫分離、縱向分拆外,在各系統(tǒng)的細節(jié)中還應(yīng)該注意哪些方面;第二,面對解耦邏輯復(fù)雜度的挑戰(zhàn),如何解耦和抽象電子商務(wù)各子系統(tǒng),以快速應(yīng)對業(yè)務(wù)變化;第三,關(guān)于實用主義的技術(shù)思考。
欒義來:我的PPT也一些人會比較失望,這里面涉及到技術(shù)細節(jié)比較少,幾乎沒有。因為電子商務(wù)的事情從我個人觀點來講,我覺得不是一個特技術(shù)的事情。他是分階段的,其實很多數(shù)據(jù)庫的方案,大家反反復(fù)復(fù)在很多場合聽過很多遍了。比如說MySQL的方案套到Oracle上不會有太大差別,這些東西大家在有些場合聽得差不多了。
我的PPT里面更多講的是一些技術(shù)和非技術(shù)之間都相關(guān)的事情,這些事情是你剛?cè)胄械臅r候體會不到,或者是你不覺得是那樣。當(dāng)你逐漸做電子商務(wù)這件事情的時候你才會有所體會,覺得他的確是那樣一件事情。
我大概分幾個部分,首先對凡客做一個介紹,然后是電子商務(wù)大概技術(shù)的一些階段的發(fā)展。然后是關(guān)于規(guī)模訪問和邏輯浮躁一些問題的大概解決。最后這個可能是非技術(shù)的東西,很多人對于凡客的成功是有很多疑問的,有些很好奇,我簡單跟大家分享一下。
我自我介紹一下,我是08年初加入凡客一直到現(xiàn)在,在技術(shù)部門從事管理和架構(gòu)的事情。我之前在金山和一些其他企業(yè)做過。我先簡單跟大家介紹一下凡客是什么,凡客這個事情在很多人眼中對凡客不是特別清楚,凡客是一家什么樣的廠商。凡客在我們眼里首先是一個服裝品牌,他首先是一個我們稱為快時尚自助品牌的服裝、服飾的互聯(lián)網(wǎng)商城,這是這件事情本質(zhì)。比如說麥包包也好,你看其他的也好,你要去明白他們首先是要干什么事情,他干這件事情決定了他們要采用什么樣的技術(shù)的解決方案。凡客的正式發(fā)布時間是在07年10月18日發(fā)布,到現(xiàn)在三年半的時間,他去年營業(yè)額20億,網(wǎng)上可以查到。目前日均PV是8000-1萬之間,這個數(shù)量級相當(dāng)于不大不小門戶的訪問。目前的日訂單量在15萬左右,整個系統(tǒng)對訂單處理峰值超過這個。目前凡客整個架構(gòu)體系是在Windows架構(gòu)上面,外部就是SP的MAC和Cache(音譯)應(yīng)用。整個后端包括ERP和后端運營系統(tǒng)部分也采用了大量的Winform的界面,整個處理不是多么高的復(fù)雜的系統(tǒng)。目前我們整體的服務(wù)器超過500臺,整個服務(wù)器增長速度還是挺快。據(jù)我所知,很多B2C企業(yè)服務(wù)器其實基本上是在當(dāng)當(dāng)這個級別是1000-2000,阿里巴巴是一萬的級別。服務(wù)器是怎么分布的,仔細一看也很簡單,他們大部分是分擔(dān)瀏覽,剛才簡朝陽講的那部分,80%的部分是分擔(dān)紙圖(音譯)的。還有服務(wù)器就是應(yīng)對交易流程處理,還有服務(wù)器就是內(nèi)部系統(tǒng)使用。其實你到任何一個點上看一眼跟現(xiàn)場沒有太大區(qū)別。
電子商務(wù)技術(shù)發(fā)展的幾個階段
我這里總結(jié)了一下,我認為現(xiàn)在大部分的PC電商要經(jīng)歷技術(shù)發(fā)展的階段。很多人都覺得電商的技術(shù)是怎么怎么樣,現(xiàn)在電商里面很多人用了Windows架構(gòu),真正Java不是太多這個,并不是電商企業(yè)會怎么樣,有很多歷史原因造成。所以我們選擇Windows由于最初選型造成的,包括你了解很多電商,當(dāng)然現(xiàn)在冒出電商有些采用Java架構(gòu),但是Windows和Java之間對電商來說不是很簡單的東西,因為最終來講對我們的困惑是上市前授權(quán)的問題。這個問題在電商領(lǐng)域里面,他其實不太考慮這個事情。
對于電子商務(wù)來講面臨兩個挑戰(zhàn),前端來講我們稱為是大規(guī)模的Web訪問,他的互聯(lián)網(wǎng)系統(tǒng)跟你的SNS,跟你認為的門戶沒有什么區(qū)別,他要應(yīng)對的是一個瀏覽壓力。他應(yīng)對不是交易壓力,交易很多你企業(yè)就賺翻了。一天15萬單,一天15萬筆的交易,他應(yīng)對基本上是跟其他互聯(lián)網(wǎng)企業(yè)一樣,應(yīng)對一個互聯(lián)訪問壓力。門戶有門戶特點,電商有電商特點,他們之間區(qū)別主要是瀏覽數(shù)據(jù)變動性特點。資訊來講是不變的,發(fā)一個新聞稿是不變的。電子商務(wù)還有一種企業(yè),對于SNS來講他是需要實時的。其實電商是介于實時和靜態(tài)之間,最終你會發(fā)現(xiàn)你做技術(shù)架構(gòu)的時候你是融合了純靜態(tài)架構(gòu)和實時架構(gòu)中間狀態(tài)的東西。
對于電商很多挑戰(zhàn)是在后端,前端架構(gòu)本身是有非常多的成熟方案,大家討論互聯(lián)網(wǎng)架構(gòu)很長時間了,在網(wǎng)上很多文章,你隨便拿一篇過來做一下,大概這個問題基本可以解決。但是對于你真正的解決發(fā)現(xiàn)是你的后端,我們后端是普通用戶看得到的,那永遠是一個商城。真正這個訂單從下達到最終交付到用戶里面經(jīng)過無數(shù)個步驟。最終電子商務(wù)的競爭到一定規(guī)模之后是一個完全后端的競爭,已經(jīng)跟前端無關(guān)了。他的競爭最終到一定規(guī)模以后,可能到京東這個規(guī)模你會發(fā)現(xiàn)他們競爭完全是后端競爭。他的商城前端已經(jīng)變成再普通不過的事情,他的競爭完全是供應(yīng)鏈、物流、倉儲的競爭,你一個訂單下來之后多長時間送到用戶,以及你整個訂單處理流程里面跟用戶每一個接觸點,你的用戶體驗做的是否好,是這樣的競爭。對于你技術(shù)挑戰(zhàn)來講,你挑戰(zhàn)方向是有所變化的。
下面我們說技術(shù)發(fā)展階段,這是我個人一些觀察,因為我發(fā)現(xiàn)很多電子商務(wù)企業(yè)永遠逃不出一些階段性的發(fā)展,很多時候你會發(fā)現(xiàn)其實電商企業(yè)很多時候是很草根的。坦白講凡客最初發(fā)展的時候不能說他是多么優(yōu)秀的,最初發(fā)展是很艱難的。包括我最近觀察一些創(chuàng)業(yè)企業(yè),他們還是在經(jīng)歷那個階段,是很草根的。很多人可能看不上,這個階段特點就是生存,表現(xiàn)就是你沒有錢,你召不到人。不是說他們不想把系統(tǒng)做好,而系他們根本召不到人,很多人不愿意去很多人覺得這個企業(yè)發(fā)展不錯才會去。創(chuàng)業(yè)的原始時期,很多時候就是人少事多,簡單代碼三臺服務(wù)器。這個代碼寫的水平跟大學(xué)畢業(yè)兩年的基本水平差不多。代碼簡單堆砌蠻多。三臺服務(wù)器就是一臺Web、一臺服務(wù)器和其他一臺系統(tǒng)就跑起來了。他們要渡過非常艱難的時間,當(dāng)你解決了生存,論證了你生存可行性之后。
電商進入第二階段高速發(fā)展期,基本上在電商創(chuàng)業(yè)快的半年后開始,慢的一年后開始,高速發(fā)展期對技術(shù)的發(fā)展來講面臨一個問題就是你的系統(tǒng)改良和升級的問題。尤其說在這個階段當(dāng)你融到了錢的時候可以做一些事情,但是這個時候你的矛盾出來了。這時候是公司要求快步前進的時候,公司對于技術(shù)系統(tǒng)唯一的要求就是不要拖業(yè)務(wù)的后退,他沒有任何其他的要求。這是非常實際的一個問題,這跟很多人業(yè)務(wù)的技術(shù),我們稱為完美性是矛盾的。所以這時候?qū)τ诩夹g(shù)的壓力主要來自于你業(yè)務(wù)模式快速變化和你想做系統(tǒng)升級之間的矛盾,這個矛盾不僅來自于技術(shù)本身代碼升級的矛盾,還有項目技術(shù)和公司需求的矛盾,這是綜合事情,你要把握這個節(jié)奏,否則給公司將帶來很大的問題。
第三個階段稱為規(guī)模制勝期,當(dāng)你在公司業(yè)務(wù)模式相對比較成熟,你的競爭門檻建立之后,你的電子商務(wù)進入到你要以一個規(guī)模制勝,基本上京東、凡客以及當(dāng)當(dāng)這幾個企業(yè)是在這個階段,他已經(jīng)論證完了商業(yè)模式的成功,并且經(jīng)歷了高速發(fā)展,融到很多錢,這要建立一個不可逾越的規(guī)模門檻。這時候?qū)τ诤芏嗥髽I(yè)的技術(shù)來講,進入第三個時間就是技術(shù)的重構(gòu)期,這個時期你的技術(shù)會經(jīng)歷一個質(zhì)的飛躍。這時候你整個公司驅(qū)動會變成,這里我寫的是一個商品,沒有寫產(chǎn)品,我怕大家混淆,這里商品就是我賣的東西。這個時期對于技術(shù)來講,就是把握好這個時期,公司有錢有人,并且公司希望你把技術(shù)的架構(gòu)打?qū)崳瑸楣镜拈L治久安和未來得高速競爭建立一個非常優(yōu)良基礎(chǔ)。這時候把握好,就是真正的技術(shù)要做一個大調(diào)整和大改進的時期。
如果一個企業(yè)經(jīng)歷了這個時期,當(dāng)他進入亞馬遜這樣的水平的時候,可能中國的企業(yè)除了淘寶比較激進,其他的電子商務(wù)基本上沒有進入這個階段。當(dāng)你進入這個階段之后,發(fā)現(xiàn)真正變成技術(shù)驅(qū)動期。亞馬遜說自己是技術(shù)型企業(yè)的時候你會發(fā)現(xiàn)技術(shù)決定了一切,這個時候其實技術(shù)的角色才真正從核心變成從驅(qū)動。你的技術(shù)創(chuàng)新成為核心競爭力。
我說這四個時期并不是告訴大家,你每一個企業(yè)要經(jīng)歷這四個時期,當(dāng)你實際投入一個企業(yè),特別是投入一個真正的創(chuàng)業(yè)型的電子商務(wù)企業(yè)的時候,你很難逾越這四個期,你要面臨很多實際的問題,業(yè)務(wù)挑戰(zhàn)、人的挑戰(zhàn)、時間的挑戰(zhàn)、錢的挑戰(zhàn)。
我在后面會講具體技術(shù)架構(gòu)的東西,這是我們做技術(shù)或者是架構(gòu)過程中,我們在方法論上需要思考的問題。你要想清楚技術(shù)在整個公司中定位的問題。在相當(dāng)長的時間內(nèi)其實你會發(fā)現(xiàn)一個問題就是業(yè)務(wù)驅(qū)動技術(shù),這件事情怎么理解呢?基本上是業(yè)務(wù)人員追在你屁股上,讓你趕緊做完這個系統(tǒng),他們要發(fā)表。你在這個困境的時候發(fā)現(xiàn)自己很痛苦,既想做完美的系統(tǒng),公司不給你那么長時間。我們說你一定經(jīng)歷這個階段之后才會達到技術(shù)驅(qū)動業(yè)務(wù)這樣一個階段。如果你一開始定位就想說業(yè)務(wù)驅(qū)動技術(shù)的話,這個基本上就是太美好、太理想化的事情。
第二個事情就是在一個公司的技術(shù)架構(gòu)里面,你永遠就是以服務(wù)業(yè)務(wù)為第一宗旨,同時我們追求實用主義,你一切技術(shù)架構(gòu)是為了解決問題而服務(wù),解決問題就是為了更快、成本更低來解決問題服務(wù),除了這兩個問題其他不要追求。只有這樣才可以和公司的利益目標(biāo)達成一致。
第三個我們稱為永久追求安全第一、完美第二,這也是我們領(lǐng)導(dǎo)在很早之前就給技術(shù)下的一個目標(biāo)。你任何創(chuàng)新和完美性追求一定是建立在安全第一。安全這個詞有幾個方面含義,不是說你網(wǎng)站多么安全,會不會被黑客攻擊,而是理論和技術(shù)系統(tǒng)就是保障業(yè)務(wù)的基礎(chǔ)上做的。電子商務(wù)的系統(tǒng)基本上會分為規(guī)模復(fù)雜度和邏輯復(fù)雜度,這是兩種完全思維模式的東西,需要完全分別不同對待,不是簡單的對待。
再一個就是不理解生意,無法做系統(tǒng)。電商行業(yè)是一個特別明顯的一個行業(yè),你可能做其他的時候角度不一樣,其實凡客本質(zhì)上是一個零售,所有電商是一個賣東西的。賣東西就是做生意,你說你在網(wǎng)上賣東西和線下賣東西有區(qū)別嗎,沒有區(qū)別。你在網(wǎng)上賣東西也沒有比線下賣東西高級多少,很多在傳統(tǒng)零售業(yè)做很多年的人比網(wǎng)上賣東西的人聰明很多。比如說這個事情本身是一個生意,如果你不理解生意本身,你是無法規(guī)劃系統(tǒng),擬規(guī)畫系統(tǒng)一定是跟生意本質(zhì)是脫節(jié)的。當(dāng)你在做電子商務(wù)這件事情的時候首先要理解電子商務(wù)商業(yè)模式本身你要做什么事情,你是滿足什么樣的理由。
營銷,這個意思是這樣的,任何一個企業(yè)都有一些驅(qū)動力。這里并不是說技術(shù),其實電子商務(wù)至少從目前的自有品牌電子商務(wù)發(fā)展來講,他首先的驅(qū)動力來自于營銷和產(chǎn)品。比如說決定你這個事情成功與否的核心競爭力首先來自于營銷和產(chǎn)品。然后會過渡到產(chǎn)品和技術(shù),最后會過渡到技術(shù)為王。
后面我會大概分幾個步驟來大概說一下凡客走過的一些路,我的PPT里面并沒有向大家展示未來會怎么樣,我只是告訴大家凡客曾經(jīng)怎么樣。因為未來怎么樣其實大家沒有異議,因為你要真正做系統(tǒng)的時候很多階段你是跳不過的,我也特別希望大家可能會少走一些彎路,去做一些直接就進入到另外一個層次。
凡客從07年發(fā)展到現(xiàn)在做了三四年的時間,當(dāng)你面對應(yīng)對大規(guī)模放噸時候,對于電子商務(wù)來講首先第一個挑戰(zhàn)來自于數(shù)據(jù)庫,電子商務(wù)就是一個數(shù)據(jù)訪問。屬于你把數(shù)據(jù)庫搞定,基本上搞定電子商務(wù)的70、80%的事情。這也是為什么很多電子商務(wù)可能我們不說名字,他用小型機和Oracle扛了好幾年。他在不停請了全國最牛的Oracle的專家不停優(yōu)化他的Oracle和小型機,他初期發(fā)展非常多年,后來放棄了Oracle轉(zhuǎn)向MySQL這種分布式架構(gòu)的東西。電子商務(wù)如果你搞定數(shù)據(jù)庫基本上就搞定他80%業(yè)務(wù)。
07年的時候當(dāng)時做的非常差,做前端、后端兩個獨立數(shù)據(jù)庫,還用兩個雙向復(fù)制,當(dāng)時雙向復(fù)制技術(shù)不成熟,我們在08年初很短的幾個月內(nèi)就取消這種東西,因為這個東西非常痛苦。其實整個08年我們凡客基本上是在一臺集中數(shù)據(jù)庫上處理,08年你訪問凡客就是一臺數(shù)據(jù)庫。08年大家可能不記得凡客是什么樣了,因為他也沒有那么多。我們在07年底取消了兩個獨立數(shù)據(jù)庫之后,我們一下子發(fā)現(xiàn)我們的處理簡單化了,你再也不要考慮數(shù)據(jù)庫之間調(diào)用的問題,你會發(fā)現(xiàn)一個數(shù)據(jù)庫很美好。你也沒有精力搞一個負責(zé)架構(gòu),那時候大家都在忙著寫代碼,都在催著這個系統(tǒng)做起來。
09年的時候凡客經(jīng)歷了一個數(shù)據(jù)庫的初期階段,讀寫分離和橫向擴展以及一個縱向拆分的事情。這個事情很簡單,你隨便找一篇文章會介紹很詳細讀寫分離怎么做,基本上這些事情搞定,請一個EPA這個事情搞定。當(dāng)你把前臺是指網(wǎng)站,后臺可以理解為下完訂單之后所有系統(tǒng)的處理,當(dāng)你把前臺指數(shù)和后臺指數(shù)做完之后你的瓶頸也就沒有了。你橫向瀏覽和擴展能力,這時候也蠻簡單,就是這樣處理了。當(dāng)然你內(nèi)部訂單交易流程當(dāng)時也是在集中在可讀數(shù)據(jù)庫上,所有修改在可讀數(shù)據(jù)庫上,你所有只讀的訪問都已經(jīng)被分散到各個的只讀數(shù)據(jù)庫。09年我們完善了高可用東西。2010年我們凡客進行了縱向拆分,可能很多人已經(jīng)對我們比較熟悉了,成為了我們的用戶。我們邏輯進行縱向拆分,主要是為了分散中心數(shù)據(jù)庫數(shù)據(jù)復(fù)制壓力。其實數(shù)據(jù)復(fù)制這件事情搞來搞去一定會出現(xiàn)瓶頸,不管是MySQL、Oracle,如果你一味的依賴于數(shù)據(jù)庫復(fù)制,當(dāng)你發(fā)展到一定規(guī)模之后他總會遇到瓶頸。基本上就是因為你復(fù)制延遲,當(dāng)你主數(shù)據(jù)庫下面需要復(fù)制的機器越來越多,并且呈樹狀發(fā)展的時候肯定會從下級數(shù)據(jù)庫復(fù)制到下下級數(shù)據(jù)庫,但是你這個過程中也會面臨一些問題,你機房一定要分拆出去。比如你有些子系統(tǒng)發(fā)展非常龐大,一定要拆出去。數(shù)據(jù)庫復(fù)制變得越來越龐雜,也會變得越來越脆弱。單獨依賴于數(shù)據(jù)庫復(fù)制會遇到瓶頸的,這其實也代表你的企業(yè)發(fā)展也蠻不錯。
我們在2010年進行了這樣的縱向拆分,把用戶數(shù)據(jù)庫、訂單數(shù)據(jù)庫、產(chǎn)品數(shù)據(jù)庫拆分出來獨立讓它發(fā)展。核心數(shù)據(jù)庫只用來處理核心的訂單處理流程,很多比如說產(chǎn)品的修改,很多用戶修改之類,放到子系統(tǒng)當(dāng)中讓他自己發(fā)展。我們所有查詢都是使用各個系統(tǒng)自己的查詢數(shù)據(jù)庫。你會發(fā)現(xiàn)當(dāng)電子商務(wù)發(fā)展到一定階段之后,除了對數(shù)據(jù)讀取這個事情,除了用戶瀏覽壓力之外,還有一個壓力就是你內(nèi)部系統(tǒng)的訪問。什么意思?就是當(dāng)你業(yè)務(wù)發(fā)展到一定程度之后,你內(nèi)部所有部門,你財務(wù)、BI部門,已經(jīng)嚴重依賴于他的查詢。你發(fā)現(xiàn)這個系統(tǒng)出現(xiàn)問題很大一部分都來自于內(nèi)部查詢,有N個表。這時候你只能把查詢?nèi)映鋈,否則你的系統(tǒng)很快會宕掉,莫名發(fā)現(xiàn)這個系統(tǒng)慢了,是某個人提交一個查詢,可能是財務(wù)部門要查一個去年的什么數(shù)。
我們允許我們的外圍業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫獨立發(fā)展,規(guī)模復(fù)雜之后,要把你的外圍系統(tǒng),你的配送系統(tǒng)甚至是你的倉儲系統(tǒng)、客服管理系統(tǒng),這些東西你只能把外圍業(yè)務(wù)數(shù)據(jù)庫剝離出來,放到他外圍系統(tǒng)允許的地方發(fā)展。一定要把你核心的表規(guī)劃好,其他的就不要管了,也管不過來。下面說數(shù)據(jù)復(fù)制的邏輯復(fù)雜,剛才說到了。我們WMS系統(tǒng)數(shù)據(jù)庫功能性剝離,子系統(tǒng)復(fù)雜度增加不會影響到整體的負載。因為技術(shù)這件事發(fā)現(xiàn)很難控制到統(tǒng)一流程當(dāng)中,你一定要把他放到個子系統(tǒng)讓他獨立發(fā)展,這個事情才做的比較好。然后到一個系統(tǒng)、一個流程里面無論怎么優(yōu)化系統(tǒng)都優(yōu)化不好,可能優(yōu)化你是沒有辦法了。
我們面對數(shù)據(jù)庫復(fù)制的瓶頸以后,我們還是有一個主數(shù)據(jù)庫下面分出幾個子系統(tǒng)數(shù)據(jù)庫,然后各自完成各自復(fù)制,然后再增加。我們將來可能會取消掉主數(shù)據(jù)庫,會完全按照一個字系統(tǒng)的星狀連接擴展。
應(yīng)對問題的時候我們有兩種思路,一種就是拿錢買時間,另一種思路就是拿時間換錢。什么叫拿錢買時間,其實很多事情你是可以用錢來解決的。隨便舉個例子,他不用無F5,他自己用Linux搞一個負載均衡可以解決這個事情,有些公司就買F5,當(dāng)你用Linux做的時候就瞧不起做F5的,覺得他們很低級。
電子商務(wù)在我們眼里如果你的企業(yè)是高速發(fā)展的話,你要優(yōu)先考慮拿錢買時間,你大概買一個F5設(shè)備,然后處理大概也就三天的時間節(jié)可以解決你的問題。你去請個高手整一個Linux集群做負載,前景蠻好,但是需要很長時間,表面上節(jié)約幾十萬,公司角度上來講你是賠了,這個帳是不對的。大家能用錢買的買一些設(shè)備,你去用一些CDN的服務(wù),把機器放到好的機房里面。這些事情搞定之后也能解決你相當(dāng)一部分的問題。
再一個就是我們在下面有一些比較細節(jié)的東西,其實你會發(fā)現(xiàn)整個系統(tǒng)里面大概你只要讓你的系統(tǒng)具有橫向擴展能力,這個事情好辦了,我們有F5,這個事情就跑起來了。你有多少訪問沒有關(guān)系,我們加機器就可以了,機器很便宜的。你讓你的WEB服務(wù)器首先做成Sesson無關(guān),現(xiàn)在電子商務(wù)越來越多加入SNS,把一個事情搞得很復(fù)雜。其實電子商務(wù)就是純購物,特別簡單,瀏覽、購買,沒了。瀏覽是完全跟Sesson特別沒有關(guān)系的事情。購買可能多少有一些關(guān)系,國脈需要一個購物車之類的,最重要一點我們直接用COOKIE了。很多企業(yè)現(xiàn)在都改成服務(wù)端購物車,服務(wù)端里面你購物車存在你一個周期的一個地方。一方面提高體驗,購物流程里面你發(fā)現(xiàn)商務(wù)車完全不需要Sesson,跟它無關(guān)。
數(shù)據(jù)庫這個問題我說的電子商務(wù)行業(yè),不是指所有電子商務(wù)行業(yè),我說的是凡客這樣的電子商務(wù),因為淘寶是另外一件事情,是我們無法比的。你會發(fā)現(xiàn)他有幾個特點,他們基本上他的商品數(shù)據(jù)很少,特別是對自有品牌建設(shè),商品數(shù)據(jù)很少。凡客發(fā)展到現(xiàn)在,他的整個發(fā)展也沒有到100萬SQ。才幾十萬產(chǎn)品數(shù)據(jù),比如說你的用戶量,當(dāng)你用戶量到1000萬的時候,你的生意已經(jīng)非常不錯了。因為整個2010年凡客用戶量才1000萬。有時候你會發(fā)現(xiàn)這個事情,幾十萬的SQ,幾十萬商品數(shù),幾百萬用戶量這是多么小的數(shù)據(jù)。你各種各樣稀奇古怪查詢產(chǎn)生各種各樣的鎖導(dǎo)致你的性能急劇下降。你要解決這個鎖其中大部分,你的性能一下子上去了。
我們要理性對待面向?qū)ο蠛痛鎯^程。凡客至今也使用大量的存儲過程,我們從第一天開始就沒有告訴大家說你不要用存儲過程。因為存儲過程在很多時候解決很多問題的非常有效的一個方案。當(dāng)然我們在內(nèi)部的時候,你整個面向?qū)ο笠沧隽撕芏郃PI,我們基本上是大的對象,不是小的對象。基本上還是大的對象,我們需要對子系統(tǒng)進行這樣的劃分。
在我們整個技術(shù)邏輯當(dāng)中我們是以結(jié)構(gòu)類型是第一位的。讓你的業(yè)務(wù)內(nèi)部數(shù)據(jù)保留子系統(tǒng),總體一個原則就是讓消費者訪問的數(shù)據(jù)庫盡量的輕,只要沿著這個思路走下去,你就可以解決用戶體驗的問題。你會發(fā)現(xiàn)這個事情來自兩個方面,一個是消費者訪問,特別簡單,我剛才說的瀏覽、購買,是非常單純的行為。其實大部分的行為都是你內(nèi)部系統(tǒng)在做的,當(dāng)你把消費者訪問數(shù)據(jù)庫剝離足夠的輕,任何外圍系統(tǒng)干擾減少最低的時候發(fā)現(xiàn)這個事情特別簡單,電子商務(wù)就是賣東西這個事情特別簡單。
當(dāng)然還有一個,當(dāng)你在應(yīng)對大規(guī)模訪問的時候有一些系統(tǒng)穩(wěn)定性的追求,來自很多方面,來自網(wǎng)絡(luò)穩(wěn)定性、數(shù)據(jù)庫穩(wěn)定性。我們基本上把握兩個原則,第一我們需要消除任何單點故障。不光是網(wǎng)絡(luò)上單點故障,還有來自你呼叫中心里的單點故障,只要你有這個單點故障一定要消除掉。為什么?因為你電子商務(wù)每一秒都是錢,電子商務(wù)宕機一個小時,損失多少錢這個帳可以算出來的。很多時候特別是對電商來講你需要非常全面的技術(shù)系統(tǒng)監(jiān)控報警系統(tǒng)。有時候你會發(fā)現(xiàn)你如果通過技術(shù)系統(tǒng)的監(jiān)控去推導(dǎo)出你的技術(shù)發(fā)生問題已經(jīng)晚了。那時候基本上你公司損失已經(jīng)造成的時候才會反映到你的技術(shù)系統(tǒng)監(jiān)控當(dāng)中。當(dāng)然你也可以把技術(shù)系統(tǒng)監(jiān)控指標(biāo)設(shè)的非常低,CPU超過20就馬上報警,你也受不了天天給你報。基本上你除了技術(shù)系統(tǒng)監(jiān)控之外還要格外重視你的業(yè)務(wù)監(jiān)控,如果按照一個正常訪問,他在一個正常時間點每一分鐘至少有一張訂單。如果你發(fā)現(xiàn)有一段時間有兩分鐘之內(nèi)整個公司沒有一張訂單,不用問你的系統(tǒng)一定哪里有問題。這個問題不一定哪里猜得到,各數(shù)據(jù)庫有一個峰值,可能有各種各樣問題。但是所有業(yè)務(wù)系統(tǒng)來的報警是最準確,而且是預(yù)先報警。
我下面說一下我們認為的業(yè)務(wù)復(fù)雜度,大家在外面看電子商務(wù)行業(yè)的話,大家認為比較簡單,就是一個商城。其實在整個系統(tǒng)里邊他是有很多很多系統(tǒng)組成的。拿前端來講,商城是完成互聯(lián)網(wǎng)銷售的一個系統(tǒng),除了商城以外你會發(fā)現(xiàn)在整個系統(tǒng)里面還有很多系統(tǒng),比如說通用促銷系統(tǒng),電子商務(wù)做完之后每天他在不停做促銷,模式不停發(fā)生變化;旧想娮由虅(wù)在初期是靠促銷驅(qū)動的,而你促銷模式在不停的變,你需要一個系統(tǒng)來解決你促銷驅(qū)動的辦法。我們還需要有一個市場營銷支撐系統(tǒng),基于ROI市場推廣提供支撐。解決我哪些應(yīng)該花錢,哪些渠道不應(yīng)該花錢,一定要有一套ROI系統(tǒng)的數(shù)據(jù)分析的東西。還有我們網(wǎng)站聯(lián)盟系統(tǒng),在電商里面很大部分是以CPS,按照效果分成方式來做營銷推廣。你為了滿足你按照CPS系統(tǒng)做推廣發(fā)現(xiàn)需要有一套很完善提供給你CPS合作伙伴這樣一個平臺,可以查到從我這邊廣告效果怎么樣,可以分到多少錢。我們還需要有一個日志和用戶行為分析,這個系統(tǒng)主要是解決告訴我們用戶從哪里來的,后來去了哪里,為什么消失了。他整個流程衰減率是多少,我哪些需要優(yōu)化。
在你的后端里面其實電子商務(wù)系一個特別復(fù)雜的系統(tǒng),特別對自有品牌像凡客這樣的電商,他要比純渠道電商還要復(fù)雜。因為凡客還包括一個服裝公司,產(chǎn)品設(shè)計和制作公司。你會發(fā)現(xiàn)他里面有很多,其實還有很多子系統(tǒng)。凡客有一個很大的呼叫中心,他呼叫中心規(guī)模應(yīng)該在所有電商里面是最大,他完成電話銷售和退換貨,我這里寫了一個退換貨干預(yù),是一個流程。我們需要有WMS倉儲系統(tǒng),通俗一點就是未來進貨和倉儲管理還有補貨,就是提高這個效率。還有配送監(jiān)控系統(tǒng),就是為了解決如何最快送達這樣的還有供應(yīng)商采購流程系統(tǒng)銷售預(yù)測、補貨、生產(chǎn)監(jiān)控、合同管理。產(chǎn)品生命周期管理,從設(shè)計管理到量產(chǎn)、改進、下架這樣的過程,還需要非常復(fù)雜的財務(wù)結(jié)算系統(tǒng),把帳算清楚,應(yīng)該給我的合作伙伴分多少錢,給供應(yīng)商結(jié)多少款,這個系統(tǒng)聽起來很復(fù)雜,他是傳統(tǒng)的ERP,跟互聯(lián)網(wǎng)無關(guān),但是你必須要解決的。還有BI系統(tǒng)是通過數(shù)據(jù)驅(qū)動等等這樣的東西。
這里應(yīng)對邏輯復(fù)雜度,這個命題很難,如果我們講表面的東西,我要做SOA,子系統(tǒng)抽象是很虛的。任何一個人都知道要這樣做,但是你把這個事情落地其實很難,特別是你面對這么復(fù)雜的電子商務(wù)系統(tǒng)要把一個SOA系統(tǒng)落地不是那么簡單,你要有很多很多業(yè)務(wù),他是一個經(jīng)驗系統(tǒng)。你首先是一個業(yè)務(wù)專家才可以搞,如果米只是一個技術(shù)專家這個事情基本不靠譜,這個事情你想都別想。
凡客也在走SOA之路,也在階段當(dāng)中,我們首先會按照業(yè)務(wù)自制原罪進行劃分子系統(tǒng)。業(yè)務(wù)資質(zhì)可以理解為有一定業(yè)務(wù)邊界的子系統(tǒng)。業(yè)務(wù)邊界可以按照自己的理解去做,退換貨是一個子系統(tǒng),可以把它拿出來作為SOA處理。我們在SOA內(nèi)部保留了傳統(tǒng)架構(gòu),我們在外層把他做了劃分。這里面有一個原則就是拒絕分布式事物。所有一旦涉及到跨系統(tǒng)事物,我們回用數(shù)據(jù)庫及方式消除。我SOA背后并不是對對一個單獨數(shù)據(jù)庫。我們會把訂單、用戶、產(chǎn)品作為子系統(tǒng)發(fā)展出來。
我們在解決邏輯復(fù)雜度的時候會發(fā)現(xiàn),尤其是解決一些問題的時候發(fā)現(xiàn),其實我們通常有一個問題是沒有技術(shù)解決不了的問題,無非是問題高低的問題。其實你很多問題從人、流程、工具軟件角度思考和努力,有時候不需要技術(shù)參與。你稍微改變一下流程,技術(shù)就不需要解決了,技術(shù)解決的復(fù)雜度被大大降低。很多問題是偽問題,不是真正的問題。這個問題要真正做的時候才可以思考。你需要考慮你的技術(shù)成本ROI,投入產(chǎn)出的問題。你一定要搞清楚B2C變化的系統(tǒng)是怎么樣的,B2C系統(tǒng)本身是布置變的,有些東西是每天都在變化,不變東西做好之后他變換周期很長,每年調(diào)整一次。舉個例子,你商城購物流程變化很少。但是有一些業(yè)務(wù)是每天都在變化,比如我營銷推廣模式每天在變。還有一個東西會變就是你的訂單處理會變,我管理精細化和我公司業(yè)務(wù)部門成長,我每天都在修改我訂單處理流程。原來我有一個減貨、出庫就完了,中間沒有任何監(jiān)控,因為他一天處理幾百單不需要監(jiān)控。當(dāng)你隨著企業(yè)規(guī)模復(fù)雜之后,今天加一個環(huán)節(jié),每天加一個環(huán)節(jié),客戶不停要求你,訂單狀態(tài)不停在增加。訂單這個主線來看,電子商務(wù)是以訂單為中心的任務(wù)處理,他是個工作流。
對于我們的營銷推廣來講,我們可能要抽出一個模型出來,我需要在內(nèi)部做抽象,我把來源監(jiān)控定義為Source,我把我所有營銷推廣渠道進行一個抽象化,我把CPS作為一類,門戶作為一類,大渠道下面再分。新浪門戶做頁面,頁面每一個廣告位作為一個Source值,還跟你每一期的廣告素材形成一個唯一的ID。當(dāng)你把整個模型抽象出來之后,會發(fā)現(xiàn)不管你的營銷推廣和你的媒體投放如何變化,你統(tǒng)統(tǒng)不用管,讓他自己定義就可以。
比如我們的訂單處理,我們的流程,如果看成是一個訂單處理的任務(wù)隊列的話,你在后面,如果你寫這樣一個核心的系統(tǒng)的話,你會發(fā)現(xiàn)你增加任何的一個訂單狀態(tài)也是非常簡單的事情,你只需要增加一個任務(wù)隊列就可以了。因為你的任務(wù)隊列你已經(jīng)抽象好了,你的任務(wù)隊列允許批處理,允許分析不同的人,允許監(jiān)控你每一個任務(wù)分配了誰,你的任務(wù)隊列處理的效率怎么樣。這個隊列處理完了要交付給下面哪個隊列。你會發(fā)現(xiàn)訂單流程無論如何變化他是一樣的。他是增加一波人處理這樣的事情,首先請求一批訂單任務(wù)然后拿過來,然后分配給不同人處理,訂單任務(wù)發(fā)生改變,整個批處理完了交付下一個環(huán)節(jié)。你的客戶、倉庫、配送也是這樣的。
比如我的倉儲系統(tǒng),你做的時候發(fā)現(xiàn)里面很大挑戰(zhàn),你原來有一萬平方米擴展到三萬平方米,原來只有一個庫后來分成整庫和零庫。原來有北京庫,發(fā)展到全國50多個庫。我們作為最小單元的抽象,管理到每一個貨架上的每一個小格。我們所有倉儲視圖都有某一個貨架的小格形成的。無論你的倉儲模式如何條件,就是小格的排隊組合也好。當(dāng)你做了這樣抽象之后你的庫存管理模式很簡單,讓他自己定義好了。我定義倉庫或者是功能區(qū)或者是定義減貨區(qū)、待處理區(qū),返廠區(qū)就特別簡單。還有一個就是我們可以把BI這部分查詢?nèi)蝿?wù)交給業(yè)務(wù)部門自己做,你的技術(shù)就不用管了,你可以專注做你自己的事情。
我們解決整個邏輯復(fù)雜度的時候,我沒有覺得他有完美的架構(gòu)和統(tǒng)一的東西結(jié)合很好,一定要適合你企業(yè)本身的東西,你去做抽象,你去做處理,個事情可以解決掉。
這里是講凡客為什么成功,很多人疑惑。其實任何成功都是商業(yè)模式成功,不管什么因素在里面發(fā)揮什么作用,商業(yè)模式成功是最終的成功。任何企業(yè)的成功背后有很多綜合性因素來決定,當(dāng)你透過技術(shù)看這些事情背后決定你命運的事情往往不是你在干這件事情,而是整個大環(huán)境決定你的成功是必然、也是偶然。整個經(jīng)濟大環(huán)境,營收環(huán)境,互聯(lián)網(wǎng)發(fā)展環(huán)境等等東西。舉個簡單例子,2011年大家談的最多就是媒體價格大幅增長,很多電子商務(wù)企業(yè)就宣布我不做推廣了。的確是這樣,包括很多新進入電商被搞得沒有辦法。很多時候你會發(fā)現(xiàn)凡客最初的時候也是沒有人干的時候成本特別低,當(dāng)有人干的時候成本上來了。天時地利人和是很重要的。凡客之所以能發(fā)展這么大,這個行業(yè)有關(guān)系。你選擇賣書、賣服裝、賣電器能做多大是不一樣的,你的選擇決定了你的生意的格局,是也一些內(nèi)在的東西。
你最終你的傳統(tǒng)零售業(yè)里面你選擇哪塊蛋糕就決定你的生意做成什么樣子。凡客提出人民時尚,他不是一個口號,其實真的是一個定位。人民這個詞可以理解為人民需要性價比比較高的事情,適合人民大眾,把中國優(yōu)質(zhì)制造資源以及優(yōu)質(zhì)時尚資源以非常便宜的東西,性價比高的價格賣給用戶,決定了他可以做多大規(guī)模的事情。還有一個就是你會發(fā)現(xiàn)凡客現(xiàn)在的成功是用戶體驗的成功,很大一部分是技術(shù)決定了。同時有電子商務(wù)20、30個環(huán)節(jié)合力構(gòu)成的。很多人說凡客和京東的貨送的很快,他們?yōu)槭裁聪矚g我們,就是因為他們的用戶體驗比較高。最終來講,別人選擇你,是你跟每一個用戶接觸點上是用戶完美的體驗造成的。
還有人說凡客廣告太多,虧損,這個模式長久不了,不應(yīng)該這樣做,你們成功來自于你們投很多廣告,有錢。這只是一個表象,最終這個事情是有拐點的,成本費用有拐點。電子商務(wù)以后還是老用戶競爭的事情,老用戶對老用戶的二次營銷以及老用戶這些維護會讓你整個企業(yè)費用控制以及整個成本會有很快下降。有一個曲線拐點,達到個拐點之后會是一個好的生意。初期來講廣告也是一個必要的部分。我簡單說這些,謝謝大家。
TechWeb