餓了么成立于 2008 年,2014 年底開始迎來(lái)業(yè)務(wù)的大規(guī)模爆發(fā)性增長(zhǎng),2015-2016 年餓了么進(jìn)入高速發(fā)展期,業(yè)務(wù)和服務(wù)器的增長(zhǎng)都在數(shù)十倍的規(guī)模,這種大規(guī)模的增長(zhǎng)必然帶來(lái)很多挑戰(zhàn)。
本文將通過(guò)餓了么運(yùn)維基礎(chǔ)設(shè)施的進(jìn)化史和大家分享不同時(shí)期應(yīng)對(duì)挑戰(zhàn)的措施和思路。
餓了么運(yùn)維 1.0 時(shí)代
2014 年至 2015 年被稱為餓了么的 1.0 時(shí)代,業(yè)務(wù)迎來(lái)高速發(fā)展,這時(shí)考慮更多的是業(yè)務(wù)需要什么就趕緊上什么,而不是長(zhǎng)遠(yuǎn)的架構(gòu)等問(wèn)題。
每個(gè)人或團(tuán)隊(duì)負(fù)責(zé)自己一部分的工作,全力配合業(yè)務(wù)的需求??上攵?,在這個(gè)過(guò)程中會(huì)有很多的由于考慮不周而產(chǎn)生的“技術(shù)債”,也就是所謂的“痛”點(diǎn)。
01網(wǎng)絡(luò)的痛
網(wǎng)絡(luò)的痛主要表現(xiàn)在以下幾點(diǎn):
沒(méi)有標(biāo)準(zhǔn)化,IP 亂掛。外網(wǎng) IP 直接掛到服務(wù)器上,有的服務(wù)器可能有 2 個(gè)甚至 3 個(gè) IP;有的有 bonding;有的沒(méi)有。
攻擊多,業(yè)務(wù)高速增長(zhǎng)的情況下還會(huì)遭遇大量的攻擊,一遇到攻擊就可能宕機(jī)。
帶寬收斂比較低,因?yàn)榱髁刻螅缇彺娓邘挼那闆r,交換機(jī)上聯(lián)端口或者服務(wù)器千兆網(wǎng)卡很快被打滿。
監(jiān)控缺失,出了問(wèn)題技術(shù)團(tuán)隊(duì)不知道,騎手或用戶說(shuō)不能下單了之后各種投訴,由客服反饋過(guò)來(lái)。
單點(diǎn),從業(yè)務(wù)到整體架構(gòu)到每個(gè)業(yè)務(wù)甚至機(jī)器都存在很多單點(diǎn)。
鏈路質(zhì)量不穩(wěn)定。
02服務(wù)器的痛
資源的痛主要表現(xiàn)在:
服務(wù)器交付不及時(shí),去年到今年,我們最高周交付量是 3700 臺(tái)邏輯服務(wù)器。平均下來(lái)每個(gè)月都是幾千臺(tái)的交付、回收,對(duì)效率要求非常高。
資產(chǎn)管理缺失,無(wú)標(biāo)準(zhǔn),維護(hù)成本高。這時(shí)處于野蠻增長(zhǎng)時(shí)期,需要服務(wù)器就趕緊買,不會(huì)考慮有多少服務(wù)器。也不知道服務(wù)器都是什么配置的,沒(méi)有標(biāo)準(zhǔn)化,可能這一臺(tái)有 SSD,另一臺(tái)就沒(méi)有。這樣導(dǎo)致維護(hù)起來(lái)成本非常高。
交付質(zhì)量無(wú)保證,全部都是人肉裝機(jī),2015 年底的情況是買進(jìn)一批機(jī)器就臨時(shí)組成一個(gè)裝機(jī)小分隊(duì),一起裝機(jī)。因?yàn)槎际侨巳獠僮鳎医桓顿|(zhì)量無(wú)法保證,排查更困難。
03基礎(chǔ)服務(wù)缺失
基礎(chǔ)服務(wù)缺失主要體現(xiàn)在:
監(jiān)控方面,最早是用 Zabbix,配置不一導(dǎo)致有些硬盤沒(méi)有監(jiān)控、IOPS 是多少都是缺失的,業(yè)務(wù)層監(jiān)控也沒(méi)有覆蓋全。
負(fù)載均衡,每個(gè)業(yè)務(wù)自己搞一兩臺(tái)服務(wù)器,掛個(gè) Nginx 做反向代理,都是這么隨便做的。
集中式文件存儲(chǔ),每一臺(tái)服務(wù)器會(huì)把很多文件存在本地,這為整個(gè)基礎(chǔ)設(shè)施管理帶來(lái)很多問(wèn)題。
舉個(gè)例子,有的東西,比如理論上互聯(lián)網(wǎng)很多的 SOA 服務(wù)都是無(wú)狀態(tài)的,本地除了代碼之外,不應(yīng)該有其他的東西,但發(fā)生故障的時(shí)候,業(yè)務(wù)因?yàn)楸O(jiān)控不成熟無(wú)法確認(rèn)問(wèn)題,需要看日志,這就復(fù)雜了,有人說(shuō)要保留一周,有人說(shuō)要保留一個(gè)月,有時(shí)日志一天就是幾十個(gè) G 怎么辦?那就加一塊硬盤,怎么加?誰(shuí)來(lái)采購(gòu)和管理?后面的標(biāo)準(zhǔn)化怎么做?集中式日志、集中式文件存儲(chǔ)都是為了解決標(biāo)準(zhǔn)化的問(wèn)題。
基礎(chǔ)的服務(wù)也非?;靵y。
1.0時(shí)代做了什么?
面對(duì)這么多的問(wèn)題我們?cè)趺崔k?運(yùn)維做以下三件事情就夠了:
標(biāo)準(zhǔn)化,從硬件到網(wǎng)絡(luò)到操作系統(tǒng)到使用的技術(shù)棧、軟件的安裝方式、日志的存放路徑、名稱、代碼部署方式、監(jiān)控從上到下,要建立一套體系化的標(biāo)準(zhǔn)。有了標(biāo)準(zhǔn)就可以用代碼自動(dòng)化,有了自動(dòng)化和標(biāo)準(zhǔn)化之后就可以實(shí)現(xiàn)良性循環(huán)。
流程化,流程化是把很多的需求通過(guò)步驟進(jìn)行規(guī)范化和標(biāo)準(zhǔn)化。
平臺(tái),構(gòu)建一個(gè)平臺(tái)實(shí)現(xiàn)標(biāo)準(zhǔn)化和自動(dòng)化。
我理解的是運(yùn)維需要做兩個(gè)生命周期的管理:
資源的生命周期管理,包括資源的采購(gòu)、上架、部署、代碼、故障處理、服務(wù)器回收、報(bào)廢等。
應(yīng)用的生命周期管理,包括應(yīng)用開發(fā)、測(cè)試、上線、變更,應(yīng)用下線、回收等。
01標(biāo)準(zhǔn)化
關(guān)于標(biāo)準(zhǔn)化有一個(gè)概念,就是要讓我們的用戶做選擇題,而不是問(wèn)答題。
舉個(gè)例子,用戶經(jīng)常會(huì)說(shuō)我要一臺(tái) 24 核 32G 600G 硬盤的機(jī)器,這時(shí)你應(yīng)該告訴用戶:我現(xiàn)在有 A、B、C、D 四種機(jī)型,分別是計(jì)算型、存儲(chǔ)型、內(nèi)存型、高 I/O 型,你要哪種?
這很重要,很多用戶只是習(xí)慣了兩臺(tái)機(jī)器:一臺(tái)配 200G 硬盤,一臺(tái)配 250G 硬盤。用戶的需求千奇百怪,如果沒(méi)有標(biāo)準(zhǔn)化很難做到。
我們的服務(wù)器型號(hào)是統(tǒng)一的,提供各種型號(hào),你需要和用戶談,收集用戶需求,盡量辨別出來(lái)用戶的真實(shí)需求。
機(jī)型采購(gòu)的時(shí)候要做定制化,比如要不要把省電模式關(guān)掉。各個(gè)廠商還有一些坑,包括直通卡的盤符漂移等問(wèn)題,如何做自動(dòng)化,機(jī)器來(lái)了如何自動(dòng)上線。
服務(wù)器出廠和上架也要做定制化,我們把資源標(biāo)成一個(gè)個(gè)模塊,最小的模塊是 3 個(gè)機(jī)柜,每個(gè)機(jī)柜放多少臺(tái)服務(wù)器是固定的。
生產(chǎn)的時(shí)候,比如說(shuō)我要采購(gòu)一千臺(tái)服務(wù)器,我告訴廠商我已經(jīng)規(guī)劃好了,這一千臺(tái)服務(wù)器放在哪一個(gè)機(jī)房里,哪一個(gè)機(jī)柜,哪一個(gè) U 位,廠商會(huì)做定制化,機(jī)器到貨上架之后,廠家人或服務(wù)商把電一接,操作系統(tǒng)自動(dòng)化安裝,甚至是網(wǎng)絡(luò),每一層都是標(biāo)準(zhǔn)化的。
02流程 自動(dòng)化
上圖展示的是餓了么的工作流引擎,可以理解為資源生命周期中有很多流程:
如服務(wù)器的申請(qǐng),包括物理機(jī)申請(qǐng)、虛擬機(jī)申請(qǐng)、云服務(wù)申請(qǐng)等。
如大量狀態(tài),包括回收等。
流程的背后是自動(dòng)化,規(guī)范用戶輸入,讓用戶做選擇題,要什么樣的機(jī)型、什么樣的配置、多少數(shù)量,表單一填好,后臺(tái)就自動(dòng)化地執(zhí)行了。
03自動(dòng)化 平臺(tái)
物理服務(wù)器自動(dòng)化裝機(jī)及初始化。比如我有幾千臺(tái)服務(wù)器,能不能一天裝好?360 曾經(jīng)一天最高裝了 5000 臺(tái)服務(wù)器,我們的最高紀(jì)錄是一天裝機(jī) 2500 臺(tái)物理服務(wù)器。
網(wǎng)絡(luò)設(shè)備上線自動(dòng)化。
資源管理平臺(tái)。對(duì)所有的資源能做統(tǒng)一化管理,類似資源交付流程的管理后臺(tái)。
分布式文件系統(tǒng),主要用于數(shù)據(jù)庫(kù)備份及圖片處理。
日志集中平臺(tái),所有的日志集中到 elk 上,不用上服務(wù)器看日志了。
04私有云平臺(tái)(Zstack)
餓了么早期實(shí)行野蠻生長(zhǎng)的方式,虛擬機(jī)就是自己創(chuàng)建。創(chuàng)建完了會(huì)有一個(gè)問(wèn)題:怎么知道一個(gè)機(jī)器可以再創(chuàng)建呢?
比如說(shuō),我一個(gè)機(jī)器可以創(chuàng)建 6 臺(tái)虛擬機(jī),現(xiàn)在已經(jīng)創(chuàng)建 5 臺(tái)了,怎么知道還有一臺(tái)創(chuàng)建在哪里?
當(dāng)需要把一個(gè)業(yè)務(wù)布置到 10 臺(tái)物理機(jī),甚至是跨機(jī)柜的,為避免單點(diǎn)物理機(jī)或單個(gè)機(jī)柜出現(xiàn)故障,影響全局應(yīng)用,這就涉及到了虛擬機(jī)的資源調(diào)度,這時(shí)我們選用了 ZStack。
為什么選用 ZStack 呢?
私有云比較火的三個(gè)開源技術(shù)選型分別是:
OpenStack。
CloudStack。
ZStack。
本著越簡(jiǎn)單越好的原則,我們排除了 OpenStack。它太重了,沒(méi)有人也沒(méi)有時(shí)間去 Hold 這么大的系統(tǒng),而且從行業(yè)內(nèi)得到一些反饋,總體來(lái)說(shuō)不是很好。
CloudStack 的開發(fā)者也是 ZStack 的開發(fā)者,當(dāng)時(shí) CloudStack 社區(qū)已經(jīng)沒(méi)有人維護(hù)了,并且它不支持 CentOS7。
所以我們選用了 ZStack,那個(gè)時(shí)候 ZStack 也有不少 Bug,但還是比較簡(jiǎn)單的,我們可以做好。
ZStack 的特點(diǎn):簡(jiǎn)單、無(wú)狀態(tài)、接口化
ZStack比較簡(jiǎn)單,安裝一下,就可以跑起來(lái)了。當(dāng)然想要用好,后面還是有點(diǎn)難度的。
它是一個(gè)中心結(jié)構(gòu),所有的都是基于消息做的,我們的 ZStack 平臺(tái)看不到什么高大上的頁(yè)面,后面都是自定義的接口,前端的流程自動(dòng)調(diào)后端的接口,通過(guò)一些消息來(lái)進(jìn)行同步。ZStack 目前已經(jīng)管理了超過(guò) 6000 臺(tái)虛擬機(jī)。
餓了么運(yùn)維 2.0 時(shí)代
在 1.0 時(shí)代我們做了一些標(biāo)準(zhǔn)化、自動(dòng)化的工作,讓我們的系統(tǒng)順暢地跑起來(lái)。從 2016 年開始,我們進(jìn)入了 2.0 時(shí)代。
這個(gè)階段也存在一些痛點(diǎn):
SLA 是什么?
有數(shù)據(jù)嗎?
你說(shuō)效率很高了,如何證明?
一天交付 1000 就是高嗎?
數(shù)據(jù)怎么衡量?
在 IT 圈里,除了上帝,所有的東西都要用數(shù)據(jù)說(shuō)話,一切要可量化,可衡量。
2.0 時(shí)代做了什么?
這個(gè)時(shí)期我們解決痛點(diǎn)的措施從兩方面著手:精細(xì)化運(yùn)維和數(shù)據(jù)化運(yùn)營(yíng)。運(yùn)維和運(yùn)營(yíng)是不一樣的。
01精細(xì)化運(yùn)維
精細(xì)化運(yùn)維包括以下幾個(gè)方面:
網(wǎng)絡(luò)架構(gòu)的持續(xù)升級(jí)。
服務(wù)器性能基線制定。
服務(wù)器交付質(zhì)量校驗(yàn)(不合格不交付)。
硬件故障報(bào)修自動(dòng)化。
網(wǎng)絡(luò)流量分析。
服務(wù)器重啟自動(dòng)化。
Bug fix:省電模式、bonding 等。
網(wǎng)絡(luò)架構(gòu)持續(xù)升級(jí)
早期我們有一個(gè)數(shù)據(jù)中心,使用的核心交換機(jī)是華為的 5700SE,這意味著什么?
在一次流量突發(fā)中,這個(gè)設(shè)備引發(fā)了我們 P0 級(jí)的事故。所有我們重新定義了網(wǎng)絡(luò)標(biāo)準(zhǔn),并持續(xù)做了大量的網(wǎng)絡(luò)升級(jí),包括核心、負(fù)載均衡、匯聚到核心的帶寬,以及網(wǎng)絡(luò)架構(gòu)優(yōu)化。
還有 IDC 間鏈路,最早我們一些 IDC 間鏈路是打的 VPN,現(xiàn)在同城的用裸纖,跨城的都是用傳輸,這里也有依稀持續(xù)的投入。
網(wǎng)絡(luò)優(yōu)化
如圖中所示,北京和上海的 IDC,從辦公室訪問(wèn) IDC 我們都拉了裸纖和專線,全部做到足夠的強(qiáng)壯。還包括到第三方支付的,比如支付寶、微信支付等等。
服務(wù)器的性能基線制定,交付質(zhì)量校驗(yàn)
交付的服務(wù)器是否足夠好,要用數(shù)據(jù)說(shuō)話。我們所有的服務(wù)器都有一個(gè)基線,比如一種計(jì)算型的機(jī)型,計(jì)算能力、I/O 能力是多少、網(wǎng)卡小包的 PPS 可以達(dá)到多少等都是可以測(cè)試的。
在交付的時(shí)候會(huì)進(jìn)行性能測(cè)試,達(dá)到基線才可以交付,否則就不能交付。
網(wǎng)絡(luò)流量分析
我們當(dāng)初遇到過(guò)匯聚到接入之間某根光纖帶寬跑滿的情況,因?yàn)樵缙趲捠諗勘炔粔颍? 個(gè) 10G 在上面,由于網(wǎng)絡(luò)流量的算法原因,導(dǎo)致 4 個(gè) 10G 端口的其中一個(gè)被跑滿了。
我們要知道關(guān)鍵節(jié)點(diǎn)的流量是哪一個(gè)業(yè)務(wù)在跑、跑的怎么樣,有問(wèn)題要及時(shí)告警。
硬件故障保修自動(dòng)化
目前我們的服務(wù)器數(shù)量很多,每周可能存在數(shù)十臺(tái)的故障,怎么第一時(shí)間知道故障,并且在不影響業(yè)務(wù)的情況下快速修復(fù)?
還有一些其他的工作,如服務(wù)器的自動(dòng)化重啟,做運(yùn)維都很辛苦,如果半夜有一個(gè)故障或者服務(wù)器壞了,需要重啟;如果你還得通過(guò)遠(yuǎn)程管理卡輸入密碼登錄進(jìn)去重啟,就太 Low 了,要實(shí)現(xiàn)自動(dòng)化重啟。
服務(wù)器自動(dòng)化報(bào)修總體來(lái)說(shuō)是這幾個(gè)邏輯:
故障發(fā)現(xiàn)。
故障通知:用戶、IDC、供應(yīng)商。
故障處理。
故障恢復(fù)校驗(yàn)。
故障分析。
第一是故障發(fā)現(xiàn),如何發(fā)現(xiàn)資源故障?監(jiān)控,帶內(nèi)、帶外、日志多方位監(jiān)控。所有監(jiān)控的報(bào)警到一個(gè)地方來(lái)做初步的收集,最后就會(huì)到這個(gè)系統(tǒng)。
這是 9 月 19 日的圖,可以看到有非常多的故障,發(fā)現(xiàn)這些故障之后要通知,通知也是很復(fù)雜的,是短信、電話還是內(nèi)部的工具?
我們要多渠道地進(jìn)行通知,有的用戶比較牛,他說(shuō)你不用給我發(fā)郵件,我這邊有一個(gè)接口,可以做自動(dòng)化的發(fā)送。
比如我們的服務(wù)器故障了,自動(dòng)給他發(fā)一個(gè)消息:
收到這個(gè)消息之后,業(yè)務(wù)就開始把這個(gè)機(jī)器關(guān)掉,甚至把數(shù)據(jù)操作等一系列操作做完。
做完之后返還給報(bào)修系統(tǒng)一個(gè)消息:這個(gè)服務(wù)器你可以去維修了。
收到這個(gè)消息之后,通知 IDC、供應(yīng)商:哪一個(gè)機(jī)房、哪一個(gè)機(jī)柜、哪一個(gè) U 位、序列號(hào)多少的服務(wù)器發(fā)生了什么問(wèn)題,請(qǐng)于什么時(shí)間段上門維修。
同時(shí)通過(guò)各種方式告訴 IDC:誰(shuí)身份證號(hào)多少,什么時(shí)間會(huì)帶著什么設(shè)備上門做哪一個(gè)地方的維修。
我們數(shù)以萬(wàn)計(jì)的服務(wù)器只有兩個(gè)人來(lái)進(jìn)行運(yùn)維。供應(yīng)商維修、故障處理是人肉的,處理之后登陸外部系統(tǒng),給我們發(fā)一個(gè)消息,告訴我們這個(gè)服務(wù)器修好了,我們的程序會(huì)自動(dòng)檢查故障有沒(méi)有恢復(fù)。
如果恢復(fù)了,就通知用戶說(shuō)資源什么時(shí)候修好了,用戶接到消息,會(huì)把服務(wù)器再拉回來(lái)。
同時(shí)所有的故障信息都會(huì)進(jìn)入我的數(shù)據(jù)庫(kù),自動(dòng)進(jìn)行分析,看到哪一個(gè)品牌的服務(wù)器不好、哪一個(gè)機(jī)型或者是哪一個(gè)配件壞的比較多,在做供應(yīng)商和機(jī)型選擇的時(shí)候就可以有一個(gè)參考。
精細(xì)化運(yùn)維還有各種 Bug Fix 等很多細(xì)節(jié),細(xì)節(jié)是魔鬼。當(dāng)初被省電模式坑得很慘,包括網(wǎng)卡的問(wèn)題,從硬件到服務(wù),代碼的 Bug 就更多了。
運(yùn)維管理平臺(tái)
我們有很多機(jī)柜、機(jī)房,這些數(shù)據(jù)都通過(guò)自動(dòng)化的系統(tǒng)進(jìn)行采集和展示。
運(yùn)維重點(diǎn)需要考慮三件事情:
質(zhì)量。
效率。
成本。
從上圖中可以看到這是一個(gè)模塊,這個(gè)模塊當(dāng)中有很多的機(jī)柜,這些機(jī)柜用電量很大,這就體現(xiàn)出了成本,我們大量的機(jī)柜是黃色,黃色是告警。
一個(gè)機(jī)柜的電量是 4000W、5000W,我們會(huì)盡量把資源充分利用起來(lái),成本相對(duì)最優(yōu)。所以我們的機(jī)柜都是一些比較高電的,比如說(shuō) 47U 的機(jī)柜我們會(huì)放很多的設(shè)備。
02數(shù)據(jù)化運(yùn)營(yíng)
IT 所有的東西都要用數(shù)據(jù)說(shuō)話。
資產(chǎn)情況
資產(chǎn)情況包括:我們有多少服務(wù)器、分布在哪些機(jī)房、有多少機(jī)柜、服務(wù)器是什么機(jī)型、品牌和型號(hào)、哪些是占用的、哪些是未用的等。
網(wǎng)絡(luò)流量分析
網(wǎng)絡(luò)流量分析包括:網(wǎng)絡(luò)流量來(lái)自于哪些人,比如說(shuō)這里有一個(gè)異常突起,我就知道這是由跨城帶寬傳輸造成的。
跨城帶寬大家都知道,是非常貴的。10G 帶寬一下子跑滿了,擴(kuò)容要三個(gè)月,這個(gè)時(shí)候整體業(yè)務(wù)會(huì)受到嚴(yán)重影響,我們要第一時(shí)間知道誰(shuí)在用這些流量。
服務(wù)器去哪兒了
我們買了那么多公司的東西,得知道這些機(jī)器誰(shuí)在用?圖中的這條線是資源利用率,這是大數(shù)據(jù)部門的使用情況,從圖中可以看到大數(shù)據(jù)的資源利用率是很高的,而其他的部門資源利用率不高。
通過(guò)這個(gè)數(shù)據(jù)我給你發(fā)報(bào)表,告訴你花了多少錢,用了多少服務(wù)器,什么類型的服務(wù)器,分布情況和利用率是多少。這是運(yùn)營(yíng)的思想,而不是運(yùn)維的思想。
資源交付 SLA
我們的工作量如何衡量?我們交付了很多服務(wù)器,什么時(shí)間交付的、交付的是什么型號(hào)、交付的效率如何?一定要可衡量。
舉個(gè)例子,做年終 KPI 考核的時(shí)候,你說(shuō)我們部門做了很多工作,這個(gè)工程、那個(gè)項(xiàng)目,這些都是廢話。
你只要告訴我,今年做了幾個(gè)項(xiàng)目,這些項(xiàng)目分別部署了多少資源、效率是什么,以前平均交付時(shí)間是 2 小時(shí),現(xiàn)在是 20 分鐘,未來(lái)是 5 分鐘。
成本核算
今年我們花了很多錢,這么多錢花在哪里?誰(shuí)花的?買了什么?給誰(shuí)用了?用得怎么樣?
從各個(gè)維度來(lái)看,這些成本的構(gòu)成等等,甚至我們的成本和友商的成本對(duì)比,都通過(guò)這些數(shù)據(jù)可以看出來(lái)。
供應(yīng)商的質(zhì)量評(píng)價(jià)
比如每個(gè)配件什么時(shí)候故障了,故障率是多少?自動(dòng)給廠商打分,報(bào)表會(huì)自動(dòng)交到采購(gòu),作為采購(gòu)的一個(gè)技術(shù)評(píng)分,這個(gè)過(guò)程沒(méi)有人的介入。
包括質(zhì)量方面,某一個(gè)廠商這一段時(shí)間的質(zhì)量下降了,可以要對(duì)他進(jìn)行售后管理。
總結(jié)
這次分析主要是資源生命周期管理,本文大部分內(nèi)容偏向于底層資源,但思想可以落到所有的模塊,比如日志、不同運(yùn)維系統(tǒng)、監(jiān)控等。
最后談一些感想:
簡(jiǎn)單及可用
我從入行到現(xiàn)在從事互聯(lián)網(wǎng)運(yùn)維差不多十年時(shí)間,早期服務(wù)器的故障需要很懂的人一臺(tái)一臺(tái)地去看。
現(xiàn)在的做法是一臺(tái)服務(wù)器出問(wèn)題了,直接拉掉,讓另外一臺(tái)服務(wù)器快速頂上去,成本可控、質(zhì)量可控、效率第一,這種情況下一定要簡(jiǎn)單及可用。
這句話最早是百度傳出來(lái)的,這也是我做運(yùn)維的一個(gè)準(zhǔn)則,一切的東西都要簡(jiǎn)單。
有一些開源的解決方案具備很多很牛的功能,但你要深刻思考你真的需要嗎?它真的對(duì)你有幫助嗎?真正核心的價(jià)值是什么?所有軟件程序必須要做到高類聚低耦合,避免很強(qiáng)的依賴。
標(biāo)準(zhǔn)化和自動(dòng)化
標(biāo)準(zhǔn)化能標(biāo)準(zhǔn)化的,自動(dòng)化可以自動(dòng)化的。標(biāo)準(zhǔn)化一定是未來(lái)的趨勢(shì),現(xiàn)在隨著阿里云、騰訊云的發(fā)展,小的公司很多東西都會(huì)遷移到云上,未來(lái)混合云的架構(gòu),運(yùn)維可以做什么?
怎么做到快速的擴(kuò)容和彈性計(jì)算,彈性計(jì)算包括容量規(guī)劃、壓測(cè)等,這當(dāng)中有很多的點(diǎn),這些點(diǎn)的基石就是標(biāo)準(zhǔn)化、自動(dòng)化。
自己造輪子
盡量不要重復(fù)造輪子,自己造輪子。搞開發(fā)的人很喜歡造輪子,總覺(jué)得我到一家公司,不寫點(diǎn)東西,顯得我很 Low 或者沒(méi)有績(jī)效。
“用好”軟件比用“好”軟件更重要。工具沒(méi)有好壞之分,就看你能不能用好,在對(duì)的時(shí)間做對(duì)的事情,不要對(duì)工具有偏見,它只是一塊磚,我們要做的是把這些磚做好合并,用好這些磚。
80 分萬(wàn)歲
先有,后好(80分萬(wàn)歲)。萬(wàn)事起頭難,第一步一定要先有。不要說(shuō)我想一個(gè)東西想得很宏大,各個(gè)方面設(shè)計(jì)特別牛,要考慮的是這個(gè)東西能落地嗎?
落地是最重要的。那有人會(huì)問(wèn)做了很多東西,可是很爛怎么辦?先收口,收口之后慢慢優(yōu)化。
快速迭代
互聯(lián)網(wǎng)快速發(fā)展,互聯(lián)網(wǎng)應(yīng)用一定要快速迭代。我們公司每天有數(shù)百次發(fā)布,對(duì)于敏捷式開發(fā)快速更新非常重要。
這個(gè)過(guò)程一定是螺旋式上升的,甚至有前進(jìn)兩步后退一步的情況。不要說(shuō)誰(shuí)家的架構(gòu)就是最牛的,只有適合你才是最好的,而且不同階段適合你的東西是不一樣的,需要不斷重構(gòu)和迭代。
現(xiàn)有用戶和新用戶同等重要
這是亞馬遜提出來(lái)的,亞馬遜有一件很有名的事情:當(dāng)年有一個(gè)用戶要將服務(wù)遷移到亞馬遜,預(yù)計(jì)上千萬(wàn)美金。
亞馬遜評(píng)價(jià)說(shuō),這個(gè)服務(wù)遷過(guò)來(lái),要做什么樣的改造,這個(gè)改造會(huì)對(duì)現(xiàn)有業(yè)務(wù)的穩(wěn)定性造成什么影響。經(jīng)過(guò)層層上報(bào),最后的結(jié)論是這個(gè)用戶我不要了。因?yàn)榻邮芎蟋F(xiàn)有用戶得不到保障。
這一點(diǎn)非常重要,2016 年 9 月份,我們的日志系統(tǒng)上線,剛剛上線的時(shí)候,峰值 8 萬(wàn)/秒的請(qǐng)求量,到 10 月份達(dá)到 80 萬(wàn)/秒,這時(shí)還不斷有用戶過(guò)來(lái)說(shuō)要接入。
我當(dāng)時(shí)感覺(jué)硬件、架構(gòu)等方面都快 Hold 不住了,我跟大家說(shuō)了這件事情,給自己爭(zhēng)取了 1 個(gè)月的緩沖期,做了大量的技術(shù)改造,現(xiàn)在峰值每天超過(guò) 260 萬(wàn)條日志,也可以進(jìn)行實(shí)時(shí)的收集、傳輸、存儲(chǔ)、分析。
這當(dāng)中一定要找一個(gè)平衡,在服務(wù)好現(xiàn)有用戶的同時(shí),逐步接入新用戶,當(dāng)然也不能很生硬的說(shuō)“no way”,這樣你的品牌就沒(méi)有了。
擁抱變化
擁抱變化,不要有玻璃心。我工作了很多年,也去過(guò)好幾家公司,可以看到每家公司在不同階段都有不同的變化。
比如我的團(tuán)隊(duì)中基本上都是開發(fā)沒(méi)有運(yùn)維了,標(biāo)準(zhǔn)化做好了,底層就是一個(gè)硬件軟件,一個(gè)操作系統(tǒng)專家,其他的都是一些程序員。
可是很多人本身是做運(yùn)維的怎么辦?要開始學(xué)習(xí)代碼,要有變化和成長(zhǎng)。
今年我給團(tuán)隊(duì)的目標(biāo)是 2017 年要把我們這個(gè)團(tuán)隊(duì)做沒(méi)了。意思是要做到無(wú)人值守,或者只花 10%、20% 的時(shí)間和精力做后臺(tái)的 Bug Fix,其他 80% 的時(shí)間做價(jià)值輸出,現(xiàn)在這個(gè)目標(biāo)已經(jīng)在落地的過(guò)程當(dāng)中了。
徐巍
餓了么高級(jí)運(yùn)維經(jīng)理
目前在餓了么負(fù)責(zé)基礎(chǔ)設(shè)施的運(yùn)維及開發(fā)工作,曾就職于 PPTV、攜程、游族等公司,是一個(gè)擁有近十年經(jīng)驗(yàn)的運(yùn)維老兵。
聯(lián)系客服