DevOps是什么?
DevOps理念誕生于2009年。
”IT組織的存在就是為了交付業(yè)務(wù)向其客戶交付商業(yè)價值所需要的能力。業(yè)務(wù)要求IT組織進行優(yōu)化,要更加敏捷,適應(yīng)變化,更具有響應(yīng)力,利用更少的資源做更多的事情,更加高效,提高產(chǎn)能,更快速、更高質(zhì)的交付,針對市場靈活應(yīng)變,加速競爭,遵守不斷變化的監(jiān)管與合規(guī)制度以及,當(dāng)前也要縮減開支?!?/p>
DevOps存在的第一性原理:敏捷或速度的訴求。
2020年維基百科上最新的DevOps定義(一直在不斷修正,業(yè)界看待DevOps的觀點也在變化):
DevOps(Development和Operations的組合詞)是一種重視“軟件開發(fā)人員(Dev)”和“IT運維技術(shù)人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟件交付”和“架構(gòu)變更”的流程,來使得構(gòu)建、測試、發(fā)布軟件能夠更加地快捷、頻繁和可靠。
說明:13年和16年的定義可參考書中前言部分介紹,也可以參考下面鏈接中的內(nèi)容。https://blog.csdn.net/chengqiuming/article/details/81709336
DevOps兩項核心實踐
持續(xù)集成(已經(jīng)成為敏捷的核心競爭力)和持續(xù)交付。都聚焦于周期時間最小化。
周期時間:從需求或者用戶故事開始到把功能交付到客戶手中,或者至少完成集成、測試并已部署到客戶機做好準(zhǔn)備的時間
交付生命周期中的所有利益相關(guān)者都需要進行更好的溝通與協(xié)作,而不僅是開發(fā)和運維之間。
持續(xù)集成
持續(xù)集成是指按固定節(jié)奏(定期,至少每天)進行集成的過程,它是敏捷開發(fā)的原則之一。使開發(fā)人員得以將其軟件組件與內(nèi)、外部的其他開發(fā)人員所開發(fā)的組件進行定期集成(主要是指代碼的集成),以便盡早識別風(fēng)險。
只做持續(xù)集成構(gòu)建,不做集成測試去驗證及識別缺陷,只能說具備持續(xù)集成構(gòu)建能力,卻沒有其他能力。
持續(xù)交付
持續(xù)交付:? ? 可通過交付流水線實現(xiàn)持續(xù)交付自動化。持續(xù)交付不是一個流程,而是隨時根據(jù)需要部署到任何環(huán)境的能力。它的核心實踐是自動化部署。
持續(xù)交付并不意味這每一次變化都要盡快部署到生產(chǎn)環(huán)境,而是意味著每一次變化都是隨時可以部署的。所以具有持續(xù)部署的能力比實際持續(xù)地生產(chǎn)上線更為重要。
「持續(xù)集成」幫助產(chǎn)品以穩(wěn)定的節(jié)奏構(gòu)建,「持續(xù)交付」讓這些構(gòu)建快速地交付至流水線中的其他環(huán)境。
除核心實踐外的支持實踐
1、基礎(chǔ)設(shè)施即代碼:將上線一個新虛擬環(huán)境或一個環(huán)境的新版本,變成執(zhí)行腳本的過程(即:使用代碼來定義、版本化和維護完整環(huán)境)。比如:Ansible就是一種用來獲取及管理基礎(chǔ)設(shè)施即代碼的自動化架構(gòu)。運維人員需要管理的不是生命周期很長的獨立服務(wù)器,而是大量的臨時服務(wù)器,按需進行環(huán)境的提供和釋放。
2、持續(xù)反饋:是實現(xiàn)持續(xù)改進和提高質(zhì)量的必要條件,也是戴明PDCA循環(huán)的核心。沒有持續(xù)反饋,持續(xù)集成和持續(xù)交付幾乎沒有任何意義。
持續(xù)測試和持續(xù)監(jiān)控來實現(xiàn)持續(xù)反饋。
持續(xù)測試:單元測試、功能測試、性能測試、集成測試、安全測試、用戶驗收測試等。
持續(xù)監(jiān)控:需要獲取并分析的4個方面的衡量指標(biāo)(應(yīng)用性能、系統(tǒng)性能、應(yīng)用用戶行為、用戶情緒)等。注意:數(shù)據(jù)能用才有價值,好的數(shù)據(jù),能更好的驅(qū)動持續(xù)改進。
3、持續(xù)業(yè)務(wù)計劃
改實踐關(guān)注業(yè)務(wù)線及其計劃流程。利用精益思想,加快業(yè)務(wù)需求的響應(yīng)周期??蓞⒖迹壕鎰?chuàng)業(yè)。
4、協(xié)同開發(fā)
確保具有大型分布式團隊的組織實現(xiàn)跨職能部門操作人員以及跨倉筒團隊之間的協(xié)作與可見性是必不可少的。可通過跨交付流水線的兩個功能來實現(xiàn)(比如:提供給操作人員的訪問權(quán)限和可見性)
“前移”
概念來源于精益。基本思想是將生命周期中影響質(zhì)量的任務(wù)盡可能提前,以此來提高質(zhì)量。
1、測試前移——“盡早測試,頻繁測試”,其中,集成測試前移的意義最大。
2、運維前移
運維人員盡早參與,有助于確保開發(fā)-測試期間所部署的開發(fā)及測試類生產(chǎn)環(huán)境確實與真正的生產(chǎn)環(huán)境類似。
運維人員指責(zé)前移,角色從執(zhí)行者變?yōu)榉?wù)供應(yīng)商。開發(fā)人員、測試人員及其他運維人員,利用運維團隊提供并管理的自助服務(wù),根據(jù)需要提供、配置并釋放服務(wù)器實例。
持續(xù)改進
在DevOps背景下,學(xué)習(xí)型組織是要不斷地從剛剛交付的內(nèi)容中學(xué)習(xí)并持續(xù)改進。
DevOps的文化運動
DevOps包括實施和文化兩部分,只單獨實施DevOps實踐無法培養(yǎng)出文化。只有克服了組織內(nèi)根深蒂固的文化惰性,才能成功實施DevOps文化。其中,文化惰性可以從三方面來克服:(1)可見行:一起共事的團隊或人員知道彼此拿到的構(gòu)建交付物之前都做過什么;
(2)有效溝通:實時、面對面溝通比郵件、計劃、文檔更為有效;
(3)通用衡量標(biāo)準(zhǔn):開發(fā)、測試、運維,每一個人都必須對生產(chǎn)上線部署負責(zé),應(yīng)該需要相同或類似的成功衡量標(biāo)準(zhǔn),讓大家為同一個目標(biāo)而工作。
小結(jié)
對DevOps的概念和如何實施的問題上,目前并沒有達成共識。正確的答案確是“視情況而定”,因為這取決于為之奮斗的業(yè)務(wù)目標(biāo)、實踐當(dāng)前的成熟度、足額只能夠承受的變化速度等。
其它可參考的文章鏈接:https://blog.csdn.net/GitChat/article/details/78263301
《DevOps現(xiàn)狀調(diào)查報告》
《持續(xù)交付》-Jez Humble