六、自動化交付平台-標準化建設
09-01
六、自動化交付平台-標準化建設
來自專欄 DevOps成長記錄1 人贊了文章
沒有標準化就沒有自動化。 ——某名人說的
自動化建設,標準先行。 ——某大神說的自動化是建立在標準化的基礎之上的。 ——隔壁小王說的
標準化的重要性是毋庸置疑的,隔壁做網管的小王都能縐出幾句和標準化相關的論調。
一、標準化建設所面臨的難題
如果是在一個從0開始的創業公司,各種標準化的制定那真是水到渠成,稍加規劃,就可以為以後打下牢固的基礎。但是,一家有一定歷史的公司,因為業務的野蠻生長,沒來得及制定相應的規範,等到團隊規模大了之後,想要再制定規範,落地就會變得困難重重。
每個部門領導、每個員工都會基於自己的崗位有不同的價值定位,但是標準和規範要求一般不會體現在崗位價值中,而是作為員工手冊或紅線條款之類的約束,所以規範的落地從其他參與者的視角來看,就會變成一件額外的、影響其工作的事情,常常有不反抗、不配合的情況出現。其實從不同的角度看問題,並不存在誰對誰錯。在標準的制定上,換位思考很重要。
二、標準化建設的抉擇
標準落地很困難是一個客觀存在的事實,如果公司管理層本身也只看業務發展,不關心基礎建設,那這事基本也就黃了。就算管理層能夠意識到標準化建設的重要性,也不可能給予很多資源來推動事情落地,畢竟只有業務發展才是維繫公司生存的生命線,在立項的時候領導一定會說:「在保障業務目標的前提下,......。」
要想讓其他同事能夠配合標準的落地,個人覺得要遵循幾個方法:
- 基於有限的資源,要儘可能的把刀用在刀刃上。標準的制定要儘可能控制邊界,能夠快速落地。標準的建立要從基於場景的核心需求出發。比如為自動化部署制定標準時,應該強調環境標準、部署操作標準、各環節流轉的輸入輸出標準等。所以制定標準,先列出目標場景,再根據場景找到核心需求點,這樣制定的標準邊界會很清晰,落地過程也可以基於場景來監控和審查。
- 落地的過程要能夠被監控和審核,能扎口。每個人在工作中都會有選擇傾向,人之常情是優先完成能夠突顯業績和能力的工作。像標準化這種費力不討好,大量重複性工作的事情,落地困難也是可以預料的。所以,在推行標準化的時候,要有相應的激勵和懲罰機制,而要想量化考核機制,就一定要建立對應的監控和審核能力。不同的標準化場景,審核和扎口的環節也不一樣。比如,涉及到代碼層的一些規範,運維一般是無法直接接觸的,所以扎口建議放在測試環節進行。再比如,伺服器及操作系統層的標準,執行方和審核方都是運維,這樣即做運動員又做裁判的場景里,靠人的自覺是靠不住的,要結合不講人情的工具來實現,例如通過統一標準的自動化腳本對各種指標進行數據採集和分析。
- 讓兄弟部門參與標準的制定。一個巴掌拍不響,眾人鼓掌聲震天(符合年齡段的請自行腦補歌曲)。標準的制定絕對不只是單個部門的事情,而是要以提高公司整體效率為出發點。但是,這裡存在一個思維陷阱:「人都是自私和利己的」。我們也會以同樣的標準去認識其他人,那標準規範在其他人眼裡就會變成一種配合完成的被動工作。所以,在標準制定的時候,一定要讓相關人員參與進來,一起定下標準規範,這樣在落地的過程中,大家就會把標準當成自己的事來做(遇到困難也會說一句:「親生的,沒辦法」)。
三、標準化的例子
我所在的團隊,正在逐步建設自動化運維能力,目前已完成的自動化運維場景包括:交付流水線和業務告警自動化平台。而基於這兩個場景,所涉及到的標準規範也只有兩個:
- 交付流程標準化。這塊涉及的方面其實比較多,可是標準化的內容其實不多。
- 產品交付標準。嚴格執行全量包交付。版本的交付環節,一定要經過測試、預發布、生產。扎口是通過自動化平台的固化流程來實現。
- 統一各環境信息。所有環境的部署路徑、目錄屬主、啟動用戶、環境參數及版本實現標準化統一。扎口是在部署過程中加入固化的檢查環節來實現。
- 部署操作標準化。以模塊為單位,統一其所有環境的啟動、停止、部署操作。扎口是通過在自動化平台把操作過程當成統一事項管理,不允許單獨對各環境單獨配置獨立操作。
- 日誌標準規範。目前我們對業務的監控主要依靠日誌,這是實現起來相對比較快捷且有效的業務監控手段。日誌規範主要定義了以下三部分內容:
- 日誌目錄。日誌存放目錄的絕對路徑每個模塊都是統一的,避免差異化,實現起來很簡單,可以減少找目錄會帶來的額外時間成本。這塊的扎口比較好落地,可以由人工在測試環境進行校驗;同時,部署過程中,自動化平台也會去固定的目錄里獲取日誌,能夠及時發現目錄不符合規範的問題。
- 日誌格式。因為業務日誌會採用ELK做統一收集,統一日誌的輸出格式,能夠快速的對logstash進行配置。這塊對研發來說會有一定的一次性改造成本,效果是能夠把日誌採集的初始化配置變成自動的,對後期維護的提升非常明顯。這塊的扎口主要通過部署到生產後的監控來進行,如果日誌格式不符合規範,logstash的正則就會失效,進而導致日誌無法採集到ELK。我們從運維側定義了監控的准入要求,不符合日誌規範的業務系統無法通過自動化平台創建監控告警,並且定期通報不符合日誌規範的系統,要求限期整改。
- 日誌內容標準。要求日誌的內容為JSON格式,並且對各個關鍵指標的key值和value的欄位類型進行了限定。扎口實現同上,主要通過實際需求場景來約束標準的落地。
推薦閱讀:
※豬八戒網的DevOps進化論
※Gitlab CI 與 DevOps
※航司數字化轉型的重點投放及IT要素 (1)
※818DevOpsDays上海站,這麼多大佬都來找嘉維藍鯨!