早期的運(yùn)維團(tuán)隊(duì)在人員較少的情況下,主要是進(jìn)行數(shù)據(jù)中心建設(shè)、基礎(chǔ)網(wǎng)絡(luò)建設(shè)、服務(wù)器采購(gòu)和服務(wù)器安裝交付工作。幾乎很少涉及線上服務(wù)的變更、監(jiān)控、管理等工作。
這個(gè)時(shí)候的運(yùn)維團(tuán)隊(duì)更多的屬于基礎(chǔ)建設(shè)的角色,提供一個(gè)簡(jiǎn)單、可用的網(wǎng)絡(luò)環(huán)境和系統(tǒng)環(huán)境即可。
隨著業(yè)務(wù)產(chǎn)品的逐漸成熟,對(duì)于服務(wù)質(zhì)量方面就有了更高的要求。這個(gè)時(shí)候的運(yùn)維團(tuán)隊(duì)還會(huì)承擔(dān)一些服務(wù)器監(jiān)控的工作,同時(shí)會(huì)負(fù)責(zé)LVS、Nginx等與業(yè)務(wù)邏輯無關(guān)的4/7層運(yùn)維工作。
這個(gè)時(shí)候服務(wù)變更更多的是逐臺(tái)的手工操作,或者有一些簡(jiǎn)單批量腳本的出現(xiàn)。監(jiān)控的焦點(diǎn)更多的在服務(wù)器狀態(tài)和資源使用情況上,對(duì)服務(wù)應(yīng)用狀態(tài)的監(jiān)控幾乎很少,監(jiān)控更多的使用各種開源系統(tǒng)如Nagios、Cacti等。
由于業(yè)務(wù)規(guī)模和復(fù)雜度的持續(xù)增加,運(yùn)維團(tuán)隊(duì)會(huì)逐漸劃分為應(yīng)用運(yùn)維和系統(tǒng)運(yùn)維兩大塊。應(yīng)用運(yùn)維開始接手線上業(yè)務(wù),逐步開展服務(wù)監(jiān)控梳理、數(shù)據(jù)備份以及服務(wù)變更的工作。
隨著對(duì)服務(wù)的深入,應(yīng)用運(yùn)維工程師有能力開始對(duì)服務(wù)進(jìn)行一些簡(jiǎn)單的優(yōu)化。同時(shí),為了應(yīng)對(duì)每天大量的服務(wù)變更,我們也開始編寫各類運(yùn)維工具,針對(duì)某些特定的服務(wù)能夠很方便的批量變更。
隨著業(yè)務(wù)規(guī)模的增大,基礎(chǔ)設(shè)施由于容量規(guī)劃不足或抵御風(fēng)險(xiǎn)能力較弱導(dǎo)致的故障也越來越多,迫使運(yùn)維人員開始將更多的精力投入到多數(shù)據(jù)中心容災(zāi)、預(yù)案管理的方向上。
業(yè)務(wù)規(guī)模達(dá)到一定程度后,開源的監(jiān)控系統(tǒng)在性能和功能方面,已經(jīng)無法滿足業(yè)務(wù)需求;大量的服務(wù)變更、復(fù)雜的服務(wù)關(guān)系,以前靠人工記錄、工具變更的方式不管在效率還是準(zhǔn)確性方面也都無法滿足業(yè)務(wù)需求。
在安全方面也出現(xiàn)了各種大大小小的事件,迫使我們投入更多的精力在安全防御上。逐漸的,運(yùn)維團(tuán)隊(duì)形成之前提到的5個(gè)大的工作分類,每個(gè)分類都需要有專精的人才。
這個(gè)時(shí)候系統(tǒng)運(yùn)維更專注于基礎(chǔ)設(shè)施的建設(shè)和運(yùn)維,提供穩(wěn)定、高效的網(wǎng)絡(luò)環(huán)境,交付服務(wù)器等資源給應(yīng)用運(yùn)維工程師。應(yīng)用運(yùn)維更專注于服務(wù)運(yùn)行狀態(tài)和效率。
數(shù)據(jù)庫(kù)運(yùn)維屬于應(yīng)用運(yùn)維工作的細(xì)化,更專注于數(shù)據(jù)庫(kù)領(lǐng)域的自動(dòng)化、性能優(yōu)化和安全防御。運(yùn)維研發(fā)和運(yùn)維安全提供各類平臺(tái)、工具,進(jìn)一步提升運(yùn)維工程師的工作效率,使業(yè)務(wù)服務(wù)運(yùn)行得更加穩(wěn)定、高效和安全。
我們將運(yùn)維發(fā)展過程劃分為4個(gè)階段:
手工管理階段:業(yè)務(wù)流量不大,服務(wù)器數(shù)量相對(duì)較少,系統(tǒng)復(fù)雜度不高。對(duì)于日常的業(yè)務(wù)管理操作,大家更多的是逐臺(tái)登錄服務(wù)器進(jìn)行手工操作,屬于各自為戰(zhàn),每個(gè)人都有自己的操作方式,缺少必要的操作標(biāo)準(zhǔn)、流程機(jī)制,比如業(yè)務(wù)目錄環(huán)境都是各式各樣的。
工具批量操作階段:隨著服務(wù)器規(guī)模、系統(tǒng)復(fù)雜度的增加,全人工的操作方式已經(jīng)不能滿足業(yè)務(wù)的快速發(fā)展需要。因此,運(yùn)維人員逐漸開始使用批量化的操作工具,針對(duì)不同操作類型出現(xiàn)了不同的腳本程序。
但各團(tuán)隊(duì)都有自己的工具,每次操作需求發(fā)生變化時(shí)都需要調(diào)整工具。這主要是因?yàn)閷?duì)于環(huán)境、操作的規(guī)范不夠,導(dǎo)致可程序化處理能力較弱。此時(shí),雖然效率提升了一部分,但很快又遇到了瓶頸。
操作的質(zhì)量并沒有太多的提升,甚至可能因?yàn)榕繄?zhí)行而導(dǎo)致更大規(guī)模的問題出現(xiàn)。我們開始建立大量的流程規(guī)范,比如復(fù)查機(jī)制,先上線一臺(tái)服務(wù)器觀察10分鐘后再繼續(xù)后面的操作,一次升級(jí)完成后至少要觀察20分鐘等。
這些主要還是靠人來監(jiān)督和執(zhí)行,但在實(shí)際過程中執(zhí)行往往不到位,反而降低了工作效率。
平臺(tái)管理階段:在這個(gè)階段,對(duì)于運(yùn)維效率和誤操作率有了更高的要求,我們決定開始建設(shè)運(yùn)維平臺(tái),通過平臺(tái)承載標(biāo)準(zhǔn)、流程,進(jìn)而解放人力和提高質(zhì)量。
這個(gè)時(shí)候?qū)Ψ?wù)的變更動(dòng)作進(jìn)行了抽象,形成了操作方法、服務(wù)目錄環(huán)境、服務(wù)運(yùn)行方式等統(tǒng)一的標(biāo)準(zhǔn),如程序的啟停接口必須包括啟動(dòng)、停止、重載等。通過平臺(tái)來約束操作流程,如上面提到的上線一臺(tái)服務(wù)器觀察10分鐘。
在平臺(tái)中強(qiáng)制設(shè)定暫停檢查點(diǎn),在第一臺(tái)服務(wù)器操作完成后,需要運(yùn)維人員填寫相應(yīng)的檢查項(xiàng),然后才可以繼續(xù)執(zhí)行后續(xù)的部署動(dòng)作。
系統(tǒng)自調(diào)度階段:更大規(guī)模的服務(wù)數(shù)量、更復(fù)雜的服務(wù)關(guān)聯(lián)關(guān)系、各個(gè)運(yùn)維平臺(tái)的林立,原有的將批量操作轉(zhuǎn)化成平臺(tái)操作的方式已經(jīng)不再適合,需要對(duì)服務(wù)變更進(jìn)行更高一層的抽象。
將每一臺(tái)服務(wù)器抽象成一個(gè)容器,由調(diào)度系統(tǒng)根據(jù)資源使用情況,將服務(wù)調(diào)度、部署到合適的服務(wù)器上,自動(dòng)化完成與周邊各個(gè)運(yùn)維系統(tǒng)的聯(lián)動(dòng),比如監(jiān)控系統(tǒng)、日志系統(tǒng)、備份系統(tǒng)等。
通過自調(diào)度系統(tǒng),根據(jù)服務(wù)運(yùn)行情況動(dòng)態(tài)伸縮容量,能夠自動(dòng)化處理常見的服務(wù)故障。運(yùn)維人員的工作也會(huì)前置到產(chǎn)品設(shè)計(jì)階段,協(xié)助研發(fā)人員改造服務(wù)使其可以接入到自調(diào)度系統(tǒng)中。
在整個(gè)運(yùn)維的發(fā)展過程中,希望所有的工作都自動(dòng)化起來,減少人的重復(fù)工作,降低知識(shí)傳遞的成本,使我們的運(yùn)維交付更高效、更安全,使產(chǎn)品運(yùn)行更穩(wěn)定。對(duì)于故障的處理,也希望由事后處理變成提前發(fā)現(xiàn),由人工處理變成系統(tǒng)自動(dòng)容災(zāi)。