devops流程

敏捷的延續(xù)和擴展,敏捷的多功能團隊里面沒有包括運維人員,這就造成了一個鴻溝,研發(fā)人員目標研發(fā)盡量多的特性,盡快上線獲得用戶反饋;運維人員目標是系統(tǒng)運行穩(wěn)定,避免網(wǎng)上問題;兩者目標的沖突導(dǎo)致很多問題,DevOps就是來調(diào)和這樣一種合作關(guān)系的。
DevOps(Development和Operations的組合詞)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運營和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。
它是一種重視“軟件開發(fā)人員(Dev)”和“IT運維技術(shù)人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟件交付”和“架構(gòu)變更”的流程,來使得構(gòu)建、測試、發(fā)布軟件能夠更加地快捷、頻繁和可靠。
它的出現(xiàn)是由于軟件行業(yè)日益清晰地認識到:為了按時交付軟件產(chǎn)品和服務(wù),開發(fā)和運維工作必須緊密合作。
1、組織變化
1)全功能一體化團隊,以產(chǎn)品為中心的團隊
(1)運維遷移到項目團隊,把運維需求都提在項目需求里面,并在項目過程中參與驗證反饋,因為需求研發(fā)完導(dǎo)入運維應(yīng)用落地。
(2)運維能力夠也可以參與到編碼中,編碼也是負責運維的需求編碼
(3)業(yè)務(wù)運維跟基礎(chǔ)設(shè)施運維分開,業(yè)務(wù)運維直接由開發(fā)負責,開發(fā)人員輪班
2)亞馬遜,開發(fā)人員輪流值班負責應(yīng)用特性的維護,運維人員負責基礎(chǔ)運維;誰值班誰有維護的權(quán)限,itsm工單會直接發(fā)給他,對他也會有問題響應(yīng)、問題解決燈kpi指標。
3)google,sre 站點可靠性工程師,負責設(shè)計開發(fā)可靠性,因為用戶無感知的技術(shù)bug不會影響客戶體驗,sre就設(shè)計系統(tǒng)的可靠性,保住系統(tǒng)出問題時不會影響用戶;
SRE工作舉例:
比如說數(shù)據(jù)中心的冗余,兩地三中心;
比如網(wǎng)絡(luò)鏈路的冗余,多運營商、多鏈路、多路由,保住一個鏈路出問題沒影響;
軟件系統(tǒng)的可靠性,比如雙機、分布式、負載均衡、容災(zāi)/備份;
4)小團隊運作,亞馬遜設(shè)計成兩個比薩的團隊,也就是teambuilding是兩個披薩就夠吃了,就是12人左右,大家可以圍在一起,方便交流,這樣溝通最充分、效率最高。
2、優(yōu)秀實踐
1)環(huán)境部署
(1)基礎(chǔ)設(shè)施即代碼
利用虛擬化技術(shù)和容器技術(shù),結(jié)合軟件部署管理服務(wù),實現(xiàn)環(huán)境的信息象代碼一樣管理起來,開發(fā)環(huán)境、測試環(huán)境、類生產(chǎn)環(huán)境、生產(chǎn)環(huán)境直接傳遞環(huán)境信息,而不是現(xiàn)場安裝、部署、調(diào)優(yōu),機減少工作量降低出錯概率。把發(fā)布包和腳本文件等象代碼一樣管理起來,隨著版本一起發(fā)布。
(2)配置即代碼
配置通過服務(wù)化實現(xiàn),改變傳統(tǒng)的環(huán)境變量,系統(tǒng)變量,配置文件,各個系統(tǒng)獨立配置的實現(xiàn),變成統(tǒng)一服務(wù)實現(xiàn);通過類生產(chǎn)環(huán)境驗證,配置文件跟代碼一樣進行配置管理,跟著發(fā)布包一起發(fā)布。
(3)藍綠環(huán)境
藍環(huán)境代表新生產(chǎn)環(huán)境,綠環(huán)境代表老生產(chǎn)環(huán)境,兩者數(shù)據(jù)是一致的,綠環(huán)境接入正常業(yè)務(wù),藍環(huán)境先進行冒煙測試,測試通過后接入少量業(yè)務(wù)請求,驗證正確不斷增加請求,直到全部結(jié)果,藍環(huán)境變成綠環(huán)境;如果中間遇到藍環(huán)境問題,立即停止藍環(huán)境接入請求,恢復(fù)藍環(huán)境產(chǎn)生的臟數(shù)據(jù)。
(4)類生產(chǎn)環(huán)境測試
建立跟生產(chǎn)環(huán)境完全一致的環(huán)境進行測試,包括數(shù)據(jù)也是現(xiàn)場導(dǎo)回來的數(shù)據(jù),盡量保證環(huán)境的一致性,再結(jié)合環(huán)境搭建的自動化能力、基礎(chǔ)設(shè)施即代碼、配置即代碼,這樣升級現(xiàn)網(wǎng)時遇到問題的概率就會非常低。
2)研發(fā)流水線
利用自動化工具實現(xiàn)代碼檢查、編譯構(gòu)建、測試、打包發(fā)布的全流程全自動化;包括靜態(tài)代碼檢查、自動化測試、持續(xù)構(gòu)建、持續(xù)集成、持續(xù)交付等敏捷優(yōu)秀實踐。
3)發(fā)布
(1)金絲雀發(fā)布
麻雀雖小 五臟俱全,建立一個最小化的生產(chǎn)環(huán)境,把少量用戶負載分流過來,通過對這部分用戶進行驗證,驗證通過后再擴大站點,升級其他站點。
(2)灰度發(fā)布
通過新版本只支持友好用戶方式進行驗證,只有友好用戶才能看到使用到新的特性,對這部分用戶的使用進行用戶操作采集和驗證,驗證正確后再發(fā)布給全部用戶使用。
3)公測
發(fā)布公測版本,邀請友好用戶測試,不斷迭代穩(wěn)定后在發(fā)布商用版本,公測版本是免費的,也會給友好用戶一些福利措施。
4)特性開關(guān)
通過特性開關(guān),讓選擇的用戶才能使用這些特性,在用戶知情狀態(tài)下進行驗證,這種方法也很適合互聯(lián)網(wǎng)服務(wù)。
4)運維監(jiān)控與分析
(1)自動化監(jiān)控
系統(tǒng)服務(wù)的監(jiān)控管理平臺,實現(xiàn)包括服務(wù)的監(jiān)控,服務(wù)運行狀態(tài)度量。
(2)A/B測試
對于一個功能開發(fā)兩種操作體驗?zāi)J?,分別進行驗證,通過用戶操作和反饋來決定用哪一種。
(3)統(tǒng)一工單系統(tǒng)
全組織基于同一套itsm系統(tǒng),利用系統(tǒng)數(shù)據(jù)進行績效度量
(4)自動化擴容
自動啟停服務(wù)、自動擴容服務(wù)、自動減容服務(wù);
(5)用戶反饋與行為分析
采集用戶端的用戶行為數(shù)據(jù),用戶網(wǎng)頁停留時間,用戶頁面跳出率、操作出錯率、成功率進行分析,進而優(yōu)化產(chǎn)品體驗。
5)服務(wù)化研發(fā)
(1)微服務(wù)架構(gòu)
現(xiàn)在都從分布式總線架構(gòu)過渡到服務(wù)化的架構(gòu)了,利用微服務(wù)架構(gòu)方便分割產(chǎn)品模塊,方便共享開放,方便后期的運維監(jiān)控,方便發(fā)布部署。
(2)云原生架構(gòu)
基于云上的服務(wù)進行設(shè)計開發(fā)也變得越來越受歡迎。