2021年软件技术的几大趋势(转)

  在软件开发行业,一年几乎就是一光年。我创建了一个新的预测清单,预测 2021 年软件开发行业的重要技术趋势。

  做预测是一项有风险的任务。但是我会使用来自认证来源的数据、图表和事实,根据过去来预测未来。如果你想要了解软件行业在 2021 年有哪些变化,请阅读本文。

1、容器化:Kubernets 称王,Docker 将退场

  容器化是云原生 IT 的核心技术,无论是公有云、私有云,甚至是边缘计算。几年来,Kubernetes 已经成为领先的容器编排和管理技术。就像 Linux 之前统治着数据中心一样,Kubernetes 也统治着公有云和私有云。起初,谷歌是 Kubernetes 背后的主导力量,但是现在几乎所有的巨头科技公司都支持 Kubernetes。

所有主要的公有云提供商现在都提供托管的 Kubernets 服务(Amazon EKS、Azure AKS、Google GKE)以及它们的托管容器化服务。另一方面,RedHat 正在使用 OpenShift 在私有云中提供托管的 Kubernetes 服务。

在 2021 年,我们将看到更多对 Kubernetes 的采用,因为它是混合云或多云战略的核心组件。非传统企业应用程序,如 AI/ML、数据库、数据平台、无服务器和边缘计算应用程序也将转移到 Kubernetes。

另一方面,Docker 正在慢慢失去它作为一种现代化技术的魅力。已经有一些倡议来标准化容器格式和运行时,其中两个在最近几年得到了巨大的推动。一方面是 Kubernetes 引领的容器运行时接口(Container Runtime Interface,CRI)。另一方面是 Linux 基金会引领的开放容器倡议(Open Container Initiative,OCI)。

由于 Kubernetes 是容器生态系统中的巨头,2021 年将会是 Docker 终结的开始。从好的方面看,CRI 和 OCI 在 2021 年会获得更大的发展势头,尤其是基于 CRI 的容器将在 2021 年获得巨大的爆发式增长。

2、区块链:过山车仍将继续

区块链 (分布式账本) 也是近年来开发的主要颠覆性技术之一。就技术而言,它有改变整个行业的潜力。虽然加密货币在普及这项技术方面发挥了重要作用。它在推动这项技术走向 Gartner 的炒作周期曲线(Gartner’s Hype Cycle curve)的“期望膨胀期”方面也扮演了主要角色。

其它开源区块链,如以太坊(Ethereum),正在将代码放入区块中,使它能够用于智能合约,这是区块链的未来。

在 2021 年,区块链将更多地作为一种智能合约机制使用,有望进入“启蒙斜坡(Slope of Englishtenment)”阶段。区块链将在 2021 年获得重大爆发,中国已经将它纳入其雄心勃勃的 50 万亿“新基建”计划。

3、人工智能:AI 将惠及所有人

作为近来最热门的技术之一,人工智能在 2020 年也取得了许多突破。另一个有意思的趋势是,人工智能开始以“全民 AI(AI for all)”的口号进入所有领域。

在自然语言处理领域,GPT-3 是 2020 年 5 月取得的最大的突破。美国公司 OpenAI 创建了 GPT-3,使得使用深度学习创建类似人类的文本成为可能。

另一个有趣的发展是 AutoML 2.0,它支持工程自动化。在 2021 年,全周期人工智能自动化将取得重大进展,人工智能将更加平民化。

人工智能并不是没有偏见的,有道德的人工智能正变得越来越有吸引力。人工智能领域的另一个主要趋势是可解释的人工智能,即人工智能为什么做出某种决定需要一个解释。在 2021 年,随着欧盟对解释人工智能的决定制定法规,这些领域将取得重大进展。

人工智能在 2021 年及以后也将在航空业得到广泛应用。

4、深度学习库:TensorFlow 2.0 和 PyTorch

谷歌和 Facebook 是深度学习和神经网络领域的两大主导者。谷歌的主要业务是搜索能力,它是自然语言处理领域的领先创新者。Facebook 的主要业务是社交网络,它必须处理图像、视频和文本。在图像处理领域,Facebook 是技术领导者,有许多创新。

出自谷歌的 TensorFlow 是深度学习领域的领先的库,但是 2016 年 Facebook 发布了 PyTorch 后一切都发生了变化。PyTorch 使用动态图而不是(TensorFlow 使用的)静态图,并且对 Python 更加友好。作为回应,谷歌在 2019 年创建了 TensorFlow 2.0,复制了 PyTorch 的很多功能(动态图、对 Python 友好)。它还与谷歌的 Collab 完美结合(Collab 是一款非常现代且功能强大的笔记本)。从那时起,谷歌的 TensorFlow 2.0 就越来越受欢迎。目前,根据 Stack Overflow 开发者调研 2020,TensorFlow 是最流行的深度学习框架:

 

图片来源:Stack Overflow Developer Survey, 2020

另一方面,开发人员喜欢用 PyTorch 工作,它以更好的开发人员工效学而更受开发人员的喜爱:

 

图片来源:Stack Overflow Developer Survey, 2020

在 2021 年,TensorFlow 2.0 和 PyTorch 将成为企业和社区的“首选”库。拥有 TensorFlow 代码库或者想要使用 Collab 笔记本的企业应该使用 TensorFlow 2.0。刚进入深度学习或者想要继续使用 Juypter 笔记本的企业或个人应该选择 PyTorch。

5、数据密集型计算:Spark 将继续领先

就在几年前,Hadoop 还是数据密集型计算或分布式批处理任务的默认选择。Apache Spark 目前是供应商中立的分布式批处理任务平台的首选,在大多数情况下几乎取代了 Hadoop。

这一趋势将在 2021 年继续,Spark 将被用作数据密集型计算的首选平台。Spark 是一个基于 JVM 的系统,需要非常大的资源,你将得到一份巨大的云账单。但不幸的是,目前还没有一个资源节约型的框架能匹配 Spark 的能力和成熟度。

所有主流的云提供商都有它们自己的云原生解决方案来进行数据密集型计算。我的个人建议是在 2021 年使用 Spark 而不是特定的云解决方案,以避免供应商锁定。

6、实时流处理:Flink 将是明显的选择

近年来,随着企业抛弃传统的 Lambda 架构,转而使用实时流处理框架,实时流处理正变得越来越流行。

此外,这里存在两种类型的框架。一种是以 Spark Streaming 为核心的基于微批量的平台。另一种是以 Apache Flink 为核心的低延迟流处理平台。

Apache Flink 在需要实时流处理(欺诈检测、异常检测、基于规则的警报、实时数据即时分析)的场景中超越了 Spark 流处理。

所有超大规模云提供商也提供了它们自己的解决方案。我建议在 2021 年选择 Flink,而不是 Spark 或者专有云解决方案,因为它在实时流处理方面具有无与伦比的能力。

7、数据平台:其他人将追随 Snowflake

现代数据架构相当复杂。它包含数据源、ETL 管道、数据仓库、数据湖、数据分析工具以及许多其它组件。下面是企业数据平台(ABM AMRO 的数据平台)的一个示例:

 

 

 

Snowflake 通过提供一个集中的数据源、单平台,以及在它上面构建许多不同的工作负载,从而彻底改变了现代数据架构。在经典架构中,数据需要在不同的平台上转移,但在 Snowflake 中只有一个数据的“信源”。

这不是适用于所有情况的完美案例。但是对于大部分情况,这将普及并赋能数据平台和数据仓库。

在 2021 年,我预期更多的创新将为企业案例带来像 Snowflake 一样的单数据平台。这对于许多公司将是一个巨大的帮助并改变游戏规则。

8、编程(主流):Python 和 JavaScript 将引领潮流

近些年,编程语言领域也经历了重大变化。传统的偏重的编程语言的市场份额正逐渐被更简单且对开发人员更友好的编程语言所占据。在 2020 年 1 月,我对需求中的语言进行了广泛的分析,将 Python 和 JavaScript 分别放在第一位和第二位。

随着软件开发行业的蓬勃发展,以及大量新开发人员加入这个行业,更简单、对开发人员更友好的编程语言将在 2021 年更受欢迎。

Python 是数据科学中排名第一的编程语言,在除了底层编程之外的几乎所有其它领域也都是排名第二或第三的编程语言。

JavaScript 是 Web 开发领域毫无争议的头号语言,在其它领域(包括后端开发)中也越来越流行。它也是初学者的绝佳语言。

Java 正慢慢丧失其作为最流行的编程语言的受欢迎程度。然而,由于其传奇般的向后兼容性和不断更新(6 个月的发布周期,polyglot Virtual Machine GraalVM),它仍然是企业软件开发的首选编程语言。

9、编程(现代):Rust 终将到来

最近几年,编程领域的另一个有趣的趋势是现代编程语言的兴起。比较老的语言存在过去的包袱,不能快速变迁(Java),或者通过增加越来越多的功能而变得臃肿且令人望而却步(C++)。

现代的比较新的编程语言没有过去的包袱,能够满足当今开发者的需求。它们大多非常关注开发人员的工效学,支持现代功能,例如类型推理、null 安全性、表达力强、简洁。其中许多还被设计来利用现代硬件和现代基础设施(云、多核、GPU、TPU)。

以 Rust、 Go、 Kotlin、 Swift、 TypeScript 为首的现代编程语言正日益流行。这一趋势将在 2021 年继续,因为它们是增长最快的语言之一。

其中,随着行业的注意,Rust 将在 2021 年取得突破。在过去 5 年中,根据 Stack Overflow 开发者调研,它是最受喜爱的编程语言:

 

 

图片来源:Stack Overflow Developer Survey, 2020

谷歌的 Go 已经是主流且成熟的编程语言。随着 Go 2 release 规划的大量改进,它将在未来获得更多人气。

JetBrain 的 Kotlin 已经成为 JVM 生态系统中第二流行的类型化编程语言。在 Android 应用开发中,它已经超过了 Java

苹果公司的 Swift 已经取代 Objective-C,成为 macOS 和 iOS 的首选编程语言。它在其它领域也有被采用。

在科技巨头的支持下,预计包括 Rust 在内的现代编程语言将在 2021 年获得更多吸引力和普及使用。

10、客户端 Web 框架:React 将继续统治

大多数面向用户的企业应用程序是 Web 应用或移动应用。在 Web 开发中,基于 JavaScript/TypeScript 的客户端 Web 框架已经占据主导地位很多年了。趋势是使用 JavaScript 框架进行 UI 开发,使用服务端框架进行后端开发,其中前后端是分离的服务。

Facebook 的 React 在客户端 Web 框架中处于领先地位。它是行业中引领潮流且应用最广泛的框架。

最流行的 Web 框架并不是 React,而是另一个基于 JavaScript 的 Web 框架——Vue.js:

 

 

Vue.js 在中国也是头号框架,因为 Vue.js 的创造者(尤雨溪,Evan You)是一名华人前谷歌开发者。不幸的是,这种与中国的联系引起了大企业的安全担忧,Vue.js 在美国 / 欧洲的采用率比较低。

谷歌的 Angular 落后于 React 和 Vue.js,但仍然是一个稳定的框架。然而,最近最具革命性的 Web 框架是 Svelte。与其它框架不一样,Svelte 是一个非运行时框架,专注于编译步骤。

在 2021 年,所有主流的基于 JavaScript 的框架都将彼此学习,吸收其它框架的特性。在 2021 年,它们将更加趋同。

11、跨平台应用开发:React Native 将占据主导地位,但 Flutter 将迎头赶上

跨平台应用开发正变得越来越流行,因为它的开发成本比较低。市场上有许多跨平台应用开发平台,但 Flutter 和 React Native 是其中的领导者。

Facebook 的 React Native 是基于最流行的基于 JavaScript 的 Web 开发框架——React。它的口号是“一次学习,随处编写。”Facebook 正积极开发 React Native,用 27 亿 Facebook 用户测试其功能。如果一家企业已经用了 React 来进行 Web 开发和 React Native 来进行 App 开发,它们可以在 Web 和移动开发中共享组件和代码库。另外,React Native 是基于 JavaScript 的,而 JavaScript 是最流行的编程语言之一。目前,React Native 比 Flutter 流行得多,如下所示:

 

 

图片来源:Stack Overflow Developer Survey, 2020

谷歌的 Flutter 是一个相对比较新的框架,但近年来非常流行。它提供了一个功能强大的 UI 工具箱,用来从单一代码库构建漂亮的原生编译的移动、桌面和 Web 应用程序。然而,Flutter 还不像 React 那样是 Web 开发中的主流框架。Flutter 使用了一种现代编程语言——Dart,一种快速发展的效率非常高的编程语言。就性能而言,Flutter 比 React 有优势。它还提供了更好的开发者工效学,而且开发人员喜欢使用 Flutter 工作:

 

 

图片来源:Stack Overflow Developer Survey, 2020

与 Facebook 全力支持 React Native 不同,谷歌在 Web 和 App 开发方面有很多框架(例如,用于 Web 开发的 Angular),没有把所有精力都放在 Flutter 和 Dart 上。

综上所述,我预测 React Native 将在 2021 年继续领先 Flutter,因为 Facebook 正计划对 React 生态系统(React Native 的致命弱点)进行重大性能提升。

12、API: REST 面向业务应用

微服务架构和无服务器近些年正变得越来越流行。微服务或纳米服务需要通信,通常,同步通信用得比事件驱动的异步通信多。即使传统的单体应用是通过异步通信进行通信的。

REST 是 2020 年最主要的 API 技术。REST 是一种基于 Web 技术的通信标准。它在行业中已经有相当一段时间了(20 年)。无论是大型企业还是小型初创公司,都在使用 REST。在 2021 年,REST 仍将占据主导地位。

posted @ 2021-02-01 09:32  荣溪  阅读(1062)  评论(0)    收藏  举报