当前位置: 首页 > 科技观察

222022年软件开发趋势预测

时间:2023-03-12 16:27:31 科技观察

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