DevOps是什麼?

以下是來自維基百科的定義:

DevOps(開發 Development 與運維 Operations 的組合詞)是一種文化、一場運動或實踐,強調在自動化軟件交付流程及基礎設施變更過程中,軟件開發人員與其他信息技術(IT)專業人員彼此之間的協作與溝通。它旨在建立一種文化與環境,使構建、測試、軟件發佈得以快速、頻繁以及更加穩定地進行。

DevOps的前世今生

我們知道軟件工程的開發模式從瀑布開發模式到敏捷開發模式,再到如今的DevOps模式都是在不同的階段解決了不同的問題。


瀑布開發模式定義了最初的軟件開發流程,規範了不同階段的交付標準和交付產物。 


敏捷開發模式則給頻繁迭代的互聯網應用提供了方法論,以不斷迭代,小步快跑的形式配合自動化測試,持續集成等手段保證快速地持續交付高質量的軟件。但快速交付的前提是能夠真正部署到生產環境,而在部署環節,運維人員往往會因爲考慮系統的穩定性、可用性和安全性給部署上線設立較高的門檻。這樣不能部署上線的快速交付也就沒有了意義。

而DevOps卻正好解決了敏捷開發模式的這些不足之處,DevOps 是通過平臺(Platform)、流程(Process)和人(People)的有機整合,以 C(協作)A(自動化)L(精益)M(度量)S(共享)文化爲指引,旨在建立一種可以快速交付價值並且具有持續改進能力的現代化 IT 組織。


DevOps 可以理解爲一種開發(Development)和運維(Operations)一起緊密協作的工作方式,從而可以更快更可靠的構建、測試和發佈軟件。


DevOps 並不意味着開發一定要懂運維技術,運維要懂開發技術,而是說兩個工種要更緊密的協作,有共同的目標:更快更可靠的構建、測試和發佈軟件。這就意味着,對於運維來說,不再抵觸開發的頻繁更新部署,會幫助搭建自動化部署平臺,提供自動化部署工具;對於開發來說,不再認爲運維的工作和開發沒關係,開發人員會邀請運維人員參與架構設計,幫助運維實現自動化腳本開發。

DevOps帶來的好處

上面我們說到在敏捷模式中,運維並沒有深入的參與軟件的整個設計,開發流程,從而導致在最後一環“部署”的時候,運維會有比較多的考慮和擔心。那麼DevOps能帶來哪些好處和解決哪些問題呢?

整個軟件的構建、測試和發佈過程高度自動化

DevOps 一個很重要的基礎就是自動化,通過對自動化的應用,是最簡單有效的打破開發和運維之間壁壘的方式。因爲應用自動化後,對於運維人員來說,自動化的交付流程,減少了繁重的手工操作,自動化測試可以有效對產品質量提供很好的保障。對於開發人員來說,可以方便高頻率地進行部署。

信息更加透明和易於測量

傳統的開發模式,運維和開發之前的信息並不是透明和共享的。出現了問題,很多時候大家都在互相甩鍋。對於開發來說,不瞭解程序在服務器上運行的情況,對於運維來說,程序就是個黑盒子,無法對程序內部進行監控,出現問題只能重啓或者回滾。


當採用 DevOps 的工作方式,信息更加透明,通過日誌和工具,數據也可以被更好測量。比如說:

  • 可以直觀看到開發到部署需要多少時間,哪個環節可以改進?
  • 當前服務運行情況如何,每分鐘訪問數多少,API 出錯率多少?
  • 當前用戶數多少,有多少新增用戶?

這些數據,不僅可以幫助運維更好地預警,或者是幫助開發更好地優化程序,還可以幫助業務團隊更好地瞭解服務的運營情況。

DevOps需要做什麼

  • 幫助團隊建立基於持續集成和持續交付工作流程
  • 建立一套基於日誌的監控報警的系統,以及故障響應的流程
  • 構建基於雲計算和虛擬化技術的基礎設施

參考資料

  • 極客時間專欄《軟件工程之美》
  • 極客時間專欄《DevOps實戰筆記》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章