下圖是咱們熟知的軟件研發環節,在迭代頻率高的研發組織裏,一天可能要經歷屢次以下循環。對於用戶羣體龐大或者正在經歷大幅業務擴張的企業研發組織,除了重點關注應用的快速上線以外,如何保障應用的高可靠、高可用也成爲焦點,即服務上線要快,運行要好。算法
如何讓開發更簡單,運行更高效,接下來咱們從兩個角度來探討這個問題:數據庫
近年來,國內也興起了 SRE 這種高級運維職業,特別是在雲計算行業,SRE 的職業要求很是高,須要精通諸如網絡、編程、算法、數據結構、操做系統、安全等知識與技能。當雲平臺出現網絡故障、系統故障等問題,這對雲租戶/用戶有時甚至是致命的,因此很多 SRE 是由高級別開發人員轉型而來。編程
在 Google SRE 的服務可靠性層級當中,SRE 經過產品、開發、容量規劃、測試、根因分析、事件響應、監控七個層次的實踐來確保應用服務的健康狀態。從這個層級當中咱們能夠看出 Google 提倡運維要積極控制服務發展的方向,而不只僅在事故發生後反應性地滅火。目前來看,SRE 這種精英式的運維在國內還有待探索與實踐。瀏覽器
粗暴地將開發運維拆開,或者將開發運維簡單合併,都不是特別合適的一種方式。從筆者的研發經驗看,一種方式可供你們思考與討論——根據業務實際狀況作分工:好比由團隊內的開發者輪流負責整個項目運維。因爲各個開發者對項目公共代碼都須要熟悉,在理解其它模塊代碼也相對快速,這種方式基本能消滅大部分的問題,剩下的一小部分能夠和指定模塊的負責人結對定位。除此以外,爲「每一個服務團隊分派運維聯絡人」,「邀請運維工程師參加開發團隊的會議」都是可以增強運維與開發之間協做的措施。緩存
除了恰當的人員組織方式以外,合適的工具也能給研發團隊注入能力。安全
在配置研發環境時,研發組織能夠選擇經過開源工具自建代碼管理和持續構建環境。這種方式的缺點在於須要有專門的 CI 團隊來維護持續構建環境,一旦環境被破壞,開發的腳步就會停滯。而且因爲各個開源工具數據未打通,開發人員要在多個工具之間切換使用。另一種方式就能夠經過現有的軟件研發管理系統,例如 CODING 研發管理系統,來實現一站式的研發流程管理,無需自建、維護衆多的研發工具與研發環境,支持在瀏覽器中完成全套軟件開發流程,真正作到了 Coding Anytime Anywhere。服務器
當開發人員經過 CODING 研發管理系統快速開發並部署好應用後,下一步就要讓應用在運維工具的輔助監控下可靠運行(並非全部應用都須要運維工具,需對症下藥)。研發組織能夠選擇本身開發運維工具,也能夠選擇現有的運維工具。網絡
目前的運維工具逐漸地朝以應用爲中心發展,由於應用是直接向用戶提供業務能力的,不管是開發仍是運維,都是被業務價值驅動的。主流的運維工具主要涵蓋基礎設施層監控、應用層面監控、業務層面的分析與監控。數據結構
接下來咱們看看現有的運維工具通常會提供哪些具體能力:運維
國外熱度較高的運維工具包括 ZIPKIN(分佈式追蹤),pinpoint(分佈式追蹤),logstash(數據收集)等等。目前國內各大雲廠商也基本都提供了應用運維平臺,包括騰訊藍鯨、阿里 ARMS、華爲 APM 等。如下是這幾個運維平臺能力的簡要對比:
目前大部分的運維平臺主要經過 Agent 和探針的方式去採集應用的指標信息,彙總處理後反應在可視化界面上。除上述的工具和平臺以外,AIOps 也逐漸成爲將來的一個趨勢,AIOps 經過 AI 技術的運用來進行智能業務故障診斷,同時自動恢復應用故障,企圖讓研發組織完全告別人肉運維時代,筆者也萬分期待這天的到來。運維人員不用擔憂因 AIOps 失業,工具和平臺只是提高運維效率,不會取代運維。
在運維階段發現缺陷後,開發人員可在 CODING 中處理對應的缺陷,記錄下每一個缺陷的類型、優先級、模塊、描述、處理人等信息。軟件缺陷是不可避免的,但只有經過對缺陷進行管理和覆盤才能知道缺陷產生的緣由(人爲因素 / 環境因素 / 工具問題等),從而改進,避免相似缺陷的重複。對缺陷的管理也有助於管理人員對軟件質量的正確評估。缺陷處理人經過 CODING 實現缺陷的快速修復和部署,可大大縮短故障恢復時間,減小因缺陷產生的業務損失。
在 DevOps 理念的指導下,筆者建議開發人員在開發業務代碼時,除了功能以外,也應當思考如何開發可運維的代碼,經過適當的日誌、錯誤碼、異常等措施來提高運維效率;運維人員也需逐步提高能力,從傳統的繁雜運維當中轉型,走上敏捷自動化的運維之路。
咱們能夠看到隨着 DevOps 工具鏈自動化顯著提高,DevOps 的門檻變得更加地低。擁抱自動化的結果是研發過程會變得愈來愈安靜,頂尖的開源項目裏的 committers 在平常僅僅是經過郵件和 issue 將事情說清楚,沒有熱火朝天、冗長拖沓的會議;也沒有花花綠綠,色彩斑斕的工做表格。但這些都是創建在 DevOps 良好實踐的基礎之上。咱們相信在踐行 DevOps 的道路上,將來軟件的開發會更簡單,運行也會更加高效。
參考:
https://www.collab.net
https://landing.google.com/sr...
吉恩·金(Gene Kim);耶斯·亨布爾(Jez Humble);帕特里克·德布瓦(Patrick Debois);約翰·威爾斯(John Willis).《DevOps 實踐指南》