網絡DevOps探索與實踐
為什么要引入DevOps模式?

老的開發(fā)模式這樣會出現多個問題:
-
最常見的一個場景:開發(fā)這邊的排期已經到2個月之后,運營這邊覺得太晚了。但前面確實有那么多開發(fā)需求待實現。開發(fā)搞不過來了。
-
某些新的監(jiān)控項目,運營通過具體的數據才能知道該功能的業(yè)務價值;開發(fā)的同學把功能上線后,就忙著下一個需求了,對后續(xù)的運營關注不多。經常會導致歷史上積累了非常多的工具系統(tǒng),但作用都很寥寥。
-
基礎架構的運營系統(tǒng),原來只針對自研業(yè)務做了大量的功能;后來到公有云,現在也有大量的私有云客戶,服務的對象發(fā)生了變化。外部的客戶對功能需要做二次開發(fā),需要具備DevOps能力。
為了解決以上這些問題,需要系統(tǒng)化的來進行解決。根本上來說,就是要以人為本,提升運營與開發(fā)的滿意度,DevOps是一個切實可行的方案。
DevOps沒有發(fā)明任何新技術,他只是一種軟件開發(fā)的模式。這里有個DevOps的分級模型,是國內業(yè)界的前輩制定了一個規(guī)范,最近也已經通過了ITU-T組織的審核。這里內容比較多,不逐一贅述?;A架構DevOps的實踐過程,是借鑒其理念,讓大家都在同一個簡單易用的軟件平臺上進行合作開發(fā),達到服務快速上線目的。其中最主要的一個關鍵點就是雙方要進行融合,互相促進。
騰訊網絡運營DevOps系統(tǒng)的現狀
騰訊的網絡運營先后經歷人工操作、工具腳本、自動化等這幾個階段。運營團隊,就是我們熟悉的網工,過去都有專業(yè)的開發(fā)人員來進行配套的工具系統(tǒng)開發(fā)。在過去幾年,網工們的開發(fā)能力持續(xù)提升,在DevOps平臺的加持下,已經掌握了通用的開發(fā)能力,一些運營過程中需要的功能,可以基于DevOps平臺自行開發(fā)了。這樣,傳統(tǒng)的開發(fā)人員和網工,都可以基于這個統(tǒng)一平臺來“吃自己的狗糧”。運營人員自行開發(fā)功能,上線后出現問題,反查自己設計的業(yè)務邏輯;開發(fā)人員主導開發(fā)功能發(fā)布后,出現了bug,也自己定位代碼或者平臺的問題。這樣,發(fā)現問題后,都先從自身出發(fā)來排查,減少了互相埋怨,大家的關系也相對融洽起來。
如何建設DevOps平臺?
我們把建設的過程分以下6個方面來介紹。
1、上層規(guī)劃 – 運營事務流程化
無流程不運營。我們在內部先把這個意識先進行了統(tǒng)一,這個是DevOps開發(fā)的前提,也是DevOps任務可編排的前提。我們經常說可編排,編排完了之后,不就是由一個個編排后節(jié)點串接起來的流程嗎?下面跟大家介紹下我們內部總結出來的流程成熟的模型。初步評估,騰訊基礎架構運營處在level 3這個階段。怎么解讀呢?
-
流程體系化,是指我們各個運營業(yè)務基本都有了對應的線上流程。幾乎不存在線下操作的場景了。
-
部分的流程完成生命周期管理,這個是對流程控制端到端的一個需求。
-
較為完善的OLA/SLA管理,有了詳細的OLA數據,我們就能對每個工單的實施過程都能詳細的分析和管理。
-
工具系統(tǒng)敏捷迭代,系統(tǒng)工具除了能直接解決業(yè)務的需求,還要有二次開發(fā)的能力。

在系統(tǒng)架構頂層設計方面,我們使用DDD—領域驅動設計的模式,具體到DevOps平臺,著重領域層的實踐。把DevOps的整體功能模塊分為四大塊:
-
可視化編排平臺:這個是運營事務流程化的具體落地方式。流程圖讓業(yè)務邏輯可以非常直觀的展示出來。
-
應用管理模塊:方便用戶參與開發(fā)。SDK的方式,是開源共建的基礎,減少了大量重復代碼;權限管理,有效避免了用戶之間的互信影響。
-
數據運營模塊:數據化管理。流程及工單數據每天都會以非常大的量級增長,沒有完善的任務超時告警及運營數據自動收集分析功能,后續(xù)的業(yè)務維護會非常耗時耗力。
-
平臺管理:是系統(tǒng)運維的重要窗口。讓人人可運維成為可能。

無代碼化開發(fā),并不是指一行代碼都沒有。而是盡量減少編碼的場景。在很多模塊中,DevOps平臺把設備命令模板層、業(yè)務函數、業(yè)務流程及觸發(fā)規(guī)則等這四個層次,都用對應的模板或SDK封裝起來,形成可復用的邏輯。這里列舉的是命令模板這一層的封裝。對于運營人員來說,在DevOps體系的驅動下,開發(fā)能力逐步提升。同時,通過配置化或少量的代碼,可以用極低的成本,快速開發(fā)上線驗證類的功能,不需要任何專業(yè)開發(fā)資源投入,大大較少試錯的成本。
3、DevOps的生命周期管理
這里是從DevOps開發(fā)的新模式出發(fā),把過程中需要配套的功能點逐一進行完善,從而完成了DevOps開發(fā)整個生命周期的管理。

-
需求管理。對需求進行建模,把功能點往各個預分配好的領域靠攏,避免功能碎片化。在騰訊內部,有TAPD工具對需求做詳細跟蹤,保證落地效果。
-
開發(fā)環(huán)境。這個是參與DevOps開發(fā)同學最關心的地方,直接關系到開發(fā)效率。主要涉及環(huán)境統(tǒng)一配置、代碼版本管理、測試覆蓋及CI/CD等環(huán)節(jié)。
-
流程管理。事務流程化后,會產生非常多的流程,流程圖需要方便創(chuàng)建及修改;其次在工單建立后,會馬上實例化,任務執(zhí)行過程中的異常超時基礎配置需要在OLA/SLA中進行配置。
-
任務管理。具體事務的操作,更多的是調用第三方接口和對設備進行查詢操作。需要全程對任務的執(zhí)行過程進行跟蹤,其次需要把可以復用的代碼通過SDK有效管理起來,避免重復開發(fā)。
-
運維管理。這塊是整個DevOps平臺的后腰,保證系統(tǒng)的正常運行,以及出現問題后快速恢復。

提供便于DevOps應用開發(fā)和運維的Web控制臺,旨在通過頁面可視化以及頁面可操作的手段,提升開發(fā)和運維效率。在過去,我們講的D/O分離是指開發(fā)與系統(tǒng)運維的分工。在DevOps時代,運維工具不但面向專業(yè)開發(fā)人員,也需要面向業(yè)務開發(fā)人員,讓大家在同一個控制臺中發(fā)現問題、定位問題。在運維底層功能方面,我們把流程實例管理、任務管理及控制臺的功能,按不同的角色進行開放。本著誰開發(fā),誰負責的原則,大家一起共同把系統(tǒng)平臺及業(yè)務功能模塊的可用性維護起來。
5、認證管理 – 建立崗前認證培訓體系
DevOps是一個以人為本,回歸人性的一種開發(fā)運維文化,其效果體現更多的是在于人,在于從業(yè)人員能力的提升,更注重開發(fā)人員的感受。所以,在內部有一個DevOps的認證體系,經過這個體系的培訓,可以讓一個小白用戶從零開始逐步上手。這個培訓體系主要分為四個步驟:
-
開發(fā)知識基礎。主要是學習開發(fā)環(huán)境、代碼管理及代碼檢查一些基礎的知識。
-
DevOps功能開發(fā)。這個是按照基礎架構運營功能的特點來展開的,主要的內容包括需求的提煉匯總,把運營需求用流程圖的形式展示出來,然后進行任務節(jié)點的邏輯代碼編寫。
-
demo實戰(zhàn)。經過以上兩個階段的學習,這里可以開始動手了。
-
經過一系列培訓,通過考試后,對學員頒發(fā)證書。并根據不同的能力水平,證書也會區(qū)分一級、二級和三級。
我們的題目叫“最佳實踐”,但這個過程并不是一帆風順的,過程中經歷了非常多的挫折與不理解。我們把這些因為考慮不完善而踩坑的地方總結了幾個最差實踐。

第一方面就是主要功能點缺乏,用戶使用滿意度不高。
1)嘗試去優(yōu)化某個具體的環(huán)節(jié),而忽略了全局優(yōu)化的可能
前期缺少頂層設計,舉個例子,我們之前一直以為畫流程圖是用戶接觸DevOps系統(tǒng)的第一個界面,是業(yè)務需求轉化的第一步。就千方百計的把畫流程圖的界面進行優(yōu)化。但用戶在畫完圖了后,后面就很少會關注了。
2)產品化不夠,用戶使用不夠友好
一個功能完備的DevOps平臺就跟建設一座城市或一個小區(qū)一樣,有太多的功能點需求開發(fā)。SDK的合入規(guī)則,云函數的調用方式等等。這些專業(yè)的開發(fā)技能,對于傳統(tǒng)的開發(fā)同學來說,大家交流起來是很順暢的。但對于運營同學,要跟大家解釋就顯得比較費勁。
3)研發(fā)效能低下
本地開發(fā)環(huán)境無法與線上環(huán)境保持一致,調試困難。還有業(yè)務代碼邏輯的經常需要線上調試,測試的覆蓋率長期偏低,功能穩(wěn)定性無法保證。還有bug定位跟蹤的方式比較單一,一個bug需要分析半天才能知道問題點在哪里。
第二方面是過度設計,沒有使用戶真正獲益。對于Devops的深入程度,有一點我們必須牢記,那就是DevOps平臺系統(tǒng)本身的成功并不是真正的成功,只能是業(yè)務的效率提升,使用DevOps的用戶滿意度提升了,才是檢驗成功的唯一標準。
網絡運營DevOps系統(tǒng)的后續(xù)發(fā)展 - 打造生態(tài)

羅馬不是一天建成的,這個DevOps平臺凝聚了騰訊基礎架構運營多年的經驗。之前我們談的自動化及數據化運營,更多是端到端的傳統(tǒng)開發(fā)方式。具體到DevOps,我們希望可以打造一個生態(tài),可以跟眾多的合作伙伴和外部的用戶一起,一起在同一個平臺上進行功能完善和迭代。
在接口對接方面,近期我們跟很多運營商及設備廠商一起努力,把報障、割接、還有case管理、備件管理等幾個使用頻率最高的場景進行了線上對接。在外部用戶方面,我們通過騰訊云的窗口,把DevOps的能力對外進行的開放。使用的用戶越多,發(fā)現越多的問題,DevOps平臺的功能就可以越趨完善。
文章來源:鵝廠網事