在经历了灾难性的、受大流行影响的2020年之后,2021年是人类的复原力和反击年。由于技术的进步,各国能够为人们大规模地接种疫苗。对于软件开发和IT行业来说,2021年是一个重要的年份,正如预期。
2022年,冠状病毒变异和高科技促成的疫苗研究之间将出现一场进化的军备竞赛。对于软件开发行业来说,目前的数字化趋势将继续下去,出现许多变化、创新和现有技术的新用途。
预测未来是一项具有挑战性的任务。像过去两年一样,我在这里预测2022年软件发展的最重要趋势。
1. 集中式基础设施:云是新的规范
就像西方世界的几个巨型大超市取代当地商店一样,公共云将继续取代区域性的数据中心。在未来几年里,公共云也将成为企业、政府和初创企业的首选基础设施。公共云现在是数字创新的温床,这一趋势将在2022年继续。公共云在安全、区块链的民主化方面也发挥着重要作用,并将许多创新以一种可获得的方式带给客户。
Gartner预测,2022年公共云的收入将增长16%。
所以,如果你是数字公司的决策者,现在是时候认真对待云计算了。如果你是一名工程师,请通过创建一个免费账户或参加MOOC课程开始学习云计算。
2. 分散的基础设施:边缘的云
与公共云不同的是,我们希望将存储、计算能力和AI/ML放在一个中心位置(可用区、区域),边缘计算将存储、计算能力和AI/ML带到客户附近。低延迟场景(游戏)、网络带宽差(离岸站点)、没有网络、监管要求、实时用例(联网车辆)、智能和强大的设备(物联网)是需要边缘计算的场景。
随着5G、Web 3.0和其他技术创新的兴起,边缘计算将在2022年及以后继续看到广泛的应用。同时,零售商将在未来几年大规模采用边缘计算。
像AWS、Azure和GCP这样的公共云供应商也在通过提供许多边缘计算服务而处于领先地位。
一项新的倡议,即"State of the Edge,"是为了实现边缘计算的标准化。
3. 公共云:多云将获得更多的动力
采用公共云的一个主要问题是供应商锁定。一旦你把你的基础设施、存储和计算转移到公共云供应商,你就被供应商锁定了。许多企业试图明智地使用多个供应商以避免供应商锁定。不幸的是,这只是用多个供应商而不是一个供应商锁定了企业。如果你不能在另一个公有云中使用一个公有云(如CosmosDB、AWS S3、BigTable),总会有供应商锁定的情况。
幸运的是,现在有一种反向趋势,即提供与广泛的公共云服务的API兼容的服务。MinIO(与S3兼容)、Aviatrix(云原生网络)、Volterra(分布式云服务)、LightOS(云原生存储)是众多致力于提供云中立性的服务之一。
此外,谷歌正在努力将其流行的服务(BigQuery)引入其他公共云(AWS、Azure)。
4. 容器:Kubernetes将进入后台,而Docker将反弹
容器化是现代IT行业的关键技术。Kubernetes在容器化的普及和民主化方面发挥了巨大作用。由于巨大的努力、精心的设计和实施,Kubernetes现在是一项坚如磐石的技术。它所扮演的角色与Linux在服务器世界中扮演的角色相同。由于其高瞻远瞩的设计(Operator、Volumn),Kubernetes可以用于许多用例,而不会引入破坏性的变化。
随着Kubernetes的成熟,在未来几年内,Kubernetes的牵引力将减少。不要误会我的意思,Kubernetes将是现代软件开发的引擎。但我们将看到更多关于Kubernetes的新采用和用例的牵引力,而Kubernetes本身由于其成熟度,将缓慢发展。
与Kubernetes一样,Docker也在容器化方面发挥了举足轻重的作用。不幸的是,该公司在全盛时期努力使Docker货币化。Docker最近宣布从2022年起采用新的订阅模式。
它的定价模式是可以承受的。考虑到它对现代云原生开发的贡献,我祝愿Docker在其新的订阅模式下取得成功。
5. 网络安全:每个人都会认真对待安全问题
网络安全对于初创企业或中型公司来说就像 "房间里的大象"。他们可以看到对网络安全的需求,但由于缺乏资源,无法正确实施。只有大型企业才能负担得起专门的安全团队。
公共云供应商最重要的优势之一是,他们已经使网络安全民主化。现在,利用公共云服务,初创企业或中等规模的公司可以不费吹灰之力实施高度安全的应用程序。
公有云安全的一个缺点是,如果它被破坏,那么数百万的公司将受到影响。2021年,公共云有一些高调的安全漏洞。
2022年,公共云和Linux将更努力地与安全工作。
另一个关于安全的问题是目前的开源开发模式。一个开发者往往在业余时间开发一个重要的核心模块/库。不幸的是,如果这个模块/库被破坏了,那么世界上几乎所有的公司都会受到影响。其中一个引人注目的问题是log4j漏洞,它将影响世界上近一半的IT公司。
现在是大公司重新思考目前的开源模式的时候了,在这种模式下,开发者维护一个核心的软件而没有任何经济利益和支持。
6. 区块链:最后,生命开始于加密货币之外
区块链经常与加密货币联系在一起。每当有关于加密货币的造假事件发生时,区块链技术就会受到批评。区块链(分布式账本)是21世纪最具颠覆性的技术之一。加密货币是其最知名的用例,但区块链远不止于加密货币。区块链可以改变我们行业的许多领域,影响我们的日常生活。
在2021年,我们看到了区块链的一个新的和高度流行的使用案例。NFT(Non-Fungible Tokens)。目前,NFT主要用于数字艺术。在2022年,我们将看到NFT将被用于其他用例。
现在人们正在认真对待区块链,2022年区块链技术将有巨大的支出。
区块链经常因其大量的能源消耗而受到批评。许多区块链公司现在正计划从能源密集型的 "工作证明 "转向节能的 "股权证明 "模式。以太坊,这个流行和广泛使用的区块链,将在2022年转向绿色的 "权益证明 "模式。
7. 机器学习:AutoML和No-Code AI将使机器学习民主化
机器学习(ML)是另一项颠覆性技术,近年来取得了巨大的成功和采用。然而,根据其需求,机器学习专家大量短缺。此外,许多公司希望以有限的方式采用机器学习,而不雇用全职的、昂贵的机器学习专家。
AutoML(自动机器学习)是在没有机器学习专家的情况下以有限的方式使机器学习使用自动化的新举措。对于大多数用例,你需要一个机器学习专家。但对于某些用例,你可以使用AutoML来增强机器学习专家的能力,或者在没有任何机器学习专家的情况下使用AutoML。在某种意义上,它类似于低代码/无代码倡议。AutoML在2021年得到了巨大的牵引力。
在2022年,我们将看到更多的AutoML的采用和创新,因为AutoML有一个广阔的市场前景。
AutoML是更大的No-Code AI趋势的一个子集。无代码人工智能也将在2022年迎来普及和采用的高潮。
8. 人工智能:狭义人工智能将迎来大规模应用
与机器学习一样,深度学习(AI)是另一项颠覆性技术,在过去十年获得了大规模的采用和快速增长。在2022年及以后,人工智能将继续看到更多的采用、资金、创新。
人工智能的圣杯之一是寻找 "通用智能",即人工智能可以和人类一样聪明(或更聪明)。我们离实现通用智能还很遥远。但人工智能将更多地被用于 "狭义人工智能",人工智能代理将在特定(狭义)领域协助/增强人类。2022年,我们将看到在许多非关键用例(如呼叫中心、IT)中更多地采用狭义人工智能,人工智能代理将使用狭义人工智能协助人类。
9. 深度学习库:Tensor Flow将继续统治
有许多人工智能库,但有两个从其他地方脱颖而出。谷歌的TensorFlow和Facebook的PyTorch。
TensorFlow在其2.0版本中对自己进行了改造,并引入了动态图、python友好性和许多其他变化。它还提供了Tensorflow.js来在浏览器中使用AI库。Tensorflow的另一个创新是Tensorflow Lite,它提供了在移动和网络上部署Tensorflow。Tensorflow还发布了Tensorflow Extended(TFX),这是一个用于部署生产ML管道的端到端平台。
PyTorch是另一个占主导地位的人工智能库,它将动态图和Python作为第一类公民引入。它对开发者也更加友好。它还发布了PyTorch Mobile,在Android/iOS设备上使用PyTorch。它通过PyTorch Profiler提供更多的开发者友好性,以调试大规模的人工智能模型。
TensorFlow仍然是最流行的人工智能库。
来源: Stack Overflow Developer Survey, 2021
在2022年,Tensorflow将继续成为主导的人工智能库,因为它具有更好的可视化和大规模采用。
10. 数据库:多模式和多用途的数据库正在兴起
在过去的几年里,我们看到了使用适合特定使用情况的特殊数据库的趋势。
- 用于具有结构化数据的事务性用例的 RDBMS
- 用于低延迟、分布式数据库的 宽列数据库
- 分布式缓存的 键值存储
- 用于极端关系型数据的 图形数据库
- 用于半结构化数据的事务性使用案例的 文件数据库
- 用于全文和高级搜索的 搜索引擎(例如,基于位置的搜索)。
- 分布式SQL,用于低延迟的分布式数据库,具有事务性保证。
- 用于数据仓库和数据分析的 OLAP数据库
这种方法的一个缺点是,我们经常需要为一个应用提供多个数据库。现在有一个新的趋势,每个数据库将提供一个以上的模型,并为一个以上的用例服务。PostgreSQL(多模型),Azure CosmosDB(多模型,多用途),SingleStore(OLAP和OLTP)是这些数据库的先驱。在2022年,我们还将看到其他提供多模型和多用途的数据库。
11. 数据密集型计算:Spark与公共云服务
Apache Spark几乎已经取代了Hadoop生态系统,成为默认的数据密集型计算框架。Spark还使用相同的API提供近乎实时的流处理。
近年来,Apache Beam获得了很大的吸引力,因为它提供了一个统一的编程模型来定义和执行一个数据处理管道。Batch和Stream。谷歌的Cloud Dataflow是一个强大的服务,实现了Apache Beam。另外,Azure和AWS也提供了Batch处理服务。
如果你想与云无关,你应该使用Spark或Cloud Dataflow(GCP)。
12. 实时流:它是Flink与公共云服务的对比
虽然近乎实时的流媒体对90%的用例来说是足够的,但有一些用例(欺诈检测、异常检测、基于规则的警报、实时数据的特别分析),你将需要实时流。
在实时流方面,Apache Flink毫无疑问是市场领导者。它还支持Apache Beam API,并提供供应商中立的解决方案来处理实时流数据。
如果你想避免被供应商锁定,你应该使用Flink而不是公共云的特定技术。而且,Flink比公共云供应商提供的类似服务更强大。
13. DevOps:现代DevOps的智能观察能力
几年前,可观察性只对大型企业至关重要。然而,随着云原生开发和微服务架构的迅速崛起,可观察性对现代软件开发至关重要。除了传统的可观察性(日志、监控、追踪),我们还需要Kubernetes集群的遥测和拓扑数据。另外,我们将看到使用人工智能与时间序列数据库来开发智能可观察性平台的趋势。在2022年及以后,智能的、云原生的可观察性将继续增长。
14. 快速应用开发:低代码/无代码(LCNC)将继续蓬勃发展
低代码/无代码(LCNC)倡议旨在降低开发网络/移动应用程序的障碍,而不需要开发人员(或低数量的开发人员)。那我们在未来几年仍然需要开发人员来构建应用程序。但也有许多用例,低代码/无代码框架/工具可以大大加快应用开发的速度。
在2022年,我们也将看到越来越多的LCNC的使用案例。
- 网络/移动应用程序开发
- 网站和登陆页面
- 使用对话流的智能聊天机器人
- 电子商务
- 机器学习
- 人工智能(视频、音频、图像)
- 工作流程管理
- 使用RPA的流程自动化
15. 软件架构:企业的微服务和微前台
我们目前有三种后端应用开发的选择。(模块化)单片机、微服务和无服务器。它们都有各自的长处和短处,在特定的用例中大放异彩,而在其他用例中则失败。微服务使应用开发成为可能,在这种情况下,多个团队在特定的应用程序上工作。此外,微服务与云原生开发完美契合,因为较高的运营成本可以通过较低的代码复杂性卸载到云端。因此,对于企业来说,微服务将是2022年的首选架构。
如果你想了解设计微服务架构的最佳实践,那么你可以阅读我的博客。
我们目前在前端应用开发方面有两种选择。Monolith和Micro-frontends。我们经常淡化前端应用的复杂性,因为大多数建筑师都是来自后端开发。但前端单片机和后端单片机一样糟糕。因此,对于企业的前端开发,微前端将是2022年的首选架构。好消息是,所有流行的JavaScript前端框架都支持微前端。
16. 软件开发:AI将协助开发人员和QA
我认为人工智能是人类的助手或帮手。人工智能可以帮助繁琐的、可预测的、重复的、困难的任务,而人类可以专注于更多发人深省的、智能的任务。在软件开发中,我们也必须做许多枯燥、可预测和重复的任务。人工智能可以使用GPT-3和其他NLP库将这些任务自动化。人工智能已经被用来实现测试的自动化。
一些人工智能驱动的助手也可以为开发者自动生成源代码。Tabnine, GitHub Copilot, Codota.虽然它们在协助软件开发方面处于早期阶段,还不是很成熟,但我预计这些人工智能驱动的代码助手将在2022年成熟起来,这样我们就可以更快地开发和交付。
17. 编程(主流):Python将引领潮流
近年来,我们经历了Python作为一种通用编程语言的迅速崛起。在流行的编程语言排名网站TIOBE上,最终,Python占据了领先地位,成为目前第一大编程语言。
来源: TIOBE
作为一个业余项目开发的编程语言,降低了进入编程的门槛,这对Guido van Rossum和Python的其他语言设计者来说是一个了不起的声明。Python是简练的、解释性的、动态的、简明的、简单的、强大的。但Python的USP是它的简单性和较低的入门门槛。Python是数据科学和数据工程领域的第一大编程语言。但在许多其他领域,它是第二或第三位的编程语言。
在2022年,Python将继续占主导地位,因为许多新的开发人员将加入,他们可能会从Python开始。在选择一种编程语言之前,仍然值得关注这个领域。以下是我对编程语言的建议。
- 网络开发。JavaScript,TypeScript
- 后台开发。Java, Golang, JavaScript, TypeScript
- 安卓开发。Kotlin
- iOS开发。Swift
- 系统编程。C, C++, Rust, Golang
- 数据科学/数据工程。Python
然而,如果你是一个学习新编程语言的新开发者,你可以从Python开始。
18. 编程(企业):Java反击战
在很长一段时间里,Java是无可争议的第一大编程语言。它是解释型的、适度复杂的、多线程的、垃圾收集的和强大的编程语言。此外,JVM是经过战斗考验的、强大的、成熟的,并且是业界最好的进程虚拟机之一。Java是大型、单体企业应用的完美选择。
不幸的是,随着微服务和无服务器的兴起,Java处于不利地位,因为JVM似乎太大(内存占用率高)和太慢(启动时间慢)。另外,在基于容器的现代开发中,容器的资源是有限的。因此,人们开始在云原生开发中使用灵活、小型、快速的语言,如Node.js、Golang。
最后,Java社区开始用GraalVM提供现代版的Java。这是一个JDK发行版,提供AOT编译、多语言编程。此外,它可以直接编译成Native代码,完全适合云原生开发(内存占用少,首次启动时间短)。另外,Java 17终于引入了许多现代功能(如模式匹配),使Java对开发者具有吸引力。
凭借其严格的、无可比拟的向后兼容性、GraalVM、最新的变化,Java将在2022年成为企业软件开发的第一大编程语言。
19. 客户端网络框架:企业的React和Angular
在现代网络应用程序开发中,基于JavaScript/TypeScript的框架占主导地位,而且这一趋势将在2022年继续下去。有许多基于JavaScript/TypeScript的网络框架,但有两个框架从其他框架中脱颖而出。其中一个是Facebook的React。另一个是谷歌的Angular(Angular 2+)。React是这两个框架中最流行的,没有意见的,创新的,灵活的,对SEO友好的框架。另一方面,Angular是一个有主见的、端到端的、模块化的、安全的框架,有严格的约定俗成的配置。Angular也是一个 "包含电池 "的框架,可以通过强大的CLI开发企业级的Web应用。
资料来源: NPM Trends
在2022年,React和Angular也将继续引领网络开发。虽然Vue.js是最受欢迎的框架,但由于安全问题和过于依赖一个人,它不会在行业中看到大规模的采用。
20. 服务器端框架(Java):用于微服务和无服务器应用的本地框架
Spring MVC/Spring Boot是Java中最主流的服务器端框架。如前所述,Spring使用的是传统的OpenJDK,在云原生Java开发中慢慢失去了它的魅力。Redhat的Quarkus是云原生开发的头号框架,因为它使用GraalVM而不是传统的OpenJDK。因此,由Quarkus开发的应用程序更小,启动时间更快,而且更适合基于容器的开发。
最后,Spring已经宣布了Spring Native,它将使用GraalVM进行云原生开发。
它仍然是实验性的,将在Spring 6发布时(2022年10月)发布。Spring Native的一个优点是,你可以将你的Spring MVC项目转换为Spring Native项目,而不需要重写任何/少量代码。
因此,如果你在2022年开发云原生Java应用,可以考虑使用其中一个Java原生框架。然而,对于单片式Java开发,你仍然可以使用基于传统(OpenJDK)的框架(如Spring MVC)。
21. 应用程序开发:本机应用,更灵活
2022年,手机用户的数量将继续增长,应用程序的下载量也将继续增长。2022年,预计将有1710亿个App被下载。移动应用开发是当今软件开发中的一个广阔市场。
资料来源: Statista
目前,有四种方式来开发移动应用程序。本地应用开发、跨平台应用开发、混合应用开发和基于云的应用。
本地应用开发和跨平台应用开发是其中使用最多的。虽然本地应用开发是最昂贵的(在时间/资源方面),但它提供了最大的灵活性。通常情况下,企业更喜欢本地应用开发的灵活性。
跨平台应用开发提供了在iOS/Android上使用几乎相同代码的可能性。创业公司更喜欢这种方式,因为他们喜欢跨平台应用开发的开发速度和较低的维护成本,但代价是灵活性较低。
2022年,由于跨平台应用开发不如本地应用开发灵活,本地应用开发将处于领先地位。
22. API技术:REST、gRPC和GraphQL将同时存在
现代软件开发通常是API驱动的开发。客户端应用程序(网络、移动)通过API调用与后端应用程序进行通信。同时,后端应用也通过API调用与对方进行通信。服务之间的通信是软件开发行业的一个古老范式,有许多技术可以满足这一要求。但在这些技术中,有三种技术脱颖而出。REST、gRPC和GraphQL。
REST是其中最古老的技术,开发于2000年。它使用万维网和HTTP技术进行客户-服务器通信。它是最成熟和最广泛使用的。
谷歌创建了gRPC,作为一个基于旧的RPC(远程过程调用)技术的服务器到服务器的通信API。在这里,每个请求都被结构化为一个函数调用。与使用文本格式(如JSON、XML)传递信息的REST不同,gRPC使用基于协议缓冲区的二进制格式。因此,与REST相比,gRPC在服务与服务之间的通信方面更有效率和速度。
如果数据结构复杂,网络客户端到服务器的通信就会有很多往返。为了缓解这个问题,Facebook在2015年开发了GraphQL API。在GraphQL中,每个客户端可以为特定的用例定义数据结构的形状,并在一次旅行中获取所有数据。
从上面我们可以看到,这三种API技术(REST、gRPC、GraphQL)都有其擅长的用例,而角落里的用例则不那么好。在2022年,开发者和公司也会根据他们的用例使用这三种中的一种。
原文链接:https://www.toutiao.com/a7051029314510569998/