回顧過去的一年,DevOps 技術圈風起雲湧,開源社群以及商業軟體在 DevOps 領域均有非常大的發展,今天就從 Issue Tracking 系統,開發語言,建構,持續內建伺服器,容器等方面和大家盤點下過去的一年裡 DevOps 的工具使用情況和技術發展趨勢。
Issue Tracking 系統
這裡引用 JetBrain 公司(IntelliJ IDEA 的開發商)在全球20個國家(包括中國,美國,英國,日本等覆寫了70%開發者的國家),對5000名軟體工程師進行了充分的調研,調研結果顯示 Jira 是最流行的 Issue Tracking 系統,隻有 C# 的開發者傾向于使用微軟的 TFS(Team Foundation Server)。
Github Issue 由于是免費的,也得到衆多網際網路公司和開源社群的青睐。個人推薦小團隊可以使用 Gitlab 的 Issue Board,能夠滿足基本的看闆需求,但如果你需求豐富的報表功能,建議使用 Jira,Jira 的插件市場裡有非常豐富的報表插件,Jira 本身也提供強大的定制能力,滿足不同使用者的各種需求。
開發語言
JavaScript 無疑是應用範圍最廣的語言,而對于後端開發語言仍然是 Java 占據主導地位。
建構工具
對于71%的 Java 開發者已經使用了 Maven 進行建構,Gradle 的使用程度已經達到42%,雖然筆者認為 Gradle 在國内還遠遠沒有達到這個數,但由于 Gradle 由代碼定義建構流程帶來的靈活性,以及性能的提升,它确實為開發者帶來了一個更靈活的選擇,Netflix,LinkedIn 等公司均使用 Gradle 做建構,未來它的增長趨勢有望超過 Maven,而使用 Ant 的使用者在逐年遞減。
持續內建伺服器
Jenkins 仍然是最全球流行的持續內建工具,國内某社群曾經調研 Jenkins 在國内的使用率在70%左右。為什麼 Jenkins 會這麼經久不衰?這得益于 Jenkins 的插件生态,Jenkins 社群有上千個插件,能到輕松的對接任何 DevOps 工具。
Travis CI 是公有雲上的一款持續內建伺服器,對 GitHub,GitLab 支援良好,深受 AWS 使用者的喜愛。
測試工具
随着 DevOps 時代的來臨,企業内部正在面臨快速釋出和品質提升的需求。上圖是來自 Gartner 釋出的2017自動化測試工具的魔力象限圖,圖中評估了業界主流的測試工具提供商,其中:
● Micro Focus
Micro Focus 在全球有40000+使用者,大客戶包含 AIG,寶馬等等。處于市場的 Leader 地位,它的優勢在于它提供了一整套的軟體生命周期管理的方案,包含 ALM 和核心産品 UFT(Unified Function Testing),以及 BPT(Business Process Testing)工具等等,讓使用者進行一站式的持續傳遞。
它的缺點在于它被 HPE 收購後,和 HPE 已有的産品線有高度重合,未來如何發展并不明朗,另外産品比較重,對應尋求輕量級産品方案的公司來講吸引力并不大。
● Tricentis
Tricentis 公司在自動化測試領域處于領先地位,可能國内的使用者很少聽說這個公司,它在北美市場佔有率不錯,但是測試工具主要的市場在歐洲和亞洲,該公司需要在這些地區進行更廣泛的推廣。下圖是 Tosca 和 HPE 的 UFT 以及 Selenium 之前的對比:
可以看到 Tosca 對于第三方工具的對接比 Selenium 做得要好,內建度也高,一個好的 DevOps 工具的一個特點就是能夠靈活,輕松的和第三方工具內建。
● Selenium
圖中并沒有提到 Selenium,但作為一個開源自動化測試工具,Selenium 還是占據功能自動化測試很大一部分市場的,在 Stack Overflow 上搜尋 Selenium,會搜到48800條問題,如此活躍的社群讓 Selenium 能夠一直保持活力。現在也有不少基于 Selenium 開發的測試架構,例如 Robot Framework 等等。
容器編排平台
CNCF (Cloud Native Cloud Foundation) 在 KubeCon 大會對容器編排平台的使用情況進行了一次調研,調查了1500 的大會參會者,其中41%來自 DevOps/SREs 團隊,29%來自開發團隊,其中30%的受訪者來自規模超過5000人的企業。
釋出的調查報告顯示: Kubernetes 已經占有70%以上的容器編排平台市場。
2017年是 Kubernetes 的封神的一年。從下圖可以看到 GitHub 上排名前30的開源項目:
Kubernetes 在 GitHub 的 Star 達到32.6K, 排名第五,其中的參與者以及 Commit 數量躍居到第二位,僅次于第一位的 Linux 項目。
在過去的這一年中,最初支援 Mesos 或者其他容器編排工具的廠商紛紛開始支援 Kubernetes,其中轉型較早的平台已經開始收割,例如: Openshift,2017年 RedHat 的收入達到 2.4Billion USD, 截止到 2017年 Q3 的資料,Openshift 已經完成了超過50個6-7位數的訂單。
2018年 Kubernetes 将如何發展? 從去年的 KubeCon 大會上也可以關注到,來自紅帽的 Kubernetes 的架構師 Clayton Coleman 宣布 Kubernetes 社群在2018年有幾個重要的關注點:
Service Mesh
2018将會是 Service Mesh 的元年,Service Mesh 是用來描述大規模微服務部署情況下,服務網絡之間的複雜協作方式。業界知名的架構有:Istio,Envoy,CONDUIT 等, 其中由 IBM,谷歌等公司貢獻的 Istio知名度較高,在 Github 上有将近6000的 Star。Istio 的設計初衷就是解決微服務規模變大,服務之間的服務發現,負載,失敗重試,監控,以及更複雜的需求例如:A/B 測試,端到端認證,權限通路控制等等。
支援大資料,機器學習工具
Spark 和 TensorFlow 在 Kubernetes 上的部署已經越來越容易,Kubernetes 社群将會持續優化對大資料,機器學習工具的支援。
改進 Application 的配置
每個公司對應用配置的使用方式不盡相同,但18年的 Kubernetes 社群會投入更大精力在部署和配置的優化,社群有很多優秀的項目,例如 Kubernetes Helm,Helm 是Kubernetes 的包管理平台,用 Helm 能夠管理 Kubernetes 需要的資源,可以把它了解為 Kubernetes 裡的 apt/yum/brew。使用 Helm 能夠從社群獲得大量優化後的 Kubernetes 應用配置,并且能夠将 Kubernetes 的應用進行版本化管理,例如復原和灰階釋出。它在 KubeCon 上也備受關注,有6個 Track 專門介紹 Helm 的功能以及 Helm 未來發展方向。
2018年,Kubernetes 還将支援 ServerLess 工具,例如 Openwhisk,Kubeless 等等,內建 LDAP,支援多租戶,支援多種容器和虛拟機運作環境,例如 cri-o, KubeVirt,hyperv 等等。
這裡順便說下 CNCF,CNCF 是15年底成立的非營利性的組成,屬于 LInux 基金會的一部分,想要成為 CNCF 的會員,必須先成為 Linux 基金會的會員。CNCF 的使命是主導新的分布式計算系統,進而能夠支援成千上萬的自愈式多租戶的節點。
CNCF 已經孵化了衆多知名項目,包括 Kubernetes,Prometheus,OpenTracing,Rkt,Envoy,等等,從上圖 CNCF 的會員名單也可以看出,DevOps 業界的巨頭均已入會。從 CNCF 的 Board Member 清單來看,亞馬遜的雲架構師 Adrian Cockcroft,CoreOs 的 CTO,紅帽的首席科學家等在主導 CNCF 的方向。國内有兩家公司在 Board 裡有一席之地,它們是阿裡和華為,可以開到國内的技術也在逐漸影響到全球範圍,我相信2018年 CNCF 在全球的影響力會持續的增長。
FaaS (Function as a Service)
AWS 的首席雲架構師 Adrian Cockcroft(前 Netflix 首席架構師)認為,業務邏輯的載體在5年前從傳統的巨石應用遷移到了微服務,現在,業務邏輯的載體會從微服務開始演化成為 Function。
從5年前開始到今天,我們已經能夠完成微服務的建設,業務邏輯可以以容器為載體運作,開發者無需關系具體的容器是運作在哪個節點,即使容器發生故障,容器管理平台也能夠實作故障自愈。
FaaS 認為微服務并不是業務邏輯的最小載體,可以使用 Function 作為業務邏輯的載體,這樣開發者無需關心伺服器在什麼地方,它如何擴容,這些事情交給 FaaS 來做。公有雲雲廠商紛紛投入大量資源進行 FaaS 的建設,例如 AWS 的 Lambda Function,微軟的 Azure Functions,谷歌的 CloudFunctions,開源社群比較知名的架構有 ServerLess,它能夠對接多種雲平台提供的 FaaS 的功能,在 GitHub 已有上萬個 Star。
而 AWS 的的 Lambda Function 能夠做到“瞬時方法”,即方法按需建立,按需使用,用完銷毀,而 AWS 按照使用的幾百微秒來進行計費,當系統處于閑置狀态,它會自動停掉,不需要任何費用,進而大大降低使用者的成本。可能你要問,如果程式員寫了一個死循環的方法調用,會不會扣錢扣到破産?當然不會,AWS 會限制一個 Region 裡并發方法數不超過100. 當然 FaaS 仍然屬于較超前的概念,由于涉及到項目的改造,它實際落地仍需一段時間。
DevOps 資料可視化
市面上做資料可視化的工具非常多,但專注于 DevOps 的資料可視化工具還很少,去年,CapitalOne 公司的開源項目-Hygieia 被國人所了解,Hygieia 是 CapitalOne 公司内部孵化的一個項目,目的是解決 DevOps 工具鍊中的資料碎片化的問題,Hygieia 為不同的工具提供了收集資料的 Collector,将資料存儲在 MongoDB 裡,然後進行資料可視化的展示。
總結
過去的一年裡湧現了很多新的技術,把握這些技術發展方向,對于公司内部的技術平台搭建和技術發展方向至關重要,新的一年裡,希望大家多多關注 JFrog 公衆号,獲得第一手矽谷技術資訊。
參考文獻:
1.Jetbrains DevOps 生态工具鍊調查報告:
https://www.jetbrains.com/research/devecosystem-2017/team-tools/
2.CNCF 調查報告:
https://www.cncf.io/blog/2017/06/28/survey-shows-kubernetes-leading-orchestration-platform/
3.RedHat Openshift 市場報告:
https://www.redhat.com/en/blog/breadth-and-reach-openshift-marketplace
4.Gartner 測試工具魔力象限:
https://www.gartner.com/doc/reprints?id=1-4KHGPDG&ct=171114&st=sb
5.https://dzone.com/articles/best-automation-testing-tools-for-2018
6.Adrian Cockcroft GOTO 2017:
https://www.youtube.com/watch?v=EDZBYbEwhm8
7.ServerLess GitHub 位址:
https://github.com/serverless/serverless
https://github.com/capitalone/Hygieia
作者:王青
目前任職 JFrog 中國首席架構師,之前在 IBM,HPE,愛奇藝,新浪,VIPKID 等公司做過研發和架構,是有十多年開發經驗的網際網路老兵,專注于軟體生命周期管理,微服務架構,雲原生應用,容器化等領域。
歡迎轉載,但轉載請注明作者與出處。謝謝!