4月21至23日,由InfoQ主辦的頂級(jí)技術(shù)盛會(huì)QCon全球軟件開發(fā)大會(huì)在北京開幕,本屆大會(huì)吸引了100余位國(guó)內(nèi)外技術(shù)專家參加分享,包括亞馬遜、惠普、阿里巴巴、華為等國(guó)內(nèi)外知名科技企業(yè)。其中在容器云領(lǐng)域脫穎而出的網(wǎng)易蜂巢也受到邀請(qǐng),網(wǎng)易杭州研究院云計(jì)算平臺(tái)產(chǎn)品部總監(jiān)陳諤從技術(shù)角度分享了構(gòu)建高效開發(fā)容器云平臺(tái)的實(shí)踐經(jīng)驗(yàn)。
基于在云計(jì)算領(lǐng)域的深厚積淀,網(wǎng)易在2015年末正式上線了蜂巢容器云平臺(tái),助力開發(fā)者進(jìn)行高效的開發(fā)設(shè)計(jì)。目前已經(jīng)服務(wù)于易信、網(wǎng)易云音樂、網(wǎng)易云課堂等網(wǎng)易優(yōu)秀的互聯(lián)網(wǎng)產(chǎn)品,并積累了順豐、中信信托、浙大網(wǎng)新等行業(yè)知名的首批用戶。誠(chéng)然,網(wǎng)易蜂巢在短時(shí)間內(nèi)便贏得不少開發(fā)者的青睞,和蜂巢容器云專業(yè)優(yōu)質(zhì)的服務(wù)不無關(guān)系,陳諤在QCon全球軟件開發(fā)大會(huì)上分享了網(wǎng)易蜂巢打造專業(yè)容器云平臺(tái)的一些挑戰(zhàn)。
Docker容器技術(shù)崛起,改變了軟件的開發(fā)方式
自2013年以來,Docker鏡像的下載量已經(jīng)突破12億次,使用容器進(jìn)行應(yīng)用開發(fā)和部署已然成為了最流行的方式。最新的研究顯示,在使用Docker的企業(yè)中,超過40%已經(jīng)運(yùn)用在生產(chǎn)環(huán)境中,而在未來這個(gè)數(shù)目將會(huì)急劇上升。
相比于傳統(tǒng)的軟件開發(fā)方式,容器化技術(shù)擁有一次開發(fā)、多次部署的能力,將開發(fā)、運(yùn)維和IT作為一個(gè)整體,使開發(fā)者更多地考慮如何為終端用戶帶來更大的利益,而不用被昂貴耗時(shí)的基礎(chǔ)架構(gòu)管理、擴(kuò)展和實(shí)施所約束。簡(jiǎn)單來說,Docker容器技術(shù)解決了困擾研發(fā)團(tuán)隊(duì)的開發(fā)、測(cè)試、生產(chǎn)環(huán)境一致性的問題,使得聯(lián)系研發(fā)流程的核心從代碼變?yōu)榇虬诉\(yùn)行環(huán)境的容器鏡像,通過消除中間的運(yùn)維配置部署過程,為開發(fā)者驅(qū)動(dòng)研發(fā)流程提供了有力的支持,并通過實(shí)施開發(fā)者驅(qū)動(dòng)能夠有效降低研發(fā)過程的溝通協(xié)作成本,加速產(chǎn)品迭代。為此,陳諤對(duì)此深有感觸:“對(duì)于Docker的技術(shù)帶來的改變,我們感覺就是把開發(fā)過程的復(fù)雜性降低了。以前要開發(fā)、運(yùn)維、測(cè)試三方的協(xié)作,現(xiàn)在運(yùn)維介入得更早,它幫助我們定義鏡像,定義運(yùn)行的環(huán)境,接下來都是由開發(fā)的同事去驅(qū)動(dòng)這件事情。”
此外,容器即服務(wù)的興起將促進(jìn)以運(yùn)維為中心的應(yīng)用發(fā)布,改善開發(fā)和運(yùn)維、敏捷和控制之間的平衡,從而以運(yùn)維為導(dǎo)向的開發(fā)方式取代現(xiàn)有的開發(fā)模型。
網(wǎng)易蜂巢如何打造高效容器云平臺(tái)?
作為深耕云計(jì)算多年的技術(shù)專家,陳諤目前負(fù)責(zé)網(wǎng)易云計(jì)算平臺(tái)的建設(shè),并完成了公司軟件基礎(chǔ)設(shè)施的云化改造,對(duì)分布式系統(tǒng)設(shè)計(jì)開發(fā)、云計(jì)算平臺(tái)系統(tǒng)架構(gòu)有一定的經(jīng)驗(yàn)和理解。在陳諤看來:“容器云作為一種新的云計(jì)算平臺(tái),一個(gè)重大的挑戰(zhàn)便是確定產(chǎn)品形態(tài)并將產(chǎn)品落地。”目前國(guó)內(nèi)大大小小的容器云平臺(tái)不下十家,如何打造高效專業(yè)的容器云服務(wù),各家似乎有著不同的理解,為此陳諤在QCon全球軟件大會(huì)上分享了網(wǎng)易蜂巢的經(jīng)驗(yàn)。
首先,基于開發(fā)者視角關(guān)注開發(fā)效率。對(duì)于開發(fā)者來說,選擇容器云服務(wù)的初衷就是為了提升開發(fā)效率,網(wǎng)易蜂巢容器云為了讓開發(fā)者能夠掌控運(yùn)維過程從而驅(qū)動(dòng)研發(fā)流程,將平臺(tái)的使用者應(yīng)定位為開發(fā)者(Dev)角色,最大程度的提升開發(fā)者的研發(fā)效率。陳諤介紹說:“容器云產(chǎn)品不應(yīng)對(duì)用戶的技術(shù)解決方案、架構(gòu)有過度的傾入性,應(yīng)更多考慮基礎(chǔ)設(shè)施向容器云的平滑遷移,讓用戶感受到容器云帶來的更好的云計(jì)算體驗(yàn)。”聯(lián)想的此前網(wǎng)易云計(jì)算從用戶視角將云計(jì)算重新定了云服務(wù)的劃分方式,將云計(jì)算產(chǎn)品分為研發(fā)云、運(yùn)作云和運(yùn)營(yíng)云,贏得了不錯(cuò)的用戶口碑。陳諤從產(chǎn)品形態(tài)上將蜂巢總結(jié)為“基于開發(fā)者視角,關(guān)注研發(fā)效率,做一朵更好的云”,網(wǎng)易蜂巢也是國(guó)內(nèi)第一個(gè)從開發(fā)者視角研發(fā)的專業(yè)容器云平臺(tái)。
其次,解決Docker容器的技術(shù)棧成熟度問題。Docker作為一個(gè)誕生僅有三年時(shí)間的項(xiàng)目,雖然整體架構(gòu)越來越完善,在模塊化、標(biāo)準(zhǔn)化方面獲得了長(zhǎng)足的進(jìn)步,但若要在容器云這樣多租戶的生產(chǎn)環(huán)境中采用Docker,無論是網(wǎng)絡(luò)、存儲(chǔ)、安全性方面都存在著不足。陳諤介紹說,為了解決這些問題,網(wǎng)易蜂巢從兩個(gè)方面來提升開發(fā)效率。一是消除系統(tǒng)的復(fù)雜性,蜂巢采用了基于Openstack Neutron的VxLAN網(wǎng)絡(luò),每個(gè)租戶都擁有獨(dú)立私有的二層網(wǎng)絡(luò),從而解決容器間互連帶來的運(yùn)維復(fù)雜度增加、不利于故障排除等問題,并對(duì)云數(shù)據(jù)庫(kù)和基礎(chǔ)設(shè)施進(jìn)行了優(yōu)化。二是采用DevOps戰(zhàn)略實(shí)現(xiàn)了以容器作為資源的交付單位,解決了kubernetes這一容器編排解決方案在水平擴(kuò)展和多租戶支持方面的不足,并利用先進(jìn)的診斷工具解決了以O(shè)penStack作為管理底層基礎(chǔ)設(shè)施所存在的性能、穩(wěn)定性等方面的問題。
另外,陳諤還提到了容器性能管理的問題,“原有的一些平臺(tái)提供的往往是資源的監(jiān)控,并不利于性能問題的預(yù)判和診斷,比如說短暫的性能波動(dòng)在常規(guī)的方式下很容易被屏蔽掉,在監(jiān)控圖表中也很難發(fā)現(xiàn)問題所在。網(wǎng)易蜂巢的理念是服務(wù)要細(xì)化到API級(jí)別,使性能管理能夠定位到精確的故障點(diǎn)。比如在數(shù)據(jù)庫(kù)、調(diào)用鏈等基礎(chǔ)服務(wù)上。”
基于以上三點(diǎn),網(wǎng)易蜂巢不僅發(fā)揮了容器的優(yōu)勢(shì),并通過豐富的工具集成,讓應(yīng)用交付更快捷、運(yùn)維更簡(jiǎn)單,成為真正有助于提升開發(fā)效率的容器云平臺(tái)。“網(wǎng)易在實(shí)施云計(jì)算的過程中一直在思考的問題是能否提升產(chǎn)品的開發(fā)效率,在保證質(zhì)量的前提下盡可能縮短產(chǎn)品的開發(fā)迭代周期,由此我們?cè)贒ocker容器技術(shù)的基礎(chǔ)上研發(fā)了蜂巢容器云,以幫助開發(fā)者降低運(yùn)維成本,加速開發(fā)迭代。”陳諤總結(jié)道。