當(dāng)今IT行業(yè)的競爭日益激烈,各家公司都在尋找優(yōu)化軟件研發(fā)過程的方法,因為交付比對手更具競爭力的產(chǎn)品已經(jīng)越發(fā)成為一件成本高昂的事情。這也是DevOps發(fā)揮作用的地方,因為它可以在工程管理的各個方面提供幫助。
瀑布開發(fā)模型已被廣泛使用多年,但它的開發(fā)、測試和運維在整個生命周期中是相對分離的。而今,隨著敏捷方法的不斷發(fā)展,持續(xù)集成和DevOps在某種程度上就變得越發(fā)重要。
實施原則
CAMS模型很好地闡述了DevOps的基本原則,其核心目標(biāo)是實現(xiàn)過程自動化,以提高生產(chǎn)效率;通過持續(xù)地度量、反饋和改進,以確??焖俳桓兜馁|(zhì)量。
讓我們來進一步了解CAMS模型:
Culture(文化):DevOps提倡把溝通、技術(shù)、方法和工具緊密地聯(lián)系在一起;
Automation(自動化):通過自動化來提高各環(huán)節(jié)活動的工作效率;
Measurement(度量):需要及時對關(guān)鍵過程和質(zhì)量指標(biāo)進行度量和反饋;
Sharing Feedback(反饋共享):通過共享反饋和建議,以獲得持續(xù)改進,應(yīng)用最佳實踐來促進組織發(fā)展。
實施步驟
DevOps生命周期包括持續(xù)開發(fā)、持續(xù)集成、持續(xù)測試、持續(xù)反饋、持續(xù)監(jiān)測、持續(xù)部署和持續(xù)運維。以持續(xù)交付為核心目標(biāo),DevOps將各項研發(fā)活動進行有機結(jié)合,以簡單化、高效化整個項目過程。
采用敏捷方法
通過實施短平快的敏捷研發(fā)過程,將整個項目過程分解為若干Sprint迭代,可以增加發(fā)布頻次,使產(chǎn)品的新特性、以及可能存在的問題得到盡早地檢測、發(fā)現(xiàn)和響應(yīng)。提高生產(chǎn)率和交付質(zhì)量,以期從有限的研發(fā)投入中,獲得更大的收益。DevOps生命周期包括持續(xù)開發(fā)、持續(xù)集成、持續(xù)測試、持續(xù)反饋、持續(xù)監(jiān)測、持續(xù)部署和持續(xù)運維。以持續(xù)交付為核心目標(biāo),DevOps將各項研發(fā)活動進行有機結(jié)合,以簡單化、高效化整個項目過程。
集成CI/CD工具實現(xiàn)基礎(chǔ)設(shè)施自動化
DevOps使用微服務(wù)對系統(tǒng)進行更細粒度的拆解和管理,相對獨立的模組服務(wù)被分發(fā)到不同的容器中。在這個階段,最常用的工具包括Ansible、Puppet、Chef、Kubernetes。為了獲得最佳的配置管理和應(yīng)用部署效果,這些工具可以很容易地與CI/CD工具(如Bamboo、GoCD和Jenkins)進行集成,從而有效地實現(xiàn)持續(xù)集成。
容器化
Docker是著名的容器引擎,通過將相對獨立的業(yè)務(wù)模組分解到不同的容器中,提供盡量松耦合的無狀態(tài)服務(wù)。通過容器,可以無縫、高效地將已驗證的軟件從測試服務(wù)器遷移、部署到生產(chǎn)環(huán)境中。同整個IT基礎(chǔ)設(shè)施相隔離的容器具備更好的可遷移性和可控性,這也是容器化作為DevOps基礎(chǔ)設(shè)施管理的一個重要原因。
部署階段
這個階段,涉及應(yīng)用在生產(chǎn)環(huán)境服務(wù)器上部署和運行。經(jīng)過驗證的軟件,最終將被部署到生產(chǎn)環(huán)境中,服務(wù)于終端用戶。自動化的配置和部署是這一階段的關(guān)鍵活動,它執(zhí)行快速、準(zhǔn)確的部署,并建立功能、性能、穩(wěn)定和安全性等方面的統(tǒng)一化監(jiān)控和管理。
任何更新必須以不干擾已部署且運作良好的功能的方式進行發(fā)布,遵循“快速失敗”的方法,新部署的特性或變更,將及時地接受用戶的使用和驗證。這個階段可用于部署的一些工具有Ansible、Chef、Puppet等。
持續(xù)監(jiān)測
使用監(jiān)測工具,讓掌控生產(chǎn)服務(wù)質(zhì)量狀態(tài)變得更為簡單和快捷。這個階段也需要分析從內(nèi)部團隊和用戶那里獲得的反饋,并及時作出響應(yīng)和跟蹤處理。持續(xù)監(jiān)測有助于對問題做出快速發(fā)現(xiàn)和響應(yīng),保持服務(wù)的可用性、穩(wěn)定性,它還能協(xié)助我們追蹤和確認頻繁出現(xiàn)的問題的最新演進、潛在威脅和根本原因。在這個階段,性能和安全性問題可以得到有效捕獲和處理,借助一些工具也能做到自動修復(fù)運維中的某類問題。
相比開發(fā)團隊,運維團隊在這一階段的參與程度更高。這個階段的主要工作在于監(jiān)控用戶活動和系統(tǒng)響應(yīng)的有效性、及時性,檢查系統(tǒng)是否有異常行為,以及跟蹤問題引發(fā)風(fēng)險的進展。此時類似Nagios、Prometheus、Zabbix的自動化工具將發(fā)揮重要作用。
確保團隊間的持續(xù)反饋
通過不同團隊、角色間的有效溝通和協(xié)作,交付件、技術(shù)和過程方面的問題得到精準(zhǔn)的定位和高效的解決,從而帶來生成過程和產(chǎn)品質(zhì)量的整體持續(xù)提升。這也需要各個團隊與公司整體的DevOps目標(biāo)保持高度的一致。
如在禪道項目管理軟件中,明確地將產(chǎn)品、項目、測試三者概念區(qū)分開,產(chǎn)品人員、開發(fā)團隊、測試人員,三者分立,互相配合,又互相制約,通過需求、任務(wù)、Bug來進行交相互動,任務(wù)直接指派到所屬團隊及個人,這種團隊內(nèi)的及時溝通反饋有助于效率的提高。
禪道自主研發(fā)的自動化測試框架(禪道ZTF)與禪道無縫集成,可將禪道用例和自動化測試腳本一一綁定,執(zhí)行的結(jié)果能提交到禪道中作為測試結(jié)果,執(zhí)行失敗的腳本也可以自動創(chuàng)建Bug。自動化測試框架實現(xiàn)了與Jenkins持續(xù)集成功能打通。用戶發(fā)起任務(wù)后,通過ZTF自動執(zhí)行測試腳本,把單元測試的結(jié)果回傳給禪道,二者合作打通了持續(xù)集成閉環(huán)。整個團隊內(nèi)部實現(xiàn)持續(xù)反饋,使流程更靈活,調(diào)試過程更簡化,更是降低了Bug修復(fù)的成本。
結(jié)論
綜上所述,DevOps的實踐效果有賴于上述各項活動的有效開展。引入并推廣DevOps需要花費大量資源和成本,但一旦成功實施,便將受益匪淺。根據(jù)最近一項對2.5萬多名專業(yè)技術(shù)人員的調(diào)查,大多數(shù)成功實施DevOps的公司,在保持質(zhì)量的前提下,持續(xù)迭代和發(fā)布的效率往往得到了指數(shù)級的提高。
盡管DevOps實施起來并不總是那么容易,但有了規(guī)范的流程和良好的實踐,就能夠顯著提高生產(chǎn)率、降低成本、提高交付質(zhì)量。據(jù)此,我們也可以預(yù)見,DevOps在未來將會被越來越廣泛地應(yīng)用。
參考文獻:
Mitesh Patel .How to Do DevOps Effectively? [OL].(2020-05-08)
https://dzone.com/articles/how-to-do-devops-effectively