百度外賣張建:用軟件工程的思維解決運(yùn)維難題
原創(chuàng)【51CTO.com原創(chuàng)稿件】2017年4月14日,WOTA2017 全球架構(gòu)與運(yùn)維技術(shù)峰會將在北京舉行,會上百度外賣研發(fā)中心運(yùn)維部資深運(yùn)維研發(fā)工程師及技術(shù)負(fù)責(zé)人張建,將作為“DevOps與持續(xù)交付專場”的演講嘉賓帶來精彩的演講。在會前的采訪中,張建對記者說到:“百度外賣運(yùn)維研發(fā)團(tuán)隊(duì)(SRE)在近1年的時間內(nèi)6個人完成了 11個業(yè)務(wù)平臺,6個通用服務(wù),11+ golang lib庫,滿足了30+業(yè)務(wù)服務(wù)的對接。我們一切從0開始,在不斷的挑戰(zhàn)中前進(jìn)著。”
【講師簡介】
百度外賣研發(fā)中心-運(yùn)維部-運(yùn)維研發(fā)技術(shù)負(fù)責(zé)人-張建
張建,2013年進(jìn)入百度工作,先后負(fù)責(zé)過貼吧、ksarch、私有PAAS平臺開發(fā)與維護(hù)工作。2016年進(jìn)入百度外賣,主要負(fù)責(zé)外賣的運(yùn)維研發(fā)團(tuán)隊(duì)(已改名為SRE),涉及內(nèi)容較廣,主要包括Network,SYS和研發(fā)團(tuán)隊(duì)的建設(shè)工作,Network SYS BP&IT OP 等研發(fā)方面的工作,負(fù)責(zé)兩大運(yùn)維平臺Pacific(一站式運(yùn)維平臺) 和Atlantic(數(shù)據(jù)管理平臺)。
從人工運(yùn)維到智能運(yùn)維
從運(yùn)維的技術(shù)發(fā)展進(jìn)程來看,我們可以看到早期, ssh+exp代替了手工登錄服務(wù)器維護(hù)的模式,大量的運(yùn)維工作要通過批量腳本實(shí)現(xiàn)。在這個階段,經(jīng)常遇到的問題是復(fù)雜的邏輯很難實(shí)現(xiàn),純粹靠腳本化來完成運(yùn)維操作是不夠的。特別是在業(yè)務(wù)規(guī)模的擴(kuò)大時和復(fù)雜化后,運(yùn)維工作越來越難以應(yīng)付,需要大量的人力,而且還容易出錯,于是出現(xiàn)了運(yùn)維工具的理念。進(jìn)入了工具化時代,大家以chef/puppet配置工具為代表,把運(yùn)維的能力變成一個個的工具能力。此時的基本思想就是通過軟件配置的系統(tǒng)實(shí)現(xiàn)所有運(yùn)維的復(fù)雜操作。復(fù)雜操作的背后仍可能是單機(jī)上的腳本操作,因?yàn)閷\(yùn)維人員來講是最容易維護(hù)的,如果全是程序化非常的困難。隨著IT敏捷性要求越來越高,需要把運(yùn)維工具能力平臺化,進(jìn)一步固化運(yùn)維的常見場景。運(yùn)維的精細(xì)化要求越來越高,需要更多、更綜合的運(yùn)維能力沉淀,更全面的自動化能力和數(shù)據(jù)分析能力。于是,運(yùn)維進(jìn)入了智能化時代。
因此,出現(xiàn)了DevOPS這一解決工具化的方案或者說是一種思想。近幾年,DevOPS這個概念在國內(nèi)外廣受關(guān)注,其可以實(shí)現(xiàn)快速應(yīng)用部署,從而縮短產(chǎn)品上市時間,降低新版本的故障率,縮短崩潰事件的修復(fù)時間和平均恢復(fù)時間。DevOPS的目標(biāo)是通過自動化方式方法,***限度地提高運(yùn)維流程的可預(yù)測性,效率,安全性和可維護(hù)性。
張建表示,DevOps通俗點(diǎn)說是負(fù)責(zé)的方向是OP(運(yùn)維)、QA(測試)、RD(研發(fā))三者有交集的工作方向,如持續(xù)交付,上線部署等;另外也有很多人把他等同于運(yùn)維研發(fā),偏向解決OP的自動化和平臺問題。其實(shí)真正的DevOps只是一個名詞,在于如何通過軟件工程來解決在支撐業(yè)務(wù)發(fā)展過程中的需求,只是開發(fā)服務(wù)的業(yè)務(wù)主體不是廣大的網(wǎng)友,而是OP、QA、RD等公司內(nèi)的角色。開發(fā)的目標(biāo),是讓各個環(huán)節(jié)的效率提升,將人力從繁瑣的手動操作中釋放出來,打通各個部門各個環(huán)節(jié)的數(shù)據(jù)與操作等。如果要做一個長遠(yuǎn)的企業(yè),統(tǒng)一和穩(wěn)定的基礎(chǔ)服務(wù)是提高業(yè)務(wù)發(fā)展生產(chǎn)力不可或缺的。
看百度外賣如何通過軟件工程的思想構(gòu)建運(yùn)維平臺
百度外賣如何用了不到一年的時間,就完成了11個業(yè)務(wù)平臺,6個通用服務(wù),11+ golang lib庫,滿足了30+業(yè)務(wù)服務(wù)的對接,實(shí)現(xiàn)了對公司spinoff和業(yè)務(wù)快速迭代一個很好的的基礎(chǔ)支撐。張建坦言:“這一切都源于我們采用了SRE這一方法論。SRE是Site Reliability Engineer網(wǎng)站可靠性工程師的簡稱,它由谷歌提出,是其在運(yùn)維模式上的全新探索,SRE就是用軟件工程師的方法和手段,招軟件工程師來解決運(yùn)維的難題,也是 DevOps 思想在運(yùn)維方面的真正實(shí)踐。”
他指出,DevOps注重運(yùn)維流程自動化,而SRE更注重可靠性,系統(tǒng)性思維。與DevOPS比起來,SRE更廣泛更有深度,因?yàn)榭煽啃詮纳现料露伎梢匀プ觯罒o止境。另外,SRE的一套方法論更完善。對很多人來說DevOps和SRE做的事情是一樣的,只是一個名詞而已,但是其側(cè)重點(diǎn)不一樣,方法論基礎(chǔ)完全不一樣。SRE在運(yùn)維實(shí)踐上的一個亮點(diǎn)是構(gòu)建平臺化的服務(wù)體系,可以平衡服務(wù)不可用以及產(chǎn)品快速創(chuàng)新、提高運(yùn)維效率之間的風(fēng)險。因此,百度外賣在2016年成立了專門SRE團(tuán)隊(duì),為百度外賣Spinoff提供的全面技術(shù)支持與平臺開發(fā),SRE團(tuán)隊(duì)打造了運(yùn)維一站式服務(wù)平臺Pacific和數(shù)據(jù)展示與報警平臺Atlantic兩大技術(shù)平臺。
Pacific 平臺導(dǎo)航界面
Pacific平臺網(wǎng)絡(luò)監(jiān)控界面
在平臺的建設(shè)過程中,考慮到運(yùn)維需要管理各種資源,依賴服務(wù)復(fù)雜、部署和執(zhí)行分散、流程管控環(huán)節(jié)多等特點(diǎn),將平臺組成分為業(yè)務(wù)邏輯和通用服務(wù)。建立統(tǒng)一技術(shù)棧,采用開發(fā)效率、執(zhí)行效率和可維護(hù)性高的GO語言,最終做到模塊功能可復(fù)用,代碼可復(fù)用,編程通用性。
平臺構(gòu)建階段
在Spinoff的期間,團(tuán)隊(duì)和平臺從無到有. 開發(fā)需求量大,人員不足的情況下,實(shí)踐了一些開發(fā)思路,如:權(quán)衡業(yè)務(wù)需求和開發(fā)需求達(dá)到雙贏的目的。
一方面,為了快速實(shí)現(xiàn)并加強(qiáng)平臺的擴(kuò)展性,采用微服務(wù)構(gòu)建方式. 通過服務(wù)與服務(wù)之間單向訪問,不提供回調(diào)模式,解決微服務(wù)調(diào)用復(fù)雜度問題;采用 golang+ 二進(jìn)制內(nèi)嵌靜態(tài)資源的方式,解決微服務(wù)部署復(fù)雜度問題。另一方面,為了增加團(tuán)隊(duì)和技術(shù)棧的成長性, 引入了很多開源的思想和模塊. 如:靈活利用K8s的APIServer工作方式實(shí)現(xiàn)配置中心等,深度定制Open-Falcon+Grafana滿足數(shù)據(jù)報警與展示的需求.
采訪***,張建表示,百度外賣在運(yùn)維過程中積累了豐富經(jīng)驗(yàn),他將帶到WOTA2017全球架構(gòu)與運(yùn)維技術(shù)峰會上:“我將分享百度外賣如何在不到1年的時間內(nèi)完成大量的平臺開發(fā),滿足業(yè)務(wù)遷移與迭代的需求的***實(shí)踐。主要從如何提取通用性、抓住哪些核心點(diǎn)、如何保證擴(kuò)展性這幾個方面進(jìn)行闡述。比如:如何在眾多需求中找到最核心的,如何優(yōu)先解決通用性問題,提供通用性解決方案和服務(wù)避免重復(fù)工作。”
World Of Tech 專注互聯(lián)網(wǎng)IT技術(shù)領(lǐng)域
三大章節(jié),15大技術(shù)專場,
50+國內(nèi)外一線互聯(lián)網(wǎng)精英大咖站臺
打造兼顧技術(shù)視野、技術(shù)實(shí)戰(zhàn)、技術(shù)前瞻的
密集式干貨集中營!
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】