回顾过去的一年,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 等公司做过研发和架构,是有十多年开发经验的互联网老兵,专注于软件生命周期管理,微服务架构,云原生应用,容器化等领域。
欢迎转载,但转载请注明作者与出处。谢谢!