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