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