O’Reilly online learning平台上有很多关键信息,涉及到技术领导者需要关注的趋势和问题。这也是我们年度使用率研究的数据来源,在这项研究中我们分析了最常用的主题和热门搜索词。[1]
使用率和搜索量数据结合在一起就能提供一种上下文视图,从中不仅能观察到人们正在积极使用哪些工具、技术和技能,还能看出他们喜欢收集哪些领域的信息。
O’Reilly online learning平台上最新的使用率数据显示以下五个技术领域的发展趋势:
- 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 和开发人员需要警惕的安全风险其实一直都是非常多的。
图1:2019 年 O'Reilly online learing平台上热门术语的标准化搜索频率(左)和每个术语的变化率(右)
图2:O’Reilly online learning平台上的高级主题 -2019 年使用率由高至低的排序(左)以及每个主题的变化率(右)
在编程领域,Python 最流行
与 2018 年一样,2019 年 Python 仍然是 O’Reilly online leanring平台中最受欢迎的语言。与 Python 相关的主题使用率在 2019 年以 6%的速度稳定增长,比 2018 年略有下降(+10%)。在 2017 年超越 Java 之后,经过数年的稳步攀升,与 Python 相关的互动现在已占整体使用率的近 10%。
但是 Python 是一个特例:与往年相比,它在 2019 年的增长其实主要受到 ML 热度的推动。2019 年如果只将 Python 作为一种编程语言,那么相关主题使用率仅增长 4%;相比之下,与 Python 和 ML 相关的主题使用率(例如在 AI、深度学习和自然语言处理的上下文中,或者与几种流行的 ML/AI 框架结合使用)增加了 9%。基于 Python 的 Web 开发框架则拖了增长的后腿,其使用率同比增长仅 3%。
图3:O’Reilly online learning平台上的顶级编程语言在 2019 年的标准化搜索频率(左)以及每种语言的变化率(右)
图4:在 O’Reilly online leanring平台上的编程语言 - 在 2019 年使用率由高至低的排序(左),以及每种语言的变化率(右)
这与我们在其他地方观察到的情况是一致的:Python 在 AI 和 ML 领域热度中获得了新的增长点。Python 与 R 语言一起都是数据分析中最常用的语言。可用的 Python 库包括线性或逻辑回归的预构建库、决策树、朴素贝叶斯、k 均值、梯度递增等等,几乎可以满足开发人员或数据科学家的一切潜在需求。(Python 库在数据处理或数据工程领域也很有用。)
有趣的是,R 语言自己还在下降。O’Reilly online learning平台中与 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 online leanring平台中与 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 的热度。
图5:O’Reilly online leanring平台上的软件架构主题 - 在 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%)并非偶然。
图6:O’Reilly online leanring平台上的基础设施和运维主题 - 在 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%)的一半。
图7:O’Reilly online leanring平台上的数据主题 -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 online leanring平台上,与云相关的概念和术语的关注程度仍在不断增长,尽管增速有所放缓。从 2017 年到 2018 年,与云相关的主题使用率激增了 35%;在 2018 年至 2019 年期间,它的增长率放缓到了不到一半(增长 17%)。这一情况表明云这一类别已经取得了很大份额,以至于增速就没有那么明显了。就云而言,虽然它的增长速度减慢了,但势头仍然强劲。
图8:O’Reilly online learning平台上的云主题 - 在 2019 年使用率由高至低的排序(左),以及每个主题的变化率(右)
对云服务提供商的兴趣是整个云计算行业热度的一个缩影:与 Amazon 和 AWS 相关的主题使用率同比增长 14%;另一方面,Azure 的使用率增长 29%;而 Google Compute Platform(GCP)增长 39%。亚马逊控制着云基础设施即服务(IaaS)产品总体市场的一半。它也已经达到了无法继续维持高增速的节点。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 online learing平台上主题活跃度的表现。平台上主题使用率的减少不一定代表实践中的使用率(或有用性)也跟着下降,它只是被其他新兴趋势挤了出去。
这也说明为什么像 JavaScript 这样的领头羊主题的使用率下滑会有很大影响。即使这些主题不再是快速和持续创新的场所,它们对于日常用例来说也依旧非常重要,尤其是在日常信息收集或更专业的问题解决领域更是如此。并不是说 JavaScript 的重要性不如从前了。毕竟,React、Angular 和 Vue.js 都是开发和创新的焦点所在,而它们三个都是基于 JavaScript 的。我们将以另一种方式来理解和思考 JavaScript——对于数据工程、Docker、DevOps 和变更管理也是如此。我们要用不同的方式来对待它们。
Radar 要捕捉的正是这种差异。我们要探索的不是每个人都能看到的显而易见的变化,而是变化本身的意义和影响。
备注:
[1] 本文的数据来自于 O’Reilly online leanring平台中的热门搜索词和最常用主题,使用的信息都是非隐私关联的。我们比较了过去三年的汇总数据;2017 年和 2018 年的全年数据,以及到 2019 年 10 月底的数据。
[2] 相当合理的决定。.NET 与其说是软件框架,不如说是一种语言:也就是 C# 和一些相关语言的超集,包括 Visual Basic .NET、J# 和 C++/CLI,后者是特定于.NET 的 C++ 实现。
[3]ML 和 AI 在任何层面上都不是同一件事。但为了简单起见,我们在这里将它们放在一起讨论。