DevOps 從理論到實踐指南

什么是 DevOpsDevOps 從理論到實踐指南的圖1

如今 DevOps 已經成為一個流行詞,很多公司都在說自己在做 DevOps,但是每個人、每家公司理解的 DevOps 又不盡相同,從 DevOps 誕生的第一天起,如何定義 DevOps 就是一個爭論不休的話題。這篇文章,CORNERSTONE認為基本詮釋了 DevOps 的定義:DevOps 是什么不是什么如果你沒有耐心把這篇文章看完,維基百科還給出了一個太長不讀版:
DevOps (a clipped compound of “development” and “operations”) is a software development and delivery process that emphasizes communication and collaboration between product management, software development, and operations professionals.It seeks to automate the process of software integration, testing, deployment, and infrastructure changes by establishing a culture and environment where building, testing, and releasing software can happen rapidly, frequently, and more reliably.
歸納成三點:
  • DevOps 是一種強調溝通與協作的軟件交付過程。它包括產品管理,軟件開發及運營等各個方面。
  • DevOps 自動化軟件集成,測試,部署以及基礎設施的變更。
  • 它的目標是建立一種文化和環境,使得軟件的構建、測試、交付更快,更頻繁,更可靠。
DevOps 從理論到實踐指南的圖2DevOps 的由來DevOps 從理論到實踐指南的圖3為什么要實踐 DevOps
  • 更短的交付周期,生產環境部署頻率越來越快,簡化生產部署流程,且自動化不停機部署
  • 更高的價值,形成特性提出到運營數據、用戶反饋驗證的實驗性交付閉環,基于實際用戶反饋調整計劃和需求
  • 更好的質量保障,在代碼檢查,功能和非功能驗證,以及部署各方面建立較完善的質量保障體系,尤其是自動化測試集
  • 更高績效的團隊,包含業務,開發測試,和運維職能在內的一體化團隊,以產品交付為共同目標緊密協作,共同承擔責任
DevOps 在技術領域的實踐DevOps運作包括文化(全功能,自運維)和技術(自動化,度量反饋)兩方面,而技術能力的改進主要關注以下六個領域:DevOps 從理論到實踐指南的圖4內建質量體系通過持續代碼評審,靜態分析,自動化測試,自動部署驗證等手段構成一套有效的質量保障體系。主要實踐包括:
  • TDD:測試驅動開發的思想,保證代碼質量和不偏離業務需求的技術實現
  • 結對編程和代碼審查,依靠團隊的自治性讓團隊成員互相監督和審查代碼質量
  • 自動化測試,高自動化,且高頻率運行的測試,保證測試用例質量的同時保證了交付軟件的質量
持續部署
DevOps 從理論到實踐指南的圖5

CORNERSTONE通過自動化的構建,部署過程快速頻繁地將軟件交付給用戶,提高吞吐量;同時保障過程的安全,平滑,可視。主要實踐包括:
  • 在已經做到持續集成的情況下,引入持續部署,每次提交均會出發構建并執行部署
  • 藍綠部署,用于實現零宕機發布新版本
  • 金絲雀發布,用于使應用發布流程具備快速試錯的能力
持續監控
DevOps 從理論到實踐指南的圖6

CORNERSTONE持續對運行環境在系統,應用層面進行監控,及時發現風險或問題,保障系統運行的穩定性。主要實踐包括:
  • 監控預警,在項目開始初期就引入監控,讓整個團隊實時能夠收到關于產品各個維度數據的反饋
  • 日志聚合,便于錯誤追蹤和展示
  • 分析,利用搜集到的數據實時分析,利用分析結果指導開發進度
度量與反饋
DevOps 從理論到實踐指南的圖7

CORNERSTONE通過對用戶行為或業務指標的度量或反饋收集,為產品的決策提供依據。主要實踐包括:
  • 持續集成反饋,對代碼構建質量,代碼質量審查的反饋
  • 測試反饋,對軟件質量,功能性的測試,給到業務的反饋
  • 運營數據反饋,新功能上線后對業務影響的反饋,用于指導業務人員提新的需求
環境管理DevOps 從理論到實踐指南的圖8

CORNERSTONE通過對服務器環境的定義,自動化建立和配置、更新等提高基礎設施管理的效率,一致性,并更有效利用資源,可伸縮的架構,保證服務的健壯性。主要實踐包括:
  • 彈性架構,保證服務的吞吐量和具備靈活變更的能力
  • 自動化部署腳本,想膠水一樣,用于解決一些工程實踐不夠完善的流程之間的銜接
  • 基礎設施即代碼,用代碼定義基礎設施,便于環境管理,追蹤變更,以及保證環境一致性
松耦合架構對傳統應用架構進行領域組件化,服務化,提升可測試性和可部署性。主要實踐包括:
  • 采用彈性基礎設施,比如公有云服務或是 PaaS(Platform as a Service) 平臺
  • 構建為服務應用
  • 引入契約測試
DevOps 從理論到實踐指南的圖9
典型DevOps的持續交付流水線全景圖DevOps 從理論到實踐指南的圖10軟件開發全生命周期的持續優化
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1
1