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