DevOps 是一個流行詞git
現在 DevOps 已經成爲一個流行詞,不少公司都在說本身在作 DevOps,可是每一個人、每家公司理解的 DevOps 又不盡相同,從 DevOps 誕生的第一天起,如何定義 DevOps 就是一個爭論不休的話題。github
這裏有一篇文章,筆者認爲基本詮釋了 DevOps 的定義:DevOps 是什麼不是什麼編程
若是你沒有耐心把這篇文章看完,維基百科還給出了一個太長不讀版:安全
概括成三點:服務器
DevOps 是一種強調溝通與協做的軟件交付過程。它包括產品管理,軟件開發及運營等各個方面。架構
DevOps 自動化軟件集成,測試,部署以及基礎設施的變動。框架
它的目標是創建一種文化和環境,使得軟件的構建、測試、交付更快,更頻繁,更可靠。運維
DevOps 的由來微服務
這裏我想多提一句的是持續交付和 DevOps 的關係和差異,參照維基百科 對 DevOps 和持續交付的區別進行解釋,DevOps 涵蓋的範圍比持續交付更寬,它包含了文化,強調團隊協做和自動化;而持續交付側重於頻繁、快速 地執行交付流程,二者相輔相成,卻又有所區別。工具
DevOps 理論框架
由於 DevOps 源自草根,缺少自上而下的理論支撐,因此如何定義 DevOps 成了 DevOps 社區裏面的一個大難題。
一些 DevOps 從業者,紛紛設定本身的 DevOps 框架。其中比較有名的框架有Damon Edwards 所定義並被 Jez Humble(持續交付做者之一) 所修訂的CALMS,和 Gene Kim 所定義的 The Three Ways。
The Three Ways
CLAMS
爲何要實踐 DevOps
DevOps 在技術領域的實踐
DevOps運做包括文化(全功能,自運維)和技術(自動化,度量反饋)兩方面,而技術能力的改進主要關注如下六個領域:
內建質量體系
經過持續代碼評審,靜態分析,自動化測試,自動部署驗證等手段構成一套有效的質量保障體系。
主要實踐包括:
持續部署
經過自動化的構建,部署過程快速頻繁地將軟件交付給用戶,提升吞吐量;同時保障過程的安全,平滑,可視。
主要實踐包括:
持續監控
持續對運行環境在系統,應用層面進行監控,及時發現風險或問題,保障系統運行的穩定性。
主要實踐包括:
度量與反饋
經過對用戶行爲或業務指標的度量或反饋收集,爲產品的決策提供依據。
主要實踐包括:
環境管理
經過對服務器環境的定義,自動化創建和配置、更新等提升基礎設施管理的效率,一致性,並更有效利用資源,可伸縮的架構,保證服務的健壯性。
主要實踐包括:
鬆耦合架構
對傳統應用架構進行領域組件化,服務化,提高可測試性和可部署性。
主要實踐包括:
將來 & 趨勢
在 DevOps 實踐的第一階段,每每會是 Jenkins, Nexus, Ansible, Shell 等一系列工具的拼湊組合,上手難度大,維護成本高,開發體驗很差。隨着 DevOps 日漸成熟,以 AWS、Pivotal、RedHat 爲表明的一些公司分別退出本身的 「DevOps產品」,或是一套完整的工具鏈,或者直接整合到一個 PaaS 平臺,甚至一些產品直接將「敏捷」,「精益」的概念也整合到產品中,直接能夠把一家公司的所有業務放到平臺上,這和最近大熱的「數字化平臺戰略」也是相吻合的。
無論怎樣,這些平臺廠商一邊賣本身的產品一邊從新定義着 DevOps,隨着平臺的完善,DevOps 已經變得愈來愈不重要,我一直以爲最好的 DevOps 團隊應該是「潤物細無聲」的,就是一個團隊不用提 DevOps,整個團隊很天然地就能關注到業務價值的交付,且能有序地按照高質量,高效率的要求去作,平臺或許能幫助咱們作到這一點。
容器化、微服務自然適合小而全的功能團隊,且一個個自治的服務也很複合 DevOps 端到端交付團隊的設計,近年隨着容器化技術(Docker)的發展,容器管理(Kubernetes)的日漸成熟(據悉,github 已經將它們的一部分產品環境灰度發佈到了 kubernetes 上,京東也將他們的服務百分之六十採用了 kubernetes 管理),DevOps 和微服務成爲了相輔相成的兩個趨勢。
安全是 DevOps 永遠繞不開的話題,也每每是新技術在傳統行業(例如金融和電信)應用中的最大阻礙。一方面,組織結構的轉型迫使企業要打破原先的部門牆,這意味着不少原先的控制流程再也不適用。另外一方面,因爲大量的 DevOps 技術來源於開源社區,缺少強大技術實力的企業在應用相關技術時難免會有所擔心。
DevOps 全局優化的特色與安全社區提出的 「Build Security In」也特別吻合,加之愈來愈多安全易用的工具涌現,DevOpsSec 會愈來愈被人們熟知。