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