在很多“外人”的眼中,運(yùn)維工程師的工作不過(guò)是搬機(jī)器、調(diào)網(wǎng)絡(luò)、裝軟件、處理故障、7×24小時(shí)值班,簡(jiǎn)單而又枯燥至極。但事實(shí)并非如此,運(yùn)維工作涵蓋很多技術(shù)領(lǐng)域,運(yùn)維工程師要掌握硬件、軟件、操作系統(tǒng)、開發(fā)等多方面的知識(shí),核心目標(biāo)是為億萬(wàn)用戶使用的產(chǎn)品保駕護(hù)航。當(dāng)今互聯(lián)網(wǎng)行業(yè)的發(fā)展日新月異,新技術(shù)層出不窮。為了適應(yīng)發(fā)展趨勢(shì),運(yùn)維工程師只有提升技術(shù)能力才能更好地完成艱巨的運(yùn)維任務(wù),必須要對(duì)傳統(tǒng)運(yùn)維發(fā)出自我挑戰(zhàn)。 在360,運(yùn)維團(tuán)隊(duì)由基礎(chǔ)運(yùn)維團(tuán)隊(duì)、網(wǎng)絡(luò)運(yùn)維團(tuán)隊(duì)和應(yīng)用運(yùn)維團(tuán)隊(duì)三部分組成。我們將運(yùn)維從技術(shù)支持領(lǐng)域升級(jí),進(jìn)行產(chǎn)品化改進(jìn),核心目標(biāo)是為了降低運(yùn)維成本、 縮短研發(fā)周期、讓產(chǎn)品試錯(cuò)更廉價(jià)。理想很豐滿,現(xiàn)實(shí)很骨感,從最初服務(wù)少量項(xiàng)目、幾十臺(tái)服務(wù)器,發(fā)展到大量具有數(shù)億用戶的項(xiàng)目,我們也在不斷摸索,在試錯(cuò)中成長(zhǎng)。在這個(gè)過(guò)程中,我們經(jīng)歷了兩次重要的升級(jí)。 01 第一次升級(jí):運(yùn)維工具化
在工具化過(guò)程中,我們秉著低成本、拿來(lái)即用的原則,借鑒業(yè)界成型的方案,同時(shí)將精力用在對(duì)開源軟件的研究中,有開源工具就絕不自己憑空創(chuàng)造。初期,我們只圍繞開源軟件做周邊腳本開發(fā),不動(dòng)核心代碼,在實(shí)踐中總結(jié)經(jīng)驗(yàn)。例如,在最基礎(chǔ)的部署軟件環(huán)境中,我們基于YUM搭建了自己的包管理系統(tǒng),將常用軟件打包, 同時(shí)根據(jù)項(xiàng)目做成模板,這樣無(wú)論是初始安裝還是擴(kuò)容都能在分分鐘完成。配置文件管理利用Puppet完成,服務(wù)器批量操控依賴SaltStack。就這樣 我們的運(yùn)維兵器譜在不斷地豐富。 另外,運(yùn)維工作離不開監(jiān)控報(bào)警,這是一件讓無(wú)數(shù)運(yùn)維人苦不堪言的事情。而會(huì)休息才會(huì)工作,監(jiān)控體系必須優(yōu)化。我們的監(jiān)控大概分為系統(tǒng)級(jí)、應(yīng)用級(jí)、項(xiàng)目邏輯和用戶體驗(yàn)四部分。
我們用過(guò)的工具很多,開源工具有Nagios、 Cacti、Ganglia、Zabbix等,同時(shí)自己也開發(fā)了一些針對(duì)項(xiàng)目場(chǎng)景的監(jiān)控工具,但萬(wàn)變不離其宗,都是圍繞上述幾個(gè)維度進(jìn)行監(jiān)控,然后再進(jìn)行分級(jí)預(yù)警和報(bào)警。 為了減少報(bào)警騷擾,我們分級(jí)處理,將報(bào)警分為郵件預(yù)警、短信報(bào)警和瘋狂短信報(bào)警。以磁盤空間監(jiān)控為例:每天下午6點(diǎn),統(tǒng)計(jì) 磁盤使用率超過(guò)80%的機(jī)器,發(fā)出郵件預(yù)警,下班前解決;在預(yù)警的基礎(chǔ)上,超過(guò)85%觸發(fā)短信報(bào)警;超過(guò)90%就要持續(xù)報(bào)警,避免事故的發(fā)生。此外,隨著 服務(wù)器數(shù)量的增多,硬件故障在所難免,架構(gòu)設(shè)計(jì)需要考慮高可用方案,冗余范圍內(nèi)的服務(wù)器故障會(huì)以郵件預(yù)警的方式發(fā)出,避免對(duì)運(yùn)維工程師的騷擾。 有了監(jiān)控工具和分級(jí)機(jī)制,還需要有好的制度。為了大部分人可以安心休息,我們每天有專人負(fù)責(zé)處理常規(guī)報(bào)警,遇到無(wú)法解決的問(wèn)題才要求他人協(xié)助。第二天的負(fù)責(zé) 人要針對(duì)第一天的報(bào)警找出根本原因,并盡力解決,因?yàn)槿绻麩o(wú)法根治,困擾將持續(xù)發(fā)生。所謂線上無(wú)小事,實(shí)際工作中復(fù)雜場(chǎng)景引發(fā)的問(wèn)題數(shù)不勝數(shù),所以可以寬容第一次錯(cuò)誤,但不能接受同樣問(wèn)題發(fā)生第二次,要不斷地總結(jié)和完善。 工具化是運(yùn)維的必經(jīng)之路,是向更高層發(fā)展的基礎(chǔ),面對(duì)運(yùn)維這樣復(fù)雜的學(xué)科,這樣一個(gè)極其磨煉人意志的工種,運(yùn)維工程師需要用聰明的方式解決復(fù)雜的問(wèn)題,節(jié)省時(shí)間,去做更有意義的事情。 02 第二次升級(jí):運(yùn)維產(chǎn)品化
有了這個(gè)想法,就需要將無(wú)形的技術(shù)轉(zhuǎn)變?yōu)橛行蔚漠a(chǎn)品形態(tài),同時(shí)要賦予它好的寓意。我們的產(chǎn)品取名為HULK——綠巨人,意在讓小伙伴們借助巨人的肩膀成長(zhǎng),輕點(diǎn)鼠標(biāo),運(yùn)籌帷幄。想到做這個(gè)平臺(tái),源于對(duì)實(shí)際工作需求的觀察。產(chǎn)品經(jīng)理有了創(chuàng)新點(diǎn)之后,開發(fā)工程師就想以最快的速度上線,但又會(huì)很痛苦,因?yàn)楫a(chǎn)品就好比寶塔明珠,塔基需要一 層層地蓋。而開發(fā)工程師是與運(yùn)維工程師合作最緊密的兄弟,“兄弟有難得拔刀相助”,因此我們明確了開發(fā)工程師就是運(yùn)維平臺(tái)的用戶,運(yùn)維工程師在平臺(tái)的建設(shè) 中扮演了多重角色,是建設(shè)者也是使用者,但目標(biāo)是為用戶解決問(wèn)題,讓我們的用戶有極致的用戶體驗(yàn)。 基于這些想法,我們勾畫出了宏偉藍(lán)圖,提供一個(gè)塔基, 第一層提供核心基礎(chǔ)服務(wù),如Web、RDB、NoSQL等; 第二層提供通用基礎(chǔ)服務(wù),構(gòu)造一個(gè)完美的平臺(tái),讓開發(fā)工程師受益。 但勾畫的平臺(tái)功能大而全,需求都是我們替用戶假想的,這樣做的后果就是進(jìn)展緩慢,但做出的功能沒(méi)人用。我們?cè)谑≈蟹此迹庾R(shí)到需求還得從日常工作中去挖掘,平臺(tái)上每個(gè)功能模塊都必須解決用戶的痛點(diǎn)。互聯(lián)網(wǎng)精神唯快不破,要圍繞“快”找痛點(diǎn)。早期開發(fā)和運(yùn)維的合作中,更多的是郵件、IM及當(dāng)面溝通,跨團(tuán)隊(duì)的溝通成本是第一個(gè)痛點(diǎn)。初期平臺(tái)建設(shè)中,我們從加速流程開始進(jìn)行摸索,以“需求任務(wù)流”為核心,將通用需求規(guī)范流程,統(tǒng)一需求提交頁(yè)面,同時(shí)盡量為用戶提供選項(xiàng),而不是隨意填寫,盡量減少溝通成本,同時(shí)為完全自動(dòng)化打好基礎(chǔ)。由于完整的自動(dòng)化流程開發(fā)成本比較高,初期我們還“投機(jī)取巧”,用戶提交需求以后,只是把格式化的郵件發(fā)送給運(yùn)維工程師。運(yùn)維工程師使用半自動(dòng)化工具干活,完成后再通過(guò)平臺(tái)任務(wù)流告知用戶結(jié)果,手工操作的部分是隱藏在平臺(tái)后面的,用戶不得而知。就 用這種方式,我們的平臺(tái)積累了不少用戶和口碑。之后我們將日常需求分層、分類:主機(jī)類包括主機(jī)申請(qǐng)、賬號(hào)授權(quán)、軟件部署等;Web類包括配置文件管理、域名管理等;DB類包括建庫(kù)、建表、SQL審核、授權(quán)等。再攻克技術(shù)難點(diǎn)將一個(gè)個(gè)需求實(shí)現(xiàn)完全自動(dòng)化,點(diǎn)點(diǎn)鼠標(biāo)解決問(wèn)題。 關(guān)于需求任務(wù)流,還有個(gè)小插曲,標(biāo)準(zhǔn)的任務(wù)流由提交、審核、駁回/通過(guò)組成。但這個(gè)流程太死板,例如用戶提交的一個(gè)需求,在審核的過(guò)程中有待商榷,運(yùn)維工程師會(huì)和開發(fā)工程師 溝通,最終達(dá)成一致意見即可,而如果按標(biāo)準(zhǔn)流程需要駁回再提交。為了讓用戶少一次操作,我們?cè)黾恿斯芾韱T可編譯功能。有些同事反對(duì)這樣做,覺(jué)得不符合常 理。不過(guò)有時(shí)候常理是需要結(jié)合實(shí)際場(chǎng)景打破的,就為了讓用戶使用更簡(jiǎn)單。 近期為了進(jìn)一步提升項(xiàng)目試錯(cuò)階段的速度,我們?cè)谄脚_(tái)上推出了一個(gè)新功能:“項(xiàng)目孵化器”。以典型的Web業(yè)務(wù)為例,以往,申請(qǐng)Web Server、賬號(hào)、數(shù)據(jù)庫(kù)實(shí)例、負(fù)載均衡等是提給運(yùn)維最基本的需求,每一步都是時(shí)間成本。使用“項(xiàng)目孵化器”可以最大限度解決這個(gè)痛點(diǎn),只需在平臺(tái)上進(jìn) 行兩個(gè)步驟:第一步填寫業(yè)務(wù)名稱,預(yù)估峰值QPS;第二步選用MySQL、MongoDB、Redis等相關(guān)數(shù)據(jù)庫(kù)資源。兩步之后,Web Server、數(shù)據(jù)庫(kù)實(shí)例等所需資源會(huì)瞬間展示在用戶面前,同時(shí)包管理、配置文件管理、代碼發(fā)布系統(tǒng)、監(jiān)控系統(tǒng)等配套輔助功能隨之開通。 與之前的模式相比,效率和規(guī)范化都有明顯提高。說(shuō)起來(lái)很神奇,但實(shí)現(xiàn)理念很簡(jiǎn)單,我們提煉日常項(xiàng)目中的通用方案,構(gòu)建資源池,在項(xiàng)目發(fā)展初期最小量匹配資源。在孵化器的設(shè)計(jì)階段,我們聽到了很多不同的聲音。例如,讓用戶填信息不夠全面,架構(gòu)太簡(jiǎn)單不滿足全部需求,諸如此類問(wèn)題,讓人頭痛欲裂。經(jīng)過(guò)過(guò)往項(xiàng)目 分析及用戶調(diào)研,發(fā)現(xiàn)項(xiàng)目尚處于試錯(cuò)階段,快速試錯(cuò)是首要需求。至于項(xiàng)目發(fā)展中衍生出來(lái)的需求,可以再用平臺(tái)擴(kuò)展功能去解決。 當(dāng)利用孵化器建立一個(gè)試錯(cuò)項(xiàng)目之后,用戶進(jìn)入平臺(tái)想看見什么?展現(xiàn)形式如何?還能做什么?這些問(wèn)題隨之而來(lái)。 眾所周知,項(xiàng)目中的關(guān)聯(lián)關(guān)系是個(gè)復(fù)雜的問(wèn)題,解決不好,就像一盤散沙無(wú)法聯(lián)動(dòng)。為了解決此問(wèn)題,首先我們確定平臺(tái)各功能模塊以項(xiàng)目名為主鍵,將項(xiàng)目的域名、負(fù)載均衡、Web Server、數(shù)據(jù)庫(kù)、通用基礎(chǔ)服務(wù)等相關(guān)聯(lián)。項(xiàng)目后期各功能模塊的擴(kuò)容可以借助關(guān)聯(lián)關(guān)系自動(dòng)化完成。例如增加一臺(tái)Web Server,即可自動(dòng)部署軟件環(huán)境,完成相關(guān)節(jié)點(diǎn)授權(quán)、上傳代碼、測(cè)試上線。 展現(xiàn)形式上我們借鑒社交網(wǎng)站的實(shí)現(xiàn)方案,以“我的項(xiàng)目”為中心,用戶進(jìn)入平臺(tái)以后默認(rèn)頁(yè)展示項(xiàng)目在平臺(tái)中用到的各功能模塊信息,例如域名、主機(jī)數(shù)量、數(shù)據(jù)庫(kù)實(shí)例和監(jiān)控指標(biāo)等。做到信息清晰可見,操控簡(jiǎn)單易用。 在平臺(tái)建設(shè)中,我們一直遵循兩個(gè)準(zhǔn)則:第一,把事情由復(fù)雜變簡(jiǎn)單;第二,給用戶極致的用戶體驗(yàn)。所謂極致,就是要超出用戶的預(yù)期,但只有挖掘用戶潛在的需求,才能做出超出預(yù)期的功能。傳統(tǒng)的運(yùn)維模式,大多是開發(fā)工程師提需求,運(yùn)維工程師滿足需求,運(yùn)維工程師主動(dòng)推進(jìn)的意識(shí)不夠。 360的文化中有很重要的一點(diǎn)是Ownership,一個(gè)項(xiàng)目的成功與失敗,運(yùn)維工程師是有責(zé)任的,因此需要在日常工作中時(shí)刻提醒自己“這個(gè)項(xiàng)目是我的,為了讓項(xiàng)目變得更好,我們需要主動(dòng)思考,為開發(fā)工程師提供更多的增值服務(wù)”。例如一個(gè)項(xiàng)目上線前,會(huì)默認(rèn)部署日志收集模塊,收集匯總后進(jìn)行訪問(wèn)日志自動(dòng)化分析,以時(shí)間維度展示訪問(wèn)量走勢(shì),同時(shí)輔以IP地址分析模塊展示地域及運(yùn)營(yíng)商分布。同時(shí)基于訪問(wèn)日志狀態(tài)碼做進(jìn)一步的頁(yè)面分析,然后以日、周、月維度生成一份體檢報(bào)告,以及應(yīng)對(duì)方案推送給開發(fā)工程師。這些增值服務(wù)是超出預(yù)期的,拉近了開發(fā)工程師和我們的距離,一起去探討、改進(jìn),做出更多有利于項(xiàng)目發(fā)展的功能。 結(jié)束語(yǔ) 運(yùn)維工作在一家公司中至關(guān)重要,但傳統(tǒng)的運(yùn)維模式一定程度上限制了運(yùn)維工程師的技術(shù)發(fā)展,更抑制了創(chuàng)新思維,我們需要利用運(yùn)維“寬泛技術(shù)”定位的優(yōu)勢(shì)開拓思路。例如運(yùn)維工作需要和很多開發(fā)團(tuán)隊(duì)合作,協(xié)助架構(gòu)設(shè)計(jì),在這個(gè)過(guò)程中會(huì)接觸到很多開發(fā)團(tuán)隊(duì)的技術(shù)積累,可以把各家之所長(zhǎng)進(jìn)行聚合,將一些基礎(chǔ)服務(wù)進(jìn)行平臺(tái)化改造,資源共享。也可以根據(jù)項(xiàng)目的需要,主動(dòng)做技術(shù)研究,將基礎(chǔ)服務(wù)做成一個(gè)個(gè)小產(chǎn)品,提供給開發(fā)團(tuán)隊(duì)使用,幫助項(xiàng)目縮短研發(fā)周期,穩(wěn)定發(fā)展。在當(dāng)今技術(shù)背景下,運(yùn)維工程師應(yīng)該在紅海中尋找藍(lán)海的思維模式,培養(yǎng)產(chǎn)品觀,由外至內(nèi)陸思考,突破傳統(tǒng)運(yùn)維的壁壘,開拓創(chuàng)新。 附:360IT系統(tǒng)建設(shè)與運(yùn)維(白健) Tips:輸入關(guān)鍵字IT運(yùn)維以獲得更多相關(guān)內(nèi)容 CIO之家-踐行,見未來(lái)
|
|
來(lái)自: yinyindengjie > 《工作相關(guān)》