每年,O’Reilly在线学习网站都会针对程序员需要注意和探索的趋势、主题及问题等数据,总结出大家最为关注的主题和热门话题。透过用户使用O’Reilly在线学习网站的情况以及在网站上搜索的内容,不仅可以洞悉开发人员正在积极使用的工具和技术,还可以了解他们收集信息的领域。
近日,该平台经过分析表明,Python持续占据霸主地位,基础设施、AI/ML、云和安全方面出现了重大转变。本文的主要发现包括:
-
Python独领风骚。Python是O’Reilly在线学习平台上最流行的编程语言,占据了总使用量的10%。今年Python使用率增长的主要推动因素在于这种语言在数据科学家、机器学习(ML)和人工智能(AI)工程师中间越来越受欢迎。
-
软件体系结构、基础设施和运营都在迅速变化。向云原生设计的转变正在改变软件体系结构、基础设施和运营。此外:基础设施和运营呈上升趋势,而开发运维正在下降。难道这只是巧合?应该不会,只有等待时间证明一切。
-
机器学习与人工智能兴起,但人们的热情已有所降温。截止到2017年,ML + AI主题一直是O’Reilly在线学习平台上增长最快的主题之一。这个热门话题的增长仍然强劲,但使用率在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在线学习平台上热门术语的搜索频率(左),以及每个术语的变化情况(右)
图2 O’Reilly在线学习平台上各个主题的使用情况:2019年使用率最高的主题(左),每个主题的变化情况(右)
Python雄霸编程语言榜首
与2018年相同,2019年Python依旧是O’Reilly在线学习平台上最受欢迎的编程语言。与Python相关的使用在2019年以6%的速度稳定增长,比2018年略有下降(+10%)。经过多年的稳步攀升(在2017年超越Java之后),与Python相关的互动现已占所有使用量的近10%。
但Python是一个特例:与去年相比,今年Python的增长主要受到了机器学习的推动。2019年,Python语言本身的使用量仅增长了4%;相比之下,与Python和机器学习有关的使用(例如Python在AI、深度学习和自然语言处理中的使用,以及与多种流行的ML/AI框架的结合使用)的使用率增加了9%。基于Python的Web开发框架处于落后地位,其使用量同比仅增长了3%。
图3 2019年O'Reilly在线学习平台上顶级编程语言的搜索频率(左),以及每种语言的变化情况(右)
图4 O’Reilly在线学习平台上编程语言的使用情况:2019年使用率最高的编程语言(左),每种编程语言的变化情况(右)
这与我们在其他地方观察到的情况一致:在AI和ML的带动下,Python获得了更多关注。Python与R一起成为了数据分析最常用的语言。线性以及逻辑回归、决策树、朴素贝叶斯、k均值、梯度递增,Python库几乎可以满足开发人员或数据科学家的所有需求。(Python库在处理工程数据方面同样给力。)
有趣的是,R语言本身的使用呈继续下降趋势。在2017-2018年间, O'Reilly在线学习平台中与R语言相关的使用量下降了8%,2019年同比下降了6%。R与Scala(2018-2019年的使用率下降了33%,2017-2018年的使用率下降了19%)同病相怜,都成为了Python的牺牲品。似乎有人非常不解R的使用下降与AI和ML的热度,其实我们需要考虑两个因素:首先,ML和统计不是一回事;其次,R并非主要面向开发人员。R语言的设计初衷是面向学术、科学以及最近的商业用例。随着统计信息和相关技术在软件开发中变得越来越重要,越来越多的程序员在编程中也会遇到统计问题。因此,他们会舍R而求Python。
有些编程语言的发展呈上升趋势,而有些则呈下降趋势。在上图中,与Java相关的使用在2018年-2019年间下降了13%,这代表了Java的发展趋势吗?不一定,因为2017年-2018年间,与Java相关的搜索量增长了5%。另一方面,Java的堂兄JavaScript似乎也在下降。没错,两者没有直接的关系,但人们对JavaScript的热情似乎确实在减弱:在O-Reilly在线学习平台中,与JS相关的使用率在2017-2018年间下降了4%,在2018-2019年间下降了7%。微服务架构可能会加速其他语言(例如Go、Rust和Python)在Web方面的发展。
在基于JavaScript的Web应用程序框架中,2018年-2019年间,React的受欢迎程度有所提升(使用率增加了4%),而Angular有所下滑(使用率减少了12%)。React和Angular的竞争对象Vue.js在2017-2018年间的使用量几乎翻了一番(+97%),之后在2018-2019年保持稳定增长(使用率增加了8%)。
Go的发展呈现了另一种趋势,继使用量连续数年快速增长(包括2017-2018年增长了14%)之后,去年的增长速度有所放缓(使用率仅增长了2%)。然而,如今Go在最常用的编程语言中排行第六,仅次于Python、Java、.NET和C++
软件体系结构、基础设施和运营
云原生设计是一种思考软件体系结构的新方法。然而,向云原生的转变不仅对软件架构有影响,而且对基础设施和运营也有影响。云原生设计利用新的设计模式(微服务)以及对现有技术(服务编排)的改动,以在所有环境、云或本地环境中实现类似于云的灵活性和弹性。O’Reilly Radar通过术语“下一代体系结构”来描述这种转变。
在这种背景下,我们必须掌握软件体系结构、基础设施和运营中的一切动向。在通用软件架构主题中,有关容器使用在我们的2019年分析中有所增加,增长了17%。虽然远远落后于2018年的增长率(2018年使用率增长了56%),但仍然令人刮目相看。Kubernetes已成为云原生设计模式下协调服务和微服务的实际解决方案。Kubernetes的使用量在2018年激增了211%,2019年增长了40%。Kubernetes的父主题——容器协调器也实现了强劲的使用量增长:2018年为151%,今年为36%,这几乎可以全部归功于Kubernetes本身。
图5 O’Reilly在线学习平台上软件架构的使用情况:2019年使用率最高的架构(左),每种架构的变化情况(右)
这也解释了微服务主题使用率增加的原因,2019年该主题的增长率为22%。虽然你不一定需要微服务来“执行”云原生设计,但是我们很难将二者分开。大多数云原生设计模式都涉及微服务。
这些趋势还与基础设施和运营的兴起有关,既反映了开发运维的局限性,又反映了向云原生设计转变所带来的挑战。基础设施和运营的使用是通用系统管理主题下增长最快的话题。基础设施和运营的热度也解释了配置管理(CM)和开发运维主题领域中使用率下降的原因。最受欢迎的CM工具都着眼于开发运维,因此也会随着开发运维一起呈下降趋势:与所有CM工具一样,CM主题的使用率在2019年大幅下降(下降了18%)。Ansible受的影响最小(使用量下讲了4%),但Jenkins、Puppet、Chef和Salt的使用量分别下降了25%以上。在2018年下降了20%之后,开发运维使用率在2019年再次下降(下降了5%)并非偶然。
图6 O’Reilly在线学习平台上基础设施和运营的使用情况:2019年使用率最高的主题(左),每种主题的变化情况(右)
基础设施和运营的出现表明组织在扩大开发运维方面遇到了困难。开发运维旨在培养能够胜任系统“栈”各层工作的程序员。但实际上,开发人员往往在开发运维方面的投入较少,网站可靠性管理(Site Reliability Engineering,简称SRE)的思想也因此而诞生。即便“全栈”开发人员算不上稀有,但也绝对不常见。各个组织将基础设施和运营视为实用、以操作为重点的辅助技术,一旦开发运维失利就可以全权接管。
深入了解数据、AI和ML主题
与数据相关的主题的分析结果既在意料之中,又有点令人费解。以数据工程为首,所有核心的数据工作(包括涉及数据管理的标题,比如关系数据库、Spark、Hadoop、SQL、NoSQL等)。总体而言,2019年数据工程使用量下降了8%。而2018年下降了3%。这两年都是由于数据管理的使用下降所致。
如果我们更加具体地关注数据工程主题(不包括数据管理),则可以看到一部分幅度很小的使用率稳步增长,2018年增长了7%,2019年增长了15%(见图7)。
在广义的“数据”主题中,数据工程(包括数据管理)仍是该主题中份额最大的主题,占据了O’Reilly在线学习平台上所有使用的十二分之一。这几乎是数据科学主题使用份额的两倍,数据科学主题的使用份额在2018年下降了(-2%),后又在2019年增长了(+5%)。
其他领域对于ML和AI的关注一直在增长,尽管速度有所下降。举个例子:2019年,ML/AI这两个主题的使用量增长了7%,约为2018年增长的一半(+13%)。
图7 2019年O’Reilly在线学习平台上使用率最高的数据主题(左),以及每个主题的变化情况(右)
具有讽刺意味的是,在特定于数据的主题中,ML/AI的优势可能没有在其他主题领域(例如编程语言)中那么明显,在编程语言中,Python使用的增长在很大程度上受到了机器学习的推动。但是自然语言处理(2019年增长22%)和神经网络(增长17%)等与ML/AI相关主题的使用量也呈强劲增长。
数据工程这项任务本身当然不会减少。人们对数据工程的兴趣可能也没有下降。数据工程作为一个实践领域被并入了ML/AI。根据其他研究我们知道,数据科学家、机器学习和AI工程师都需要花费大量时间来处理发现、准备和工程数据等工作。我们已看到,流行的工具和框架通常都以自动化/引导式自助功能的形式融合了数据工程,而Jupyter和其他notebook等都拥有构建和编排数据工程管道的能力,它们可以调用Python、R(通过Python)的库,同时或并行运行数据工程作业。
2019年,与老式数据工程相对应的术语(例如“关系数据库”、“ Oracle数据库解决方案”、“Hive”、“数据库管理”、“数据模型”、“ Spark”)呈逐年下降趋势。部分下降是由于更大的市场驱动因素所致。从我们的研究中可以看出,Hadoop及其相关项目(例如Hive)的生态系统正处于持续多年的长期衰退之中。这种下降在我们的使用量数据中得到了证实:Hadoop(-34%),Hive(-34%)甚至Spark(-21%)均同比大幅下降。
云技术的发展持续攀升
在O'Reilly在线学习上,与云相关的概念和术语的热度仍在不断增长,尽管增长速度有所下降。2017年-2018年间,与云相关的使用量激增了35%;2018年-2019年间,与云相关的使用量的增长率不到一半(17%)。这种放缓表明云作为一个类别已经取得了很大的份额,因此(从数学上)任何其他增长都必然放缓。就云本身而言,虽然增长速度较慢,但势头仍然强劲。
图8 2019年O’Reilly在线学习平台上使用率最高的云主题(左),以及每个主题的变化情况(右)
云服务提供商平台的热度体现了整个行业的热度:与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年有所下降之后,同比再次增长22%。Kubernetes的使用同在2017年-2018年经历了爆炸性增长(+190%)之后,今年又增长了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体制。全面的《加利福尼亚消费者隐私法案》(CCPA),即加利福尼亚的GDPR,于2020年1月1日生效。
综上所述,这类趋势的分析可以说只看到了当前安全状态悲观的一面。如果O’Reilly在线学习平台上安全使用的持续增长是一个可靠的指标,那么在全世界数字化日益加剧的情况下,安全必然会受到应有的关注。各个组织都有可能因数据泄露或骇人听闻的黑客行为,而遭受的财务和声誉损失的风险,而且总的来说,用于信息安全的资金都是合理的投入。
然而,这类的分析也有乐观的一面,具体来说,安全支出是周期性的;受各种情况的影响,安全支出会增加。而且,老实说,各个组织都会从这些备受关注的安全事件中警醒。我们只能等待时间来证明一切了。
总结
不难想象,2019年最热门的趋势很有可能会在明年的分析中以差不多相同的顺序再次重演。各个编程语言都经历了兴衰起落,但Python似乎有能力保持稳定的增长,因为它既有能力,又具有很强的适应性,而且易于使用。我们在ML和AI中的广泛使用中看到了Python的实力,而且它已取代R成为数据工程和分析的通用语言。
机器学习和人工智能也是如此。即使下一个AI冬季即将来临,也很难想象对ML和AI的热度会很快消散。关于软件体系结构的趋势,尤其是基础设施和运营的趋势,也大同小异。它们都是不断创新的领域。这些领域的从业人员都需要紧追潮流。
我们可以按照“奥弗顿之窗”理论来思考哪些技术很热门,而哪些不是。然而,奥弗顿之窗将人类认知的限制在特定时间和特定地域。策略(问题/趋势)的范围完全有可能超越界限。在某种程度上,O’Reilly在线学习上的部分活动亦是如此。即便我们的数据反映出了下降,但实际的使用量也不一定真的下降了。我们的数据只不过是为其他新兴趋势所带动。
因此,强调为什么像JavaScript这样的领头羊会出现下降趋势也非常重要。即使这些主题不再是快速和持续创新的领域,但它们在日常工作中依然非常重要,尤其是在常见的信息收集或解决专业的问题方面。毕竟,React、Angular和Vue.js是Web开发的创新,而这三个框架都是基于JavaScript的框架。我们可以尝试用不同的方式来理解JavaScript相关的话题(或数据工程、Docker、开发运维DevOps和变更管理。我们可以通过不同的方式分析这些技术。
我们希望通过数据分析捕捉到这些差异,这些差异不是显而易见的变化,而是变化本身的变化。