5月24日,網(wǎng)易攜手中睿在深圳益田威斯汀酒店舉辦了“云服務(wù)、大數(shù)據(jù)應(yīng)用實(shí)例&高效研發(fā)管理---軟件研發(fā)沙龍”,來(lái)自深圳五百?gòu)?qiáng)企業(yè)的信息技術(shù)部骨干,政府、事業(yè)單位的相關(guān)IT領(lǐng)導(dǎo),金融業(yè)的IT精英等近百位技術(shù)人員參與了本次沙龍的學(xué)習(xí)。
首先,網(wǎng)易數(shù)據(jù)科學(xué)中心技術(shù)總監(jiān)余利華從以下三方面分享了網(wǎng)易大數(shù)據(jù)實(shí)踐:
一、網(wǎng)易在大數(shù)據(jù)方面做了哪些事情;
二、網(wǎng)易大數(shù)據(jù)建設(shè)的思路;
三、網(wǎng)易在大數(shù)據(jù)方面的2個(gè)工具。
網(wǎng)易在大數(shù)據(jù)方面的工作
網(wǎng)易在大數(shù)據(jù)方面的定位是充分利用數(shù)據(jù)統(tǒng)計(jì)分析挖掘價(jià)值,大力推進(jìn)服務(wù)智能化和決策科學(xué)化,全面提升產(chǎn)品的規(guī)劃運(yùn)營(yíng)水平和服務(wù)質(zhì)量。
服務(wù)智能化
余利華以網(wǎng)易云音樂(lè)為例,說(shuō)明了服務(wù)智能化的具體含義。網(wǎng)易云音樂(lè)在推出的時(shí)候市面上已經(jīng)有了數(shù)個(gè)億級(jí)用戶的音樂(lè)產(chǎn)品,競(jìng)爭(zhēng)非常激烈,之所以能夠脫穎而出,就是因?yàn)榫W(wǎng)易云音樂(lè)從一開始就將個(gè)性化推薦作為核心功能來(lái)做。音樂(lè)并不像其它文本類的內(nèi)容,用戶不太容易表達(dá)自己的搜索需求。我們可能都有過(guò)類似的經(jīng)歷,偶然聽到的一首好音樂(lè),再想去聽的時(shí)候卻找不到了,網(wǎng)易云音樂(lè)能夠用個(gè)性化推薦幫你找到這些音樂(lè),幫助用戶發(fā)現(xiàn)一些意想不到的好歌曲,給你帶來(lái)驚喜。目前,網(wǎng)易云音樂(lè)從APP首頁(yè)到歌單、歌曲、私人電臺(tái)等場(chǎng)景已經(jīng)全面實(shí)現(xiàn)了個(gè)性化,是一個(gè)個(gè)性化推薦深入到骨髓的產(chǎn)品。
推薦是個(gè)系統(tǒng)工程,不僅僅是算法的問(wèn)題,產(chǎn)品和算法必須緊密配合。云音樂(lè)通過(guò)UGC歌單和個(gè)性化推薦,幫助用戶更好的發(fā)現(xiàn)音樂(lè)和傳播音樂(lè),大大的提升曲庫(kù)利用率。
個(gè)性化推薦的原理是找到人與物之間的關(guān)聯(lián),在合適的場(chǎng)景下把合適的物品推薦給合適的人。 這里的物,可以是新聞,音樂(lè),理財(cái)產(chǎn)品等等。把人和物關(guān)聯(lián)起來(lái)的方式通常有三種:
通過(guò)人關(guān)聯(lián),與你相同喜好的人喜歡的物品,或你的朋友推薦的物品,你通常都會(huì)喜歡;
通過(guò)物關(guān)聯(lián),因?yàn)槟谭酆湍虿际怯嘘P(guān)聯(lián)的,如果用戶買過(guò)尿布,那么推薦奶粉給他;
通過(guò)特征關(guān)聯(lián),搖滾是音樂(lè)的一個(gè)特征,如果一個(gè)人喜歡搖滾,那么推薦搖滾歌曲給他。
通過(guò)關(guān)聯(lián),我們就召回了很多候選商品,它們都是有可能和人發(fā)生聯(lián)系的。在召回之后,要進(jìn)行過(guò)濾,比如你在最近七天買過(guò)一個(gè)商品,通常會(huì)將這個(gè)商品過(guò)濾掉。過(guò)濾之后,就得到一個(gè)候選商品的列表,這時(shí)候要對(duì)商品進(jìn)行一個(gè)多維度的打分,把你最可能喜歡的商品推薦給你,這就是一個(gè)基本的推薦過(guò)程。
類似服務(wù)智能化的應(yīng)用場(chǎng)景還有很多,比如郵箱反垃圾,客服機(jī)器人,反作弊,金融反欺詐,視頻鑒黃等。
服務(wù)智能化通常的工作流程是這樣的:
- 形成想法,想法可能來(lái)源于數(shù)據(jù)的分析,然后尋找特征,增加場(chǎng)景;
- 從特征中設(shè)計(jì)方案,引入算法,調(diào)整方案,進(jìn)行模型的訓(xùn)練;
- 效果驗(yàn)證:一般分為離線評(píng)估,線上A/B測(cè)試兩類,只有發(fā)現(xiàn)效果好的時(shí)候,才真正讓這個(gè)算法上線。
決策科學(xué)化
決策科學(xué)化,是指讓數(shù)據(jù)來(lái)輔助決策,比如投放廣告的過(guò)程中我們通常會(huì)這樣做:
- 找到目標(biāo)用戶:用戶多維度分析,確定投放目標(biāo)用戶群體;
- 分析投放目標(biāo):基于投放群體,篩選投放渠道;
- 監(jiān)控投放數(shù)據(jù):實(shí)時(shí)監(jiān)控投放數(shù)據(jù),快速調(diào)整投放策略;
- 構(gòu)建用戶質(zhì)量評(píng)估模型,評(píng)價(jià)用戶質(zhì)量;
- 評(píng)估投放效果:ROI評(píng)估,發(fā)現(xiàn)更優(yōu)質(zhì)的渠道。
決策科學(xué)化還有很多應(yīng)用場(chǎng)景,比如電商定價(jià)、促銷設(shè)計(jì)、功能上線、留存分析等。
決策科學(xué)化的工作流程:
- 度量:部署實(shí)施數(shù)據(jù)采集,實(shí)施數(shù)據(jù)轉(zhuǎn)化與加工,建立度量指標(biāo)體系;
- 洞察:數(shù)據(jù)探索、建模、假設(shè)檢驗(yàn)、用戶研究、形成理論等;
- 干預(yù):設(shè)計(jì)方案、實(shí)施實(shí)驗(yàn)、評(píng)估效果、推廣應(yīng)用等。
網(wǎng)易大數(shù)據(jù)建設(shè)思路:一個(gè)中心,兩個(gè)平臺(tái)
做好大數(shù)據(jù)業(yè)務(wù)需要很多東西,比如你要有很好的想法,比如你的算法工程師要很厲害,懂得很多算法,但一個(gè)成功的大數(shù)據(jù)應(yīng)用關(guān)鍵在于兩點(diǎn):有數(shù)據(jù)+快速改進(jìn)。
聽上去很簡(jiǎn)單,但在實(shí)際開發(fā)過(guò)程中,還是面臨很多問(wèn)題:
- 數(shù)據(jù)孤島的問(wèn)題,你會(huì)發(fā)現(xiàn)你的數(shù)據(jù)散落在各個(gè)地方,可能在業(yè)務(wù)中,也可能在你服務(wù)器中的日志中,想用數(shù)據(jù)的時(shí)候找不到;還有一種情況是公司各個(gè)部門間的數(shù)據(jù)不共享;
- 數(shù)據(jù)資源缺乏管理,由于數(shù)據(jù)的規(guī)模很大,再加上人員的流動(dòng),沒(méi)有一個(gè)人完全清楚所有數(shù)據(jù)表中每個(gè)指標(biāo)的含義,導(dǎo)致數(shù)據(jù)的使用效果不好;
- 數(shù)據(jù)開發(fā)的門檻很高:首先是知識(shí)的門檻,專業(yè)的數(shù)據(jù)開發(fā)人員很難招到,他們要學(xué)習(xí)Hadoop、Spark等各種相關(guān)技術(shù);另外,使用上也很麻煩,要把這些開源的東西放在一起,組成一個(gè)解決方案。
- 分析流程長(zhǎng),涉及的人員多,決策周期長(zhǎng)。
網(wǎng)易的解決思路是一個(gè)中心,兩個(gè)平臺(tái)。一個(gè)中心是指數(shù)據(jù)資源中心,數(shù)據(jù)資源中心會(huì)集成所有有價(jià)值的數(shù)據(jù),進(jìn)行數(shù)據(jù)的融合和深加工,目的是打破各個(gè)產(chǎn)品的數(shù)據(jù)分界和壁壘,提高利用效率;兩個(gè)平臺(tái)分別是大數(shù)據(jù)管理與應(yīng)用開發(fā)平臺(tái)(猛犸)和數(shù)據(jù)分析平臺(tái)(有數(shù))。其中,猛犸會(huì)存儲(chǔ)和管理整個(gè)公司級(jí)別的數(shù)據(jù)資源,提供高效、易用的大數(shù)據(jù)分析挖掘應(yīng)用開發(fā)環(huán)境,提供大規(guī)模查詢和計(jì)算能力;有數(shù)用來(lái)支撐產(chǎn)品分析與決策,產(chǎn)品營(yíng)銷推廣。通過(guò)數(shù)據(jù)資源中心的建設(shè),可以使得所有數(shù)據(jù)都在平臺(tái)上,想用可以直接去用,降低了門檻。
大數(shù)據(jù)管理和應(yīng)用開發(fā)平臺(tái)
接下來(lái),余利華介紹了網(wǎng)易大數(shù)據(jù)管理和應(yīng)用開發(fā)平臺(tái)猛犸,整個(gè)大數(shù)據(jù)平臺(tái)的建設(shè)思路主要是滿足效率快的需求,僅用開源的Hadoop是不夠的。把Hadoop引進(jìn)來(lái)經(jīng)過(guò)改造成為適合我們自己用的體系化的大數(shù)據(jù)平臺(tái),所謂體系化,是指整個(gè)平臺(tái)分為以下幾層:
最底層是元數(shù)據(jù)、數(shù)據(jù)湖和資源調(diào)度。表定義、權(quán)限和數(shù)據(jù)血緣關(guān)系都屬于元數(shù)據(jù)的范疇。數(shù)據(jù)湖就是統(tǒng)一存儲(chǔ)數(shù)據(jù)的,通常是HDFS;資源調(diào)度其實(shí)就是分配CPU、內(nèi)存和磁盤這些資源。我們會(huì)把整個(gè)數(shù)據(jù)資源都放在數(shù)據(jù)湖中,然后用元數(shù)據(jù)去描述它,這樣就建立了一個(gè)企業(yè)級(jí)的數(shù)據(jù)倉(cāng)庫(kù),統(tǒng)一去管理數(shù)據(jù)。
再上一層是計(jì)算層,包括實(shí)時(shí)計(jì)算、離線計(jì)算、Adhoc查詢等類型,各種引擎是有機(jī)整合的,就是在數(shù)據(jù)湖中的同一份數(shù)據(jù),既可以用Hive來(lái)查,也可以用Spark來(lái)查,還可以用Impala來(lái)查,而且各引擎在權(quán)限控制上也保持一致。另外,離線計(jì)算和實(shí)時(shí)計(jì)算也是融合的,一個(gè)實(shí)時(shí)計(jì)算的任務(wù)可能去查離線計(jì)算的表,實(shí)時(shí)計(jì)算的表也可能會(huì)歸檔為離線計(jì)算的表。
再上一層是用戶的使用界面,包含一個(gè)可視化的開發(fā)界面和統(tǒng)一的SQL語(yǔ)言開發(fā)。
最上層是各種應(yīng)用,比如考拉、嚴(yán)選、云音樂(lè)等。
上圖是網(wǎng)易猛犸數(shù)據(jù)接入的界面,只要在界面上配置好數(shù)據(jù)源和數(shù)據(jù)目的地,就能把數(shù)據(jù)定期地導(dǎo)入進(jìn)來(lái),所有的操作都是通過(guò)表單實(shí)現(xiàn)的,另外還提供了基于SQL的ETL的功能。在數(shù)據(jù)資源管理方面,網(wǎng)易猛犸提供了主題管理,一個(gè)產(chǎn)品里面可能分好多主題,比如用戶一個(gè)主題,商品一個(gè)主題,訂單又是一個(gè)主題,我們提供了主題管理的功能,使得業(yè)務(wù)能夠很方便地梳理他的數(shù)據(jù)倉(cāng)庫(kù)。另外提供了數(shù)據(jù)血緣的能力,使得任何一個(gè)數(shù)據(jù)的來(lái)龍去脈都非常清楚,知道這個(gè)數(shù)據(jù)是哪個(gè)任務(wù)計(jì)算出來(lái)的,依賴于前面的哪個(gè)數(shù)據(jù)。提供了拖拽式的可視化的開發(fā)環(huán)境,而且提供SQL化的開發(fā),提升效率。
大數(shù)據(jù)可視化分析平臺(tái)
最后,余利華介紹了企業(yè)級(jí)大數(shù)據(jù)可視化分析平臺(tái)網(wǎng)易有數(shù)。網(wǎng)易有數(shù)的特點(diǎn)是安全、高性能和敏捷。報(bào)表的安全性是大家都關(guān)心的問(wèn)題,我們會(huì)提供行列級(jí)的權(quán)限控制;在計(jì)算方面,拖拽報(bào)表的時(shí)候性能是非常關(guān)鍵的,有數(shù)中采用了MPP的引擎做優(yōu)化,使得拖拽可以秒間完成。
接下來(lái),奇碩CTO殷世林作為網(wǎng)易云的客戶,分享了奇碩數(shù)據(jù)服務(wù)在大數(shù)據(jù)平臺(tái)中的實(shí)戰(zhàn),殷世林從技術(shù)的角度介紹了奇碩的大數(shù)據(jù)平臺(tái)和架構(gòu),分享了奇碩大數(shù)據(jù)平臺(tái)和網(wǎng)易云的合作。下周會(huì)有文章單獨(dú)分享殷世林的演講內(nèi)容。
基于微服務(wù)的應(yīng)用架構(gòu)設(shè)計(jì)實(shí)踐
下午,網(wǎng)易云首席解決方案架構(gòu)師劉超帶來(lái)了演講“基于微服務(wù)的應(yīng)用架構(gòu)設(shè)計(jì)實(shí)踐”,分別從產(chǎn)品和最佳實(shí)踐的角度介紹了網(wǎng)易云在微服務(wù)化方面的經(jīng)驗(yàn)。
目前,網(wǎng)易內(nèi)部95%的產(chǎn)品都已經(jīng)在使用網(wǎng)易云,上圖是網(wǎng)易云整個(gè)的產(chǎn)品架構(gòu)。最底層的云主機(jī)、云網(wǎng)絡(luò)和云硬盤是比較通用的服務(wù),目前主流的云服務(wù)商都會(huì)提供;右上方的平臺(tái)服務(wù),經(jīng)歷了網(wǎng)易內(nèi)部產(chǎn)品長(zhǎng)時(shí)間的考驗(yàn),才開放出來(lái),尤其是對(duì)象存儲(chǔ)服務(wù)僅支持郵箱產(chǎn)品就已經(jīng)積累了100PB以上的數(shù)據(jù),而且迄今為止都是零丟失;最左邊是容器服務(wù)和工具鏈,工具鏈?zhǔn)轻槍?duì)容器和微服務(wù)的,網(wǎng)易云相信容器在整個(gè)開發(fā)、部署和彈性擴(kuò)展的過(guò)程中有著革命性的技術(shù),是一個(gè)非常好的云計(jì)算的切入點(diǎn)。
Why 微服務(wù)?
接下來(lái),劉超以運(yùn)輸過(guò)程中的集裝箱為例,介紹了容器的概念,核心是封裝和標(biāo)準(zhǔn),將所有的配置文件、用戶創(chuàng)建、路徑創(chuàng)建、權(quán)限修改打包到標(biāo)準(zhǔn)的容器鏡像中,只要基于這個(gè)鏡像創(chuàng)建出來(lái)的容器就都是一樣的。
容器改變了應(yīng)用的管理和部署方式,從編碼開始,鏡像是貫穿整個(gè)過(guò)程的標(biāo)準(zhǔn)交付物,最終保證發(fā)布時(shí)測(cè)試、聯(lián)調(diào)和線上環(huán)境的一致性,將整個(gè)過(guò)程打通了。其中編排想表達(dá)的思想是希望管理容器相互間的關(guān)系,網(wǎng)易云通過(guò)Kubernetes實(shí)現(xiàn)容器的編排。
就像漫畫《當(dāng)一個(gè)項(xiàng)目里的代碼超過(guò)一百萬(wàn)行……》所描述的場(chǎng)景,隨著應(yīng)用的業(yè)務(wù)越來(lái)越大,無(wú)論從代碼層面還是組織架構(gòu)層面,代碼的修改都會(huì)變得很難,甚至每次發(fā)布都要像行軍打仗一樣,統(tǒng)一由最高的領(lǐng)導(dǎo)來(lái)協(xié)調(diào)這件事情,整個(gè)迭代速度是非常慢的。如果拆分成微服務(wù),只要服務(wù)間的接口定義相對(duì)松耦合并標(biāo)準(zhǔn)化,每個(gè)模塊都可以獨(dú)立地進(jìn)行開發(fā)和上線。理想的情況是,每個(gè)微服務(wù)團(tuán)隊(duì)都在5-9個(gè)人的規(guī)模,相互間的溝通非常方便,迭代速度會(huì)快很多。
容器+Kubernetes的平臺(tái)一個(gè)非常大的好處是,一個(gè)容器掛了,可以在秒級(jí)恢復(fù),如果再配合負(fù)載均衡,對(duì)你的業(yè)務(wù)幾乎是沒(méi)有任何影響的,對(duì)客戶來(lái)講體驗(yàn)是非常好的。
總體來(lái)說(shuō),微服務(wù)化的收益是每天的更新速度和并發(fā)的訪問(wèn)速度在用戶規(guī)模相對(duì)比較大的情況下,有一個(gè)很大的提升。
網(wǎng)易云容器服務(wù)優(yōu)勢(shì)
網(wǎng)易云的容器服務(wù)為了支撐內(nèi)部應(yīng)用,做了很多改進(jìn),來(lái)克服當(dāng)前容器服務(wù)的缺陷,并提升容器服務(wù)的性能,這也是和其它同類服務(wù)相比網(wǎng)易云容器服務(wù)的特色。
安全層面:由于容器是共享內(nèi)核,所以經(jīng)常被詬病不夠安全,網(wǎng)易云的策略是在不同租戶間實(shí)現(xiàn)主機(jī)隔離、內(nèi)核隔離和二層虛擬網(wǎng)絡(luò)的隔離。
性能的改進(jìn):當(dāng)前主流的容器平臺(tái)多會(huì)采取左邊的方式,容器間的聯(lián)通又增加了一層虛擬成本,非常影響網(wǎng)絡(luò)性能。網(wǎng)易云采取右面的方式,會(huì)把虛擬機(jī)的網(wǎng)卡打到容器中,容器看到的網(wǎng)絡(luò)和虛擬機(jī)看到的網(wǎng)絡(luò)是同一個(gè)二層網(wǎng)絡(luò),沒(méi)有二次虛擬化;并且網(wǎng)易云的虛擬機(jī)二層網(wǎng)絡(luò)是進(jìn)行過(guò)高并發(fā)改進(jìn)的,可以保證容器間交互的高吞吐量;同時(shí)也方便容器和虛擬機(jī)的混合部署。
簡(jiǎn)化運(yùn)維:左邊是一般容器服務(wù)的模式,用戶可以在上面一鍵創(chuàng)建容器平臺(tái),但實(shí)際用起來(lái)就發(fā)現(xiàn)還有很多問(wèn)題需要解決,尤其是容器平臺(tái)出現(xiàn)問(wèn)題,或者需要升級(jí)和運(yùn)維的時(shí)候,要自己去學(xué)Kubernetes或Mesos,相當(dāng)于云平臺(tái)又把很多工作交還給了用戶。網(wǎng)易云采取右面的方式,紅色的部分都是網(wǎng)易云來(lái)負(fù)責(zé),在IaaS上面有一個(gè)統(tǒng)一的Kubernetes調(diào)度系統(tǒng),用戶只需要關(guān)心容器的部分,并且用戶創(chuàng)建的應(yīng)用依舊是主機(jī)隔離的。
工具鏈的完善:網(wǎng)易云提供了APM,監(jiān)控,日志ELK的工具鏈。
網(wǎng)易云在幫助客戶實(shí)現(xiàn)微服務(wù)化,持續(xù)集成,DevOps的時(shí)候,逐漸發(fā)現(xiàn)客戶做不到最佳實(shí)踐往往并不是工具的問(wèn)題,而是缺乏知識(shí)輸出和經(jīng)驗(yàn)分享的來(lái)源。網(wǎng)易云有非常豐富的微服務(wù)化實(shí)戰(zhàn)經(jīng)驗(yàn),比如網(wǎng)易考拉海購(gòu)就是從一個(gè)母嬰產(chǎn)品的單體應(yīng)用,逐漸發(fā)展成為跨境電商的第一品牌,目前整個(gè)架構(gòu)中有600+的容器支撐業(yè)務(wù)邏輯,每天更新上線達(dá)700次以上。
十二原則和微服務(wù)化實(shí)踐有著異曲同工之處,最后,劉超介紹了云原生應(yīng)用的十二原則:
1.在線上部署的任何一套環(huán)境,在代碼中都應(yīng)該有相應(yīng)的代碼進(jìn)行控制,你在任何環(huán)境中的任何操作,在代碼中都有追蹤,能夠追根溯源;
2.把微服務(wù)間的依賴,包括API、接口、中間產(chǎn)生的DTO等清晰地暴露出來(lái);
3.環(huán)境變量盡量存儲(chǔ)在environment中,通用的環(huán)境變量打在鏡像中;
4.后端服務(wù)當(dāng)做附加資源,盡量使用PaaS服務(wù),不要花太多時(shí)間在PaaS平臺(tái)上;
5.嚴(yán)格區(qū)分編譯和運(yùn)行的環(huán)境;
6.盡量使用無(wú)狀態(tài)應(yīng)用;
7.通過(guò)端口綁定提供服務(wù);
8.通過(guò)進(jìn)程模型進(jìn)行擴(kuò)展;
9.快速啟動(dòng)和優(yōu)雅終止可最大化健壯性;
10.盡可能的保持開發(fā)、預(yù)發(fā)布和線上環(huán)境的一致性;
11.把日志當(dāng)做事件流;
12.后臺(tái)管理任務(wù)當(dāng)做一次性進(jìn)程運(yùn)行。
活動(dòng)最后,中睿信息創(chuàng)始人鹿傳明向大家傳授了“從0到1打造高效的軟件研發(fā)團(tuán)隊(duì)”的經(jīng)驗(yàn)。鹿傳明首先從研發(fā)項(xiàng)目管理的本質(zhì)出發(fā),認(rèn)為不以提升質(zhì)量與生產(chǎn)率的項(xiàng)目管理就是形式主義,再詳細(xì)講解了個(gè)人投入度與團(tuán)隊(duì)投入度的概念,量化講述構(gòu)建高效團(tuán)隊(duì)。接著詳細(xì)對(duì)比論證了傳統(tǒng)的重量級(jí)研發(fā)項(xiàng)目管理體系與輕量級(jí)的管理體系如Scrum的特點(diǎn)與適用性。最后鹿傳明詳細(xì)介紹了符合中國(guó)國(guó)情的iScrum項(xiàng)目管理方法在企業(yè)中的應(yīng)用案例。