這一概念的風行并不在意料之外。亞馬遜早期就提倡SOA (Service Oriented Architecture ),在亞馬遜的每一個工程師都可以完全獨立地完成編寫代碼,測試代碼,版本管理,部署上線,服務監測等工作。現在,亞馬遜憑借對 DevOps 文化的最佳實踐,一躍成為世界級別IT領導者。
目前,DevOps 仍處于高速發展階段,但如果做到整個業務部署 DevOps,不僅對軟性的文化有要求,也有對硬性工具鏈的要求。南京大學軟件研發效能實驗室發布的《DevOps ·云原生2021年度中國調查報告》顯示,2021年國內企業的 DevOps 工具的普及程度較2019年有明顯上升。
DevOps 工具的使用正在變得越來越重要。隨著各色工具的出現與應用,讓 DevOps 得以從一個概念慢慢變成現實。
目前,DevOps 工具覆蓋了從規劃、編碼、構建、測試、發布、部署和維護的軟件生產全過程。
01 敏捷開發工具,加速開發效率
“敏捷”(Agile)這個概念起源于美國,比 DevOps 出現的時間要早。
敏捷開發框架被提出以后,軟件的運行和運維方式發生了巨大的變化。因為“敏捷”完全摒棄了傳統的瀑布式思維,將小步快跑、不斷迭代的分步思想融匯在開發過程中。
隨后,敏捷成為 DevOps 中的重要一環,一些敏捷教練認為,工作在這個系統中的所有人需要有全局協作和優化的意識,優化價值流的流量、流速,關注價值的產生。工程師們更要有工具鏈整體優化的意識,而不僅僅是精通某個環節,或局限在與自己相關的上下游工具上。
在敏捷開發中,往往離不開一些需求和項目管理工具,比如 JIRA、Trello等。
JIRA是一個被廣泛使用的問題跟蹤器,提供了 bug 跟蹤和敏捷項目管理功能。雖然JIRA是由澳大利亞 Atlassian 公司創建的商業授權產品,但也有可有限使用的免費版本。
JIRA詳情可查看:https://www.oschina.net/p/jira
此外,Atlassian 子公司所擁有的 Trello 也是在國際上非常流行的協作工具,以設計簡約著名,很多團隊用它來計劃各自的工作 sprint(沖刺)。國內知名的Teambition、Leangoo 等都在一定程度上效仿了 Trello 的設計。
02 持續交付工具,助力落地DevOps
DevOps 是一個完整的面向IT運維的工作流,其中CI/CD是基礎。
CI是Continuous Integration(持續集成),而CD對應多個英文,Continuous Delivery(持續交付)或Continuous Deployment(持續部署)。
如果無法做到CI/CD的話,DevOps 也就變成了空中樓閣。
要做到持續交付,構建十分重要。在構建階段,需要保持打包的一致性,而自動執行容易出錯的活動,生成早期質量信號。此時,Maven、NPM、Gradle等構建工具則大有用處。
Maven 主要用于 Java 項目的自動化構建,同時它也可以構建和管理以 C#、Ruby、Scala 等語言編寫的項目。而Gradle 則是基于 Apache Ant 和 Apache Maven 理念的自動化構建系統,它還引入了基于 Groovy 的領域特定語言。
Maven詳情可查看:https://www.oschina.net/p/maven
Gradle詳情可查看:https://www.oschina.net/p/gradle
在構建Maven庫前后,往往需要Nexus這樣的倉庫管理工具。Nexus 是一套“開箱即用”的系統,功能非常強大,它極大簡化了自己內部倉庫的維護和外部倉庫的訪問。在內部,你可以配置構建工具,并發布到 Nexus,然后其他開發人員就可以使用它們了。
Nexus 詳情可查看:https://www.oschina.net/p/nexus
在持續集成中,像Jenkins、Bamboo等這樣的流水線工具不可或缺。其中,Jenkins 是開源、免費、與平臺無關的自動化服務器,它獨立于 Java ,且支持Windows、Mac 和其他類似 UNIX 的操作系統,通過Jenkins 可以將本機系統軟件包 Docker 安裝。
Jenkins 詳情可查看:https://www.oschina.net/p/jenkins
此外,容器引擎和編排工具也在DevOps 的持續交付工具之列。南京大學軟件研發效能實驗室發布的《DevOps·云原生2021年度中國調查報告》顯示,過去兩年,容器技術的應用持續深化,以容器及其編排技術為核心的生態,逐漸擴展至涵蓋微服務、DevOps、服務監測分析、應用管理的完整閉環。
因此,以Docker、K8s、Apache Mesos等為代表的容器引擎和編排工具幾乎在DevOps實踐中扮演著不可替代的角色。
Apache Mesos詳情可查看:https://www.oschina.net/p/apache+mesos
03 自動化運維工具,補上運維一環
DevOps將傳統的“開發”和“運維”概念合二為一,將兩者從傳統作坊式的工作方式解放出來。所以,在DevOps 工具鏈中,Zabbix、Elastic、Grafana、Kafka、Ansible、Logstash、Prometheus等自動運維工具的作用不可小覷。
其中,Ansible 是由 RedHat 維護的開源 IT 自動化工具,使用劇本(playbooks)做配置管理和多機部署系統,它運行在 Unix 家族系統上,可以配置 Unix 家族系統和 Windows。
我們可以在控制機器上安裝 Ansible,而不需要 Ansible 在其他服務器上運行,這些服務器可以從 Web 到應用程序再到數據庫服務器。
Ansible 詳情可查看:https://www.oschina.net/p/ansible
Prometheus則是用于事件監視和警報的免費軟件應用程序,它在時間序列數據庫中記錄實時指標,基于 HTTP 拉取模型,支持靈活的查詢和實時警報。Prometheus 服務器的工作方式是抓取,也就是說,調用各個節點暴露出來的指標端點。
Prometheus 詳情可查看:https://www.oschina.net/p/prometheus
Grafana包括企業版和開源版本兩種,是可視化分析軟件,可以查詢、可視化、報警和探索指標,無論這些指標存儲在哪里,Grafana 都可以通過提供相關數據來幫助我們跟蹤用戶行為、應用程序行為、在生產環境或預生產環境中彈出錯誤的頻率、彈出錯誤的類型以及上下文場景。
Grafana 詳情可查看:https://www.oschina.net/p/grafana
04 平臺類工具,DevOps工具的“集大成者”
隨著 DevOps 實踐在國內外企業中流行開來,用戶對自動化的要求越來越高。因此,也就催生了更多集成功能的DevOps 平臺,例如我國的“飛算 SoFlu全自動軟件工程平臺”。
飛算 SoFlu其實是通過可視化編程的方式滿足開發需求,也就是說,輸入流程圖即可實現自動開發、自動測試、自動運維等,由此提高工作效率,使用戶可以更多關注自身業務。在平臺使用過程中,可以達到一個ID相當于一個10人科技團隊的效果。
此外,飛算還可以通過管理平臺來管理需求、研發、測試、部署、上線、運維等整個軟件生命周期,沉淀經驗、積累知識,將管理制度真正落地。
以近期上線的測試平臺為例,飛算SoFlu 通過自動化的生命周期管理、測試用例自動生成、測試數據管理等功能,去解決人工測試耗時長、測試跟蹤管理難、測試成本高等難題。軟件質量可以通過工具、流程和管理予以保障,而不再依靠有豐富經驗的軟件工程師。
目前,飛算 SoFlu仍在加速更新更加強大的 DevOps 功能,未來可期。
飛算詳情可查看:https://www.feisuanyz.com/
05 微服務相關技術,通過拆分更加便利
所謂“微服務”,就是將原來黑盒化的一個整體產品進行拆分(解耦),從一個提供多種服務的整體,拆成各自提供不同服務的多個個體。因此,通過微服務技術,不同的工程師可以對各自負責的模塊進行處理,例如開發、測試、部署、迭代。
Spring cloud、Spring Boot、Apache Dubbo等工具都可以用于微服務之中。其中,Spring cloud 專注為典型的用例和可擴展性機制提供良好的開箱即用體驗,它為開發人員提供了快速構建分布式系統中常見模式的功能,通過Spring cloud 開發者可以快速實現樣板的服務和應用程序。
Spring cloud 詳情可查看:https://www.oschina.net/p/spring-cloud
06 安全管理工具,讓DevOps 走向DevSecOps
DevSecOps,也就是研發安全運營一體化,將安全融入 DevOps 每個階段過程,開發、安全、運營各部門緊密合作,強調在安全風險可控的前提下,幫助企業提升IT效能,更好地實現研發運營一體化。
云計算開源產業聯盟發布的《中國DevOps現狀調查報告2021》顯示,源代碼靜態安全檢測、容器鏡像安全掃描及 Web 應用防火墻(WAF)正在成為企業應用最廣泛的 DevSecOps 技術實踐。
并且,企業在選擇 DevOps 工具時更注重功能的易用性、工具自身的安全性和自動化程度。
調查顯示, 超過四成的企業在選擇 DevOps 工具時考慮工具的功能的易用性(43.18%)、工具自身的安全性 (42.96%)和工具的自動化程度(42.80%)。

安全工具也是百花齊放, 包括了代碼安全工具Fortify、容器安全工具Clair、Web安全工具AppScan等等。