Categories
程式開發

O’Reilly技术趋势报告:Python最流行、云依旧热门,DevOps和AI热度下降


本文是 O’Reilly 发布的 5 key areas for tech leaders to watch in 2020 英文文章的中文翻译版本。英文原版翻译得到 O’Reilly Media,Inc. 授权。版权所有,未经书面许可,任何部分不得以任何形式使用、复制、修改。原文链接:https://www.oreilly.com/radar/oreilly-2020-platform-analysis/

O’Reilly在线学习平台上有很多关键信息,涉及到技术领导者需要关注的趋势和问题。这也是我们年度使用率研究的数据来源,在这项研究中我们分析了最常用的主题和热门搜索词。[1]

使用率和搜索量数据结合在一起就能提供一种上下文视图,从中不仅能观察到人们正在积极使用哪些工具、技术和技能,还能看出他们喜欢收集哪些领域的信息。

O’Reilly在线学习平台上最新的使用率数据显示以下五个技术领域的发展趋势:

  • Python表现卓越。这是O’Reilly上最流行的编程语言,占到总体使用率的10%。今年Python使用率的增长主要是因为其在数据科学家、机器学习(ML)和人工智能(AI)工程师中的采用率不断上升。
  • 基础设施和运维愈加热门,DevOps热度下滑。软件架构、基础设施和运维正在向云原生转型。此外,基础设施和运维

    的主题愈加热门,而DevOps的热度却在下滑。这是某种巧合吗?可能不是,不过时间会证明一切。

  • 机器学习(ML)+人工智能(AI)已然崛起,但热度也下降了。直到2017年,ML+AI一直是平台上增长最快的主题之一。这个规模庞大的主题增长仍然强劲,但在2018年的增长却放缓了(+13%),在2019年则显著降温,仅增长7%。但在数据主题内,ML+AI已从整体的22%份额增长为26%。
  • 云依旧热门,云迁移成为新亮点。云平台的强劲使用率(+16%)为云相关主题贡献了大部分增长。值得关注的是,人们对云迁移主题的兴趣不断提升(2019年使用率增长了10%,而2018年增长了30%),使其成为另一个重要的新兴趋势。
  • 安全热度飙升。去年,安全性主题总体使用率猛增了26%,主要归功于两大安全认证的推动:CompTIA Security(+50%)和CompTIA CySA+(+59%)。业务主管、系统管理员、DBA和开发人员需要警惕的安全风险其实一直都是非常多的。

O’Reilly技术趋势报告:Python最流行、云依旧热门,DevOps和AI热度下降 1

图注:2019年O’Reilly在线学习平台上热门术语的标准化搜索频率(左)和每个术语的变化率(右)。

O’Reilly技术趋势报告:Python最流行、云依旧热门,DevOps和AI热度下降 2

图注:O’Reilly在线学习平台上的高级主题-2019年使用率由高至低的排序(左)以及每个主题的变化率(右)。

在编程领域,Python最流行

与2018年一样,2019年Python仍然是O’Reilly在线学习平台中最受欢迎的语言。与Python相关的主题使用率在2019年以6%的速度稳定增长,比2018年略有下降(+10%)。在2017年超越Java之后,经过数年的稳步攀升,与Python相关的互动现在已占整体使用率的近10%。

但是Python是一个特例:与往年相比,它在2019年的增长其实主要受到ML热度的推动。2019年如果只将Python作为一种编程语言,那么相关主题使用率仅增长4%;相比之下,与Python和ML相关的主题使用率(例如在AI、深度学习和自然语言处理的上下文中,或者与几种流行的ML/AI框架结合使用)增加了9%。基于Python的Web开发框架则拖了增长的后腿,其使用率同比增长仅3%。

O’Reilly技术趋势报告:Python最流行、云依旧热门,DevOps和AI热度下降 3

图注:O’Reilly在线学习平台上的顶级编程语言在2019年的标准化搜索频率(左)以及每种语言的变化率(右)。

O’Reilly技术趋势报告:Python最流行、云依旧热门,DevOps和AI热度下降 4

图注:在O’Reilly在线学习平台上的编程语言-在2019年使用率由高至低的排序(左),以及每种语言的变化率(右)。

这与我们在其他地方观察到的情况是一致的:Python在AI和ML领域热度中获得了新的增长点。Python与R语言一起都是数据分析中最常用的语言。可用的Python库包括线性或逻辑回归的预构建库、决策树、朴素贝叶斯、k均值、梯度递增等等,几乎可以满足开发人员或数据科学家的一切潜在需求。(Python库在数据处理或数据工程领域也很有用。)

有趣的是,R语言自己还在下降。O’Reilly在线学习平台中与R语言相关的主题使用率在2017年-2018年下降了8%,在2019年则同比下降6%。R很可能会像Scala(在2018年-2019年度使用33%;2017年-2018年度使用19%)那样,成为Python崛起的牺牲品。

没错,考虑到AI和ML的热度,很难想象R还会衰退,但这里要考虑两个因素:首先,ML和数据统计不是一回事;其次,R不是主要面向开发人员的语言。R被设计用于学术、科学,以及最近兴起的商业用例。随着数据统计和相关技术在软件开发中变得越来越重要,越来越多的程序员在编程中遇到了统计数据需求。在这种情况下,相比R语言来说他们更可能会使用Python。

对某些语言的兴趣似乎在呈现上升趋势,而其他一些语言的兴趣则呈下降趋势。情况A:与Java相关的主题使用率在2018年至2019年之间下降了13%,这预示着某种趋势吗?不一定:在2017年至2018年期间,与Java相关的搜索量增长了5%。另一方面,Java的表兄弟JavaScript也在下降。没错,他们只有概念上的联系,但是对JavaScript的兴趣似乎也确实在减弱:O-Reilly在线学习平台中与JS相关的主题使用率在2017年-2018年期间下降了4%,在2018年-2019年之间则下降了7%。有一种可能,那就是微服务架构的兴起正在快速将其他语言(如Go、Rust和Python)引入Web开发世界。

在基于JavaScript的Web应用程序框架中,Angular(使用率12%)在2018年至2019年间下滑了,而React的受欢迎程度增加了(使用率增加了4%)。Vue.js(React和Angular的竞争者)在2017年-2018年间的使用率几乎翻了一番(+97%),在2018年-2019年则进入了稳定增长状态(使用率增加8%)。

一种可能的趋势是Go的步伐逐渐放慢,在使用率连续数年快速增长(其中从2017年至2018年增长14%)之后,Go的增长速度在去年有所下降,使用率仅增长了2%。但是Go现在是第六大最常用的编程语言,仅次于Python、Java、.NET和C++。如果基于统计方法将.NET剔除掉的话[2],Go就能进入前五名。

软件架构、基础设施和运维此消彼长

云原生设计是一种思考软件和架构的新方法。但是向云原生的转型不仅影响了软件架构,而且也影响了基础设施和运维。它利用了新的设计模式(微服务),同时改良了现有技术(服务编排),从而在所有环境(云或本地环境)中实现了类似云的弹性和适应性。O’Reilly Radar使用了术语“下一代架构”来描述这种转型。

在这种背景下,我们需要了解软件架构、基础设施和运维中都发生了哪些变化。在通用软件架构主题中,容器主题的使用率在我们的2019年分析报告中有所增长,提升了17%。相比它在2018年的增长率(使用率增长了56%)来说这个数字要小得多,但依旧令人印象深刻。Kubernetes已经成为在云原生设计模式下编排服务和微服务的事实解决方案。Kubernetes的使用率在2018年猛增211%,在2019年则增长40%。Kubernetes的父主题——容器编排也实现了强劲增长:2018年增长为151%,2019年增长为36%——这几乎可以全部归功于Kubernetes的热度。

O’Reilly技术趋势报告:Python最流行、云依旧热门,DevOps和AI热度下降 5

图注:O’Reilly在线学习平台上的软件架构主题-在2019年使用率由高至低的排序(左),以及每个主题的变化率(右)。

这也能用来解释微服务主题使用率的增长,该主题在2019年的增长率为22%。确实,你不一定需要微服务来“实现”云原生设计,但在今天很难将它们分离开来。大多数云原生设计模式都涉及到了微服务。

这些趋势还与基础设施和运维的兴起有关,这既反映了DevOps的局限性,又反映了向云原生设计转型所带来的挑战。基础设施和运维是通用系统管理主题下增长最快的子主题。对基础设施和运维的兴趣激增,也解释了配置管理(CM)和DevOps主题使用率的下降。

最受欢迎的那些CM工具专注于DevOps,并且热度像DevOps本身一样在下降:与所有CM工具一样,CM主题的使用率在2019年显著下降(-18%)。Ansible受的影响最小(使用率为-4%),但Jenkins、Puppet、Chef和Salt的使用率分别下降了25%或更多。在2018年下降20%之后,DevOps的使用率在2019年再次下滑(-5%)并非偶然。

O’Reilly技术趋势报告:Python最流行、云依旧热门,DevOps和AI热度下降 6

图注:O’Reilly在线学习平台上的基础设施和运维主题-在2019年使用率由高至低的排序(左),以及每个主题的变化率(右)。

基础设施和运维主题的兴起表明组织可能在扩展DevOps方面遇到了困难。DevOps旨在培养能够在系统“堆栈”的每个层中都胜任工作的程序员。但实际上,开发人员往往对DevOps中运维组件的投入较少,这一事实催生了站点可靠性工程(SRE)的思想。就算“全栈”开发人员不像独角兽那样稀有,但也不是随处可见。组织将基础设施和运维视为实用的、以运维为重点的补充方法,可以在DevOps容易失败的地方准确地弥补缺陷。

AI和ML增速下降

与数据相关主题的结果在预料之内,但也无可避免地令人感到困惑。从数据工程开始,所有数据工作的核心主题(这一类别包括涉及数据管理的那些标题,如关系数据库、Spark、Hadoop、SQL和NoSQL等)都在这一大块里。总体而言,2019年数据工程的使用率下降了8%,2018年下降了3%。这两年的下滑都是由于数据管理主题的使用率下降所致。

当我们关注更具体的数据工程主题(不包括数据管理)时,我们会看到它的份额很小,但使用率在稳步增长,2018年增长了7%,2019年增长了15%(见下图)。

在宏观层面的“数据”主题中,数据工程(包括数据管理)仍在该主题中占有最大份额,在平台上的所有使用率中占约十二分之一的份额。这几乎是数据科学主题份额的两倍,后者的使用率在2018年下降了(-2%)之后,在2019年恢复增长(+5%)。

此外,对ML和AI的兴趣一直在增长,尽管速度有所下降。举个例子:2019年,ML/AI组合主题的使用率增长了7%,约为其2018年增长速度(+13%)的一半。

O’Reilly技术趋势报告:Python最流行、云依旧热门,DevOps和AI热度下降 7

图注:O’Reilly在线学习平台上的数据主题-2019年使用率由高至低的排序(左),以及每个主题的变化率(右)。

讽刺的是,在数据相关的主题中,ML/AI的优势可能没有它们在其他主题领域(例如编程语言)中那么明显。在编程语言领域中,Python使用率的增长在很大程度上来自于该语言针对ML的实用性和适用性的推动。但是自然语言处理(NLP,2019年增长22%)和神经网络(增长17%)等与ML/AI相关的主题的使用率也在强劲增长。

数据工程作为一项任务而言当然并没有下滑,对数据工程的兴趣可能也没有下降。数据科学和ML/AI[3]都将数据工程当作一个实践领域。从其他研究中我们知道,数据科学家,机器学习和AI工程师等花费大量时间用于发现、准备和处理数据以开展工作。我们看到,流行的工具和框架通常以自动化/引导式自助功能的形式来为用户提供数据工程能力,或者(像Jupyter之类的笔记本那样)可以构建和编排调用Python、R(通过Python)等库,从而同时或(如果可能的话)并行运行数据工程作业。

与老一代数据工程相对应的术语,例如“关系数据库”、“Oracle数据库解决方案”、“Hive”、“数据库管理”、“数据模型”、“Spark”等,使用率在2019年同比下滑。部分是由于一些更大层面的、市场驱动的因素所致。从我们的研究中我们知道,Hadoop及其相关项目(例如Hive)的生态系统正处于持续多年的长期衰退之中。这种下降趋势在我们的使用率数据中得到了证实:Hadoop(-34%)、Hive(也为-34%)甚至Spark(-21%)均同比大幅下降。

我们在O’Reilly Strata会议发言人提案的分析中详细讨论了造成这种下降的可能因素。

云热度持续攀升

在O’Reilly在线学习平台上,与云相关的概念和术语的关注程度仍在不断增长,尽管增速有所放缓。从2017年到2018年,与云相关的主题使用率激增了35%;在2018年至2019年期间,它的增长率放缓到了不到一半(增长17%)。这一情况表明云这一类别已经取得了很大份额,以至于增速就没有那么明显了。就云而言,虽然它的增长速度减慢了,但势头仍然强劲。

O’Reilly技术趋势报告:Python最流行、云依旧热门,DevOps和AI热度下降 8

图注:O’Reilly在线学习平台上的云主题-在2019年使用率由高至低的排序(左),以及每个主题的变化率(右)。

对云服务提供商的兴趣是整个云计算行业热度的一个缩影:与Amazon和AWS相关的主题使用率同比增长14%;另一方面,Azure的使用率增长29%;而Google Compute Platform(GCP)增长39%。亚马逊控制着云基础设施即服务(IaaS)产品总体市场的一半,按Gartner的2018年数据显示:它也已经达到了无法继续维持高增速的节点。Azure和GCP的增长速度都比AWS快得多,但市场份额也要小得多:Azure主题在2018年的增长率接近61%(根据Gartner),占IaaS市场的15%以上;GCP增长率约为60%,占IaaS份额的4%。

同样令人感兴趣的是,去年O’Reilly平台上人们对微服务和Kubernetes领域中与云相关主题的兴趣大大提升。在2018年下降之后,与微服务相关的主题使用率在2019年同比增长22%。在2017年至2018年经历了爆炸式增长(+190%)之后,Kubernetes的使用率在2019年同比增长38%。我们通过用户调查等研究工作所看到的是:微服务已经成为云原生设计和开发的重要组成部分。

更值得关注的是,现代软件架构的这一关键趋势(即强调抽象、隔离和原子性,重视松散耦合)正在消除我们眼中的“云”与“本地”之间的界限。无论是本地还是云部署中,人们对微服务和Kubernetes的兴趣都方兴未艾,这也为这一趋势提供了佐证。

这就是云原生设计的逻辑:当然,特定的部署上下文仍然很重要——开发人员在为AWS开发时需要考虑哪些特性或约束?对于Azure来说呢?GCP呢?但是,区分公共云和私有云的清晰界限正在消失。类似的,内部私有云与传统内部部署系统之间的界限也正在消失。

对安全的兴趣激增

2019年,安全性主题的使用率(+26%)显著增长。其中部分原因是CompTIA Security+(50%)和CompTIA网络安全分析师(CySA+,59%)主题的使用率大涨。

Security+是一项入门级安全认证,因此其增长可以归因于系统管理员、DBA、软件开发人员和其他非专家用户使用率的增长。不管是为了提升他们的权威性,满足新工作要求,抑或只是为了增加自身市场价值,Security+对他们来说都是一个非常简单的认证过程:通过考试即可获得认证。另一方面,CySA+是相对较新的认证。这可以解释2018年与CySA+相关的主题使用率激增(+128%)、以及去年强劲增长的原因。与CISSP等备受欢迎的认证不同,CySA+推荐但不要求受试者拥有现实经验。与Security+一样,它是系统管理员、DBA、开发人员等可选的另一项权威认证。

认证并不是推动2019年O’Reilly平台上与安全性相关主题使用率增长的唯一原因,一系列漏洞和潜在攻击也产生了一定影响。如果说2018年(安全性使用率增长5%、搜索量增长+22%)让我们看到了Meltdown和Spectre的踪迹,那么2019年就让我们清楚地见证了Meltdown、尤其是Spectre的深远影响。在2019年,安全性相关主题的使用率(+26%)和搜索量(+25%)都相应地增加了。系统和数据库管理员、CSA、CISSP等用户渴望获得专业级的详细信息,用来修补和加固易受攻击的系统,以保护其免受至少13种不同的Spectre和14种不同的Meltdown变体的侵害,并减轻与这些修补程序相关的性能影响。开发人员和软件架构师在重写、重构或优化其代码以解决这类问题时疑问多多。在这种背景下,与安全性相关的主题使用率激增是可以理解的。

在信息安全和数据隐私领域也有着显著的变化。毕竟,2019年不仅是欧盟综合GDPR体制产生约束力的第一整年,而且自2019年1月1日起,加拿大也正式启动了类似于GDPR的PIPEDA体制。全面的《加利福尼亚消费者隐私法案》,即加利福尼亚的GDPR,则于2020年1月1日生效。

如果O’Reilly上安全性使用率的持续增长是一个可靠指标,那么在日益数字化的世界中,安全性最终可能会受到应有的关注。更多企业可能不得不承认:因数据泄露或引人注目的黑客行为而遭受财务和声誉损失的风险太高了,总体来说,花在信息安全上的钱还是很值得的。

但是,相同的分析中也能得出较负面的结论:安全支出是周期性的;一波事件后安全支出会增长,与此同时我们得承认大家都习惯于好了伤疤忘了痛。究竟未来会如何,只有时间(或我们将来的调查结果)可以证明一切。

总结与思考

差不多可以肯定,2019年最热门的趋势在明年的分析中依旧会保持自己的大致位置。编程语言都是江山代有人才出,但Python似乎有能力保持稳定增长,因为它既有实力,又具有适应性,并且易于使用。从Python在ML和AI中的广泛使用中我们看到了这一点:它已取代R成为了数据工程和分析的通用语言。

机器学习和人工智能也是如此。即便(正如一些反对者所警告的那样)下一个AI冬天即将来临,也很难想象人们对ML和AI的兴趣会很快消失。关于软件架构的趋势,尤其是基础设施和运维的趋势也是可以这样总结的。它们都是不断创新的高地,其从业人员将被迫紧追潮流。

调整后的“Overton窗口”用来判断热度水平是很有用的。Overton窗口说的是在特定时间、特定位置可用的人类认知带宽是有限的。策略或问题或趋势的组合不能超过可用带宽的100%。在某种程度上,这也确实能说明O’Reilly在线学习平台上主题活跃度的表现。平台上主题使用率的减少不一定代表实践中的使用率(或有用性)也跟着下降,它只是被其他新兴趋势挤了出去。

这也说明为什么像JavaScript这样的领头羊主题的使用率下滑会有很大影响。即使这些主题不再是快速和持续创新的场所,它们对于日常用例来说也依旧非常重要,尤其是在日常信息收集或更专业的问题解决领域更是如此。并不是说JavaScript的重要性不如从前了。毕竟,React、Angular和Vue.js都是开发和创新的焦点所在,而它们三个都是基于JavaScript的。我们将以另一种方式来理解和思考JavaScript——对于数据工程、Docker、DevOps和变更管理也是如此。我们要用不同的方式来对待它们。

Radar要捕捉的正是这种差异。我们要探索的不是每个人都能看到的显而易见的变化,而是变化本身的意义和影响。

备注:

[1]本文的数据来自于O’Reilly在线学习平台中的热门搜索词和最常用主题,使用的信息都是非隐私关联的。我们比较了过去三年的汇总数据;2017年和2018年的全年数据,以及到2019年10月底的数据。

[2]相当合理的决定。.NET与其说是软件框架,不如说是一种语言:也就是C#和一些相关语言的超集,包括Visual Basic .NET、J#和C++/CLI,后者是特定于.NET的C++实现。

[3]ML和AI在任何层面上都不是同一件事。但为了简单起见,我们在这里将它们放在一起讨论。