DevOps的準(zhǔn)則:總有更好的方法
前面描述了根本的、長(zhǎng)期的沖突帶來(lái)的問(wèn)題和負(fù)面影響,從無(wú)法實(shí)現(xiàn)公司目標(biāo),到對(duì)人類(lèi)同胞造成的提害,通過(guò)解決這些問(wèn)題,DevOps能夠提高公司業(yè)績(jī),實(shí)現(xiàn)開(kāi)發(fā)、QA、T運(yùn)維、信息安全等各職能技術(shù)角色的目標(biāo),同時(shí)改善人們的境遇。
這個(gè)令人振奮的罕見(jiàn)組合可以解釋為什么 DevOps在這么短的時(shí)間內(nèi)激發(fā)出了這么大的興奮和熱情,包括技術(shù)領(lǐng)導(dǎo)、工程師,以及我們所處的軟件生態(tài)系統(tǒng)的大部分。
用 DevOps打破惡性循環(huán)
理想情況下,小團(tuán)隊(duì)的開(kāi)發(fā)人員獨(dú)立地實(shí)現(xiàn)自己的功能,在類(lèi)生產(chǎn)環(huán)境中驗(yàn)證其正確性,再把代碼快速、安全、可靠地部署到生產(chǎn)環(huán)境里。代碼部署是日常的且可預(yù)測(cè)的工作。部署工作不是選在周五的午夜開(kāi)始、鏖戰(zhàn)整個(gè)周末才完成,而是在每個(gè)人都在辦公室的工作日進(jìn)行,大多數(shù)時(shí)候甚至不會(huì)引起客戶(hù)的注意(客戶(hù)興奮地看到出現(xiàn)了新功能或者舊缺陷被修復(fù)了的情況除外)由于代碼部署是在工作時(shí)間段內(nèi)進(jìn)行的,幾十年來(lái),Ⅱ運(yùn)維人員第一次可以像其他人一樣在正常工作時(shí)間段工作了。
通過(guò)在流程中的每一個(gè)步驟創(chuàng)建快速反饋回路,每個(gè)人都可以立即看到工作效果。只要代碼變更提交到了版本控制系統(tǒng),就會(huì)在類(lèi)生產(chǎn)環(huán)境中運(yùn)行快速的自動(dòng)測(cè)試,這持續(xù)地保證了代碼和環(huán)境符合設(shè)計(jì)預(yù)期,并且總是處在安全的可部署狀態(tài)。
自動(dòng)試可以幫助開(kāi)發(fā)人快速發(fā)現(xiàn)錯(cuò)誤(通常在幾分鐘之內(nèi)),實(shí)現(xiàn)更快速的修復(fù)以及真正的學(xué)習(xí)。如果錯(cuò)誤是在6個(gè)月后的集成測(cè)試中發(fā)現(xiàn)的,那時(shí)相關(guān)的記憶和因果關(guān)系早已消退,想從中學(xué)習(xí)是不可能的。自動(dòng)化測(cè)試使技術(shù)債務(wù)不再積累,問(wèn)題在發(fā)現(xiàn)之后就立即被修復(fù)了。如果需要,這還可以調(diào)動(dòng)整個(gè)公司參與問(wèn)題的處理,因?yàn)榭傮w目標(biāo)高于局部目標(biāo)。
在我們的代碼和生產(chǎn)環(huán)境中無(wú)處不在的遙測(cè)技術(shù),保證了問(wèn)題能被迅速地發(fā)現(xiàn)并糾正,確保切都能按照預(yù)定的方式進(jìn)行,并且客戶(hù)能從我們創(chuàng)造的軟件中獲得價(jià)值。
在這樣的場(chǎng)景下,每個(gè)人都感覺(jué)富有成效—這種架構(gòu)使得小團(tuán)隊(duì)能夠安全地工作,同時(shí)在架構(gòu)上和其他團(tuán)隊(duì)的工作解耦,這些團(tuán)隊(duì)使用了集運(yùn)維和信息安全最佳實(shí)踐于一體的自服務(wù)平臺(tái)。團(tuán)隊(duì)獨(dú)立、高效地處理小批量工作,快速且頻繁地為客戶(hù)提供新的價(jià)值,而不是每個(gè)人都在等待,面對(duì)大量遲來(lái)和緊急的返工。
通過(guò)黑啟動(dòng)( dark launch)技術(shù),即便是復(fù)雜的產(chǎn)品和功能發(fā)布,也變得稀松平常了。早在發(fā)布日期以前,我們就已經(jīng)將所有功能的代碼部署到了生產(chǎn)環(huán)境中,它只對(duì)內(nèi)部員工和部分真實(shí)用戶(hù)可見(jiàn)。這使得我們能夠測(cè)試和改進(jìn)其功能,直到達(dá)到預(yù)期的業(yè)務(wù)目標(biāo)。
想要讓新功能生效,我們只需要改變一個(gè)功能開(kāi)關(guān)或者配置項(xiàng)即可,而不再需要經(jīng)歷數(shù)天或者數(shù)周的辛苦工作。這個(gè)小變更使新功能對(duì)更大規(guī)模的客戶(hù)群可見(jiàn),一旦出現(xiàn)錯(cuò)誤,就會(huì)自動(dòng)地回滾。因此,發(fā)布新功能變得可控、可預(yù)測(cè)、可逆,且壓力也小了。
除了新功能的發(fā)布變得更加順利外,各種問(wèn)題都能在其規(guī)模小、修復(fù)容易且成本低的時(shí)候發(fā)現(xiàn)并修復(fù)。通過(guò)每次的問(wèn)題修復(fù),我們也讓公司得到了經(jīng)驗(yàn)和教訓(xùn),能夠防止問(wèn)題復(fù)發(fā),并且能更快地定位和修復(fù)相似的問(wèn)題。
此外,每個(gè)人都在不斷地學(xué)習(xí),從而營(yíng)造出了一種假設(shè)驅(qū)動(dòng)的文化,用科學(xué)的方法保證一切都得到了充分的驗(yàn)證一在對(duì)產(chǎn)品開(kāi)發(fā)和流程改進(jìn)進(jìn)行有目的的衡量和實(shí)驗(yàn)之前不做任何工作。
因?yàn)槲覀冋湎Т蠹业臅r(shí)間,所以不會(huì)花幾年的時(shí)間去打造客戶(hù)不想要的功能,不會(huì)部署根本就不能用的代碼,也不會(huì)修復(fù)非問(wèn)題根源的缺陷。
由于我們關(guān)心目標(biāo)的實(shí)現(xiàn),所以建立了長(zhǎng)期的團(tuán)隊(duì)責(zé)任制,負(fù)責(zé)目標(biāo)的實(shí)現(xiàn)。在一般的項(xiàng)目團(tuán)隊(duì)中,每次軟件發(fā)布以后開(kāi)發(fā)人員就被打散并重新分配了,他們沒(méi)有機(jī)會(huì)得到自己工作的反饋;我們則保持團(tuán)隊(duì)的完整性,這樣團(tuán)隊(duì)可以進(jìn)行選代和改進(jìn),用團(tuán)隊(duì)各成員所學(xué)到的經(jīng)驗(yàn)來(lái)更好地實(shí)現(xiàn)目標(biāo)。對(duì)于給外部客戶(hù)解決問(wèn)題的產(chǎn)品團(tuán)隊(duì),以及幫助其他團(tuán)隊(duì)提高生產(chǎn)力、可靠性和安全性的內(nèi)部平臺(tái)團(tuán)隊(duì)來(lái)說(shuō),這一點(diǎn)同樣重要。
我們的團(tuán)隊(duì)文化體現(xiàn)了高度的信任與合作,而不是指責(zé),人們會(huì)因?yàn)槊半U(xiǎn)而獲得回報(bào)。他們可以無(wú)所畏懼地討論問(wèn)題,而不是把問(wèn)題隱藏起來(lái)或者往后拖延一畢竟,我們只有先認(rèn)識(shí)到了問(wèn)題,才能解決問(wèn)題。
而且,因?yàn)樗腥硕夹枰獙?duì)自己的工作質(zhì)量負(fù)完全的責(zé)任,所以每個(gè)人在日常的工作中都創(chuàng)建自動(dòng)化測(cè)試,并且使用同行評(píng)審的方式來(lái)保證在問(wèn)題影響到客戶(hù)之前就解決它。與從管理層向下授權(quán)審批的方式相反,上述過(guò)程降低了風(fēng)險(xiǎn),讓我們能快速、可靠、安全地交付價(jià)值,Devops甚至可以在挑剔的評(píng)審人員面前證明我們擁有一個(gè)高效的內(nèi)部控制系統(tǒng)。
很多時(shí)候在出現(xiàn)問(wèn)題時(shí),我們進(jìn)行不指責(zé)的事后分析,這并不是要懲罰某人,而是為了更好地理解導(dǎo)致事故的原因,以及如何防止事故再次發(fā)生。這個(gè)方法強(qiáng)化了我們的學(xué)習(xí)文化。我們可以還通過(guò)舉辦內(nèi)部技術(shù)研討會(huì)來(lái)提高技能,保證所有人不是在教就是在學(xué)。
因?yàn)樽⒅刭|(zhì)量,所以我們甚至?xí)室庠谏a(chǎn)環(huán)境中注入故障,從而了解系統(tǒng)是怎樣以預(yù)期方式發(fā)生故障的。我們按照計(jì)劃做大規(guī)模的故障演練,隨機(jī)結(jié)束生產(chǎn)環(huán)境中的進(jìn)程,中斷正在運(yùn)行的服務(wù)器,同時(shí)還注入網(wǎng)絡(luò)延遲以及其他惡意因素,以此來(lái)確保系統(tǒng)的可靠性。這樣的方式為我們的系統(tǒng)帶來(lái)了更高的可靠性,同時(shí)為整個(gè)公司提供了更好的學(xué)習(xí)和提高機(jī)會(huì)。
在這個(gè)世界里,不論處于科技公司的哪個(gè)崗位,每個(gè)人都是自己工作的主人。他們堅(jiān)信自己的工作很重要,并為公司的目標(biāo)出了一份力,低壓力的工作環(huán)境以及公司在市場(chǎng)上的成功足以明這一切。公司在市場(chǎng)上取得的業(yè)績(jī)就是最好的證據(jù)。
【聯(lián)系青藍(lán)咨詢(xún)】
地址: 深圳市南山區(qū)高新南一道06號(hào)TCL大廈B座3樓309室 (公交站:大沖 地鐵站:一號(hào)線高新園C出口)
郵編:518057
電話:0755-86950769
網(wǎng)址:http://www.qhqingxinjp.com
掃碼關(guān)注 了解更多課程信息