近年來,得益于容器技術(shù)與微服務(wù)架構(gòu)的蓬勃發(fā)展,在敏捷模型基礎(chǔ)之上,開發(fā)和運維協(xié)同工作的 DevOps 模式應(yīng)運而生。
事實上,DevOps 這個理念并不是憑空出現(xiàn)的,它來自于傳統(tǒng)制造業(yè)的 “精益” 思想,最早出自豐田汽車企業(yè)文化中的 “精益制造” 理念。早于 DevOps 出現(xiàn)的敏捷開發(fā),也借鑒了這種精益制造的思想。
雖然二者都來源于精益思想,但敏捷開發(fā)和 DevOps 的側(cè)重點各有不同。敏捷開發(fā)更偏向于解決開發(fā)側(cè),即研發(fā)過程中的問題;而 DevOps 則在敏捷開發(fā)的基礎(chǔ)上延伸到了運維的領(lǐng)域,且隨著行業(yè)理解的加深,DevOps 覆蓋的范圍在不斷擴(kuò)展。
DevOps 是一系列軟件開發(fā)實踐,強調(diào)開發(fā)人員(Dev)和運維人員(Ops)之間的溝通合作,通過自動化流程,使軟件構(gòu)建、測試、交付更加快捷、頻繁和可靠。這種開發(fā)模式的特點是可以把產(chǎn)品的每個迭代,或者每修復(fù)一個線上缺陷就立即部署到生產(chǎn)環(huán)境,這樣一來,開發(fā)者就能夠迅速從用戶處獲得反饋并且快速做出響應(yīng)。
持續(xù)集成、持續(xù)交付和持續(xù)運營
DevOps 強調(diào)持續(xù)集成和持續(xù)交付,也就是我們常說的 CI/CD。近年來還興起了持續(xù)運營 CO 的概念。
持續(xù)集成早在 DevOps 概念誕生之前就已經(jīng)存在。當(dāng)時人們所說的持續(xù)集成主要是指代碼的集成,因為在多人開發(fā)的場景下,每個人對代碼的改動都會對主線產(chǎn)生影響,解決代碼集成問題成為了很多代碼版本管理工具關(guān)注的重點。
持續(xù)交付在持續(xù)集成的基礎(chǔ)上,將集成后的代碼部署到更貼近真實運行環(huán)境的「類生產(chǎn)環(huán)境」中進(jìn)行更多的測試,如果代碼沒有問題,則可以繼續(xù)部署到生產(chǎn)環(huán)境中,實現(xiàn)持續(xù)部署。
持續(xù)運營則是 DevOps 理念進(jìn)一步從研發(fā)、運維延伸到業(yè)務(wù)領(lǐng)域的概念。當(dāng)我們給客戶交付的價值需要衡量體現(xiàn)時,例如一款 ToC 的軟件產(chǎn)品,衡量它的點擊率、用戶使用率、用戶粘性等數(shù)據(jù),將這些來自用戶側(cè)的反饋與研發(fā)、運維流程結(jié)合起來,就是 DevOps 延伸到運營階段的體現(xiàn)。
變更管理和配置管理
通俗地說,DevOps 實際上是一種新的研發(fā)管理方法論。無論是在傳統(tǒng)開發(fā)模式還是 DevOps 模式中,人們最關(guān)注的是變更管理和配置管理。
變更管理囊括了公司架構(gòu)層面對整個 IT 部門的變更請求管理,例如員工的軟件需要重新安裝、域名指向變更、服務(wù)器配置變更、增加新的服務(wù)器等等,這些都屬于變更管理需要考慮到的。在 DevOps 流程中,提倡將傳統(tǒng)流程里需要人工處理的變更請求改為自助服務(wù),即建立一套完整的自動化流程來處理這些變更請求。
配置管理則是對變更管理在技術(shù)層面的支撐。當(dāng)變更管理涉及到配置項的變更時,在技術(shù)層面就涉及到配置項的識別,然后對配置項的版本進(jìn)行管理,并在變更的過程中進(jìn)行審查,確保整個系統(tǒng)配置版本的統(tǒng)一。
綜上所述,我們也可以說 DevOps 是應(yīng)對 “變化” 的藝術(shù)。如今的市場要求研發(fā)團(tuán)隊進(jìn)行快速迭代、快速上線,這就涉及到軟件版本的頻繁變更,變更管理和配置管理在其中的重要作用不言而喻。這就引出了我們衡量一個 DevOps 實踐是否成熟的四大核心度量指標(biāo),即部署頻率、服務(wù)恢復(fù)時間、變更失敗率和變更前置時間。
當(dāng)我們在挑選合適的 DevOps 工具時,就要結(jié)合這些工具能否提升以上指標(biāo)來做出選擇。
如何選擇合適的 DevOps 工具
面對如此之多的工具,研發(fā)團(tuán)隊在進(jìn)行技術(shù)選型時往往會面臨一些困擾。那么我們究竟應(yīng)該如何選擇這些琳瑯滿目的開發(fā)工具,從而組成一個高效的 DevOps 工具鏈呢?
根據(jù)企業(yè)的投入和研發(fā)實力,目前在業(yè)內(nèi)部署 DevOps 工作流的方式可以分為兩種類型。一種是 DIY DevOps,即企業(yè)自研或基于開源的 DevOps 基礎(chǔ)設(shè)施工具進(jìn)行私有化部署,再根據(jù)自身需求研發(fā)相應(yīng)的擴(kuò)展組件。
這種方式能夠根據(jù)復(fù)雜的業(yè)務(wù)需要定制更符合企業(yè)自身需求的開發(fā)環(huán)境,但需要企業(yè)具備一定的研發(fā)實力,擁有熟悉 DevOps 建設(shè)方法論和實踐經(jīng)驗的高端人才,投入的人力成本較高。
另一種是采用市面上較為成熟的一體化 DevOps 平臺,適合研發(fā)資源不足、業(yè)務(wù)場景不那么復(fù)雜的企業(yè)用戶。這種模式的好處是不需要企業(yè)從零自建 DevOps 團(tuán)隊,可以快速體驗平臺工具自帶的優(yōu)秀 DevOps 實踐,降低人力成本的投入。
其中,由飛算自主研發(fā)的 SoFlu 軟件機(jī)器人作為輔助開發(fā)工具,從后端、前端、測試到運維等環(huán)節(jié)幫助企業(yè)研發(fā)團(tuán)隊落地 DevOps,實現(xiàn)自動化開發(fā),對于業(yè)務(wù)主要采用 Java 技術(shù)棧的團(tuán)隊來說具有極高的性價比。
SoFlu 軟件機(jī)器人首發(fā)于 2020 年 11 月,通過后端全自動開發(fā)平臺,率先實現(xiàn)了 Java 后端的全自動開發(fā)。用戶只需輸入流程圖,平臺就能夠自動生成通過實踐驗證的微服務(wù)打包文件,并可直接部署到服務(wù)器上,大大降低微服務(wù)部署運維的門檻,由此節(jié)省大量時間和人力。工具的屬性也意味著用戶可以將 SoFlu 軟件機(jī)器人生成的代碼部署在任何平臺。
產(chǎn)品發(fā)布后,為了更全面地滿足軟件自動化開發(fā)需求,SoFlu 軟件機(jī)器人還上線了前端全自動開發(fā)平臺,提供可視化開發(fā)模式,通過豐富的頁面控件和對后端接口聯(lián)調(diào)的簡化,極大地提高了前端開發(fā)效率。
除了為開發(fā)者提供前后端自動化開發(fā)工具外, SoFlu 軟件機(jī)器人還推出了全自動測試平臺和全自動運維平臺,為企業(yè)研發(fā)團(tuán)隊提供覆蓋軟件研發(fā)全流程的自動化工具,更高效地應(yīng)對頻繁迭代、頻繁部署的 DevOps 研發(fā)模式。
當(dāng)然,以上兩種類型的 DevOps 部署方式并沒有好壞之分,不同企業(yè)還是應(yīng)該根據(jù)自身的業(yè)務(wù)場景和需求采用適合自己的 DevOps 部署方式。
最后值得一提的是,技術(shù)沒有銀彈。DevOps 并不是解決所有問題的萬能鑰匙。總而言之,為了 DevOps 而 DevOps 并不可取,大而全的框架不一定適合每一個團(tuán)隊,貼合自身需求的工具和模式才是最好的。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )