【软件架构】2022 年软件行业的主要趋势

简介: 【软件架构】2022 年软件行业的主要趋势

关键要点

 

  • 混合工作将继续存在。要问的关键问题包括:什么是正确的平衡?我们需要多少时间亲自在一起?入职如何受到影响?另外,就时区而言,我们需要同步多少时间?
  • 康威定律可能有 COVID 推论;能够有效开发松散耦合系统(通常具有微服务架构)的公司最好设置为远程工作并使用分布式方法。使微服务工作的是独立且高度一致的团队和人员。
  • 2021 年,数据工程和 AI/ML 领域出现了三个有趣的发展数据管理——摄取和清理数据;基础设施——基于云技术的数据工程平台和服务的兴起;和运维——“DataOps”的出现和DevOps对数据的补充
  • 如今,工程师们可以创造出令人惊叹的东西。他们可以使用代码生成器和基于 ML 的编码助手、高度可扩展的云计算和全球影响力。然而,“权力越大,责任越大”。我们所有人都必须考虑道德、多样性和包容性以及可持续性等问题,这一点至关重要。
  • 今天任何规模合理的组织都是多云的。我们预计该主题将在 2022 年成为持续关注的领域。该领域的重要主题包括:提供良好的开发人员体验(例如提供“铺平道路”平台),在 SDLC 早期考虑安全和治理,以及清楚采用多种云技术时的目标

随着 2021 年即将结束,InfoQ 播客的联合主持人开会讨论了我们在过去一年中观察到的主要软件行业趋势,以及他们将在 2022 年继续关注的内容。播客集可供收听,以及讨论的完整记录。

Daniel Bryant 主持了讨论,Wesley Reisz、Shane Hastie、Charles Humble、Srini Penchikala 和 Thomas Betts 也加入了讨论。

混合和远程工作

团队工作方式最显着的变化是 2020 年强制转向远程工作已经演变为“混合”工作,这很可能成为未来的标准。InfoQ 文化与方法的主编兼 InfoQ 文化播客的主持人 Shane Hastie 说:“我们永远不会回到每周 5 天、每天 3 小时的通勤时间等等。软件空间不需要为了提高工作效率而每天都呆在办公室里。”

然而,这确实带来了一系列新的挑战。混合工作模式的团队大部分在家里,偶尔在办公室,这需要找到适当的平衡,让团队能够亲自在一起。一些组织正在采用更多的异步模式,并尽量减少或几乎消除同步会议,例如 Zoom 通话。Hastie 说,这些新的工作方式需要文化、哲学和思维方式的转变才能取得成功。他认为最大的长期影响将是查看哪些实验是成功的,以及从失败中学习和适应。


当我们处于“伟大的辞职”之中时,很明显人们越来越重视他们的个人和家庭福祉。这与开发人员和员工的经验有关,组织必须更加努力地证明为什么他们是一个工作的好地方。

在多样性、包容性和公平领域,过去一年的变化喜忧参半。在某些方面,出现了倒退,最明显的是女性比男性承担了更多与大流行相关的负担。但是,现在雇用远程员工的公司的多样性和包容性有所改善,而不是住在办公室附近或可以搬迁的有限人口。

混合环境可能会产生新的贫富分化,公司需要有意识地努力对所有员工一视同仁,无论他们是在办公室还是在远程。Wesley Reisz 指的是 QCon Plus 的一个重点关注返回办公室的案例,包括 Netflix 采取慎重措施的示例,以便领导者可以更好地与远程员工建立联系。

Thomas Betts 提出了 The Spectrum of Synchronous,这是 James Stanier 在该曲目中演讲的主题。极端是办公室里的每个人,完全同步通信,对每个人都是远程的,所有通信都是异步的。混合环境处于中间位置,具有良好的平衡性。异步对于文档来说很好,但是你会失去人性,所以仍然需要一些面对面的时间来建立一个健康的环境。


远程和混合工作的另一个方面是建立连接和建立网络。这对年轻的新员工来说尤其具有挑战性,他们可能会远程开始第一份工作。公司和高级员工需要有意识地帮助初级员工建立这些联系。

架构趋势

微服务仍然是一种主要的架构模式,2021 年,Thomas Betts 提出了康威定律的 COVID 推论即公司开发分布式系统的能力与其维持完全远程劳动力的能力直接相关。相反,如果您的流程依赖于很多人在同一个房间内进行同步通信,那么您可能会在向远程工作的过渡方面遇到困难,并且可能无法使用微服务。此外,远程团队之间的有效异步通信可以成为开发异步软件能力的信号。

至于工具和标准,2021 年 AsyncAPI 已经成熟很多,许多新工具和语言都支持该规范。它比它所基于的 OpenAPI 规范晚了几年,并且增长和采用也在以类似的方式增加。这将导致更多地使用合约来定义异步通信边界,并使用代码生成来帮助开发人员与事件驱动架构集成。


数据网格也开始成为一种新趋势。这个想法将领域驱动设计的概念应用于数据,数据产品只是开发团队的一项职责。2021 年,我们看到很多人谈论数据网格,Betts 期待看到 2022 年公司是否会开始实施它并分享他们的成功故事,以及他们必须克服的现实世界挑战。

人工智能和机器学习

Srini Penchikala 确定了他在 2021 年关注的四类 AI 和 ML 趋势。首先是数据管理。“数据管理包括数据摄取、数据存储、数据处理、使用 GraphQL 或其他基于 API 的数据访问解决方案的数据集成,然后是数据处理和分析。”流媒体是主要趋势,数据生成非常频繁,例如来自物联网设备或自动驾驶汽车。

Penchikala 表示,在接下来的两个类别中,基础设施和运营,通常在创新方面落后的数据空间现在正在赶上我们在开发和架构方面看到的趋势。对于基础设施,公司正在利用容器来运行 Spark 作业,使用 Kubernetes 根据机器学习解决方案的需求进行扩展和缩减,并且正在实施基于 GPU 的解决方案


Data Ops 是一种基于 DevOps 的方法来操作数据系统,然后导致 ML Ops。典型的机器学习生命周期需要模型、训练数据和测试数据,然后需要迭代以找出哪个模型可以很好地工作并部署到生产中。手动执行此操作无法满足业务用户的需求,ML Ops 尝试通过版本控制和动态应用模型来自动化该过程

道德、能源和环境

Penchikala 的最后一个数据类别是道德规范,该行业正在尝试使用 AI、ML 和数据工程解决方案,同时考虑到责任和公平。但数据只是软件伦理的一个方面,而且该主题最近才作为计算机科学课程的一部分被教授。Humble 说:“我们构建的系统可以对人们的生活产生深远的影响,而我们谈论的不够多,也没有足够的推理,这真的很可怕。”

虽然我们看到计算机学位的伦理学被教授,但它与工程的程度不同,在工程中,经过认证的专业工程师正在签署一项安全的设计。正如 Reisz 指出的那样,教授软件道德的一个挑战是“我们今天编写的软件类型没有道德。”当软件使用 ML 模型来确定哪些人获得资源时,这是一个比电车场景更复杂的问题。

软件对环境的影响也是一个日益受到关注的问题,并且直到最近才被讨论。软件使用全球 10% 的电力,对环境的影响比航空业更大。有一些具体的例子,例如加密货币挖掘,但所有 AI 和 ML 都会对人和环境产生重大影响。

Humble 认为我们倾向于关注单个开发人员可以做什么,但这实际上是大型云提供商的问题。如果你将你的代码转移到云上,然后要求你的云提供商使用的所有能源都是绿色的,那将是一个非常好的开始,并且比其他任何东西都更划算。需求塑造的想法,即您的代码以最环保的方式运行是 InfoQ 与 Asim Hussain 合作的播客的主题。

Reisz 甚至说“可持续性和道德可能是我们作为软件开发人员面临的最大问题”。他提到了离开谷歌创办 Camus Energy 并在 QCon Plus 上发表演讲的 Astrid Atkinson。Reisz 认为这只是人们运用他们的软件技能来关注能源和环境问题的一个例子。

存储有关人员的数据

道德问题的一个子集是有关人员的数据,以及如何存储、使用和提供这些数据。过去几年出现了 GDPRCCPA 和其他类似的举措,这迫使人们思考这些问题。过去,法规通常侧重于强制公司实施可能已经过时的解决方案。相比之下,GDPR 提出的问题还没有明确的解决方案,这导致了对解决方案的更公开讨论。这仍然是一个持续的问题,有许多新问题需要回答。我们如何保护个人隐私?谁应该拥有数据?数据应该放在哪里?

GitHub Copilot 和编码辅助工具

GitHub Copilot 和其他基于 AI 的编码辅助工具的引入增加了在极端情况下不再需要开发人员的可能性。Reisz 认为我们不会很快看到真正的通用人工智能,但我们会看到 AI 能够增强人类所做的事情。他用汽车中的巡航控制作为类比。从保持设定速度开始,发展到车道保持辅助,并最终实现完全自动驾驶。Copilot 帮助编写样板代码,开发人员几十年来一直在抱怨编写这些代码。这使开发人员可以更多地关注其特定的业务需求。

根据 Charles Humble 的说法,这些工具处理了简单的部分,但是,“软件的难点在于弄清楚你正在尝试构建什么,而这些工具都没有真正的帮助。”低代码解决方案也是如此,它可以让业务用户快速解决小问题。但是,当您需要以可重复的方式构建并且可以扩展和增长的软件时,这些解决方案就会失败。在 2018 年旧金山 QCon 的主题演讲中,Grady Booch 描述了软件是在越来越高的抽象层次上工作的艺术。Reisz 认为这是更高层次的抽象。

云计算

云计算是一个价值 900 亿美元 (USD) 的行业,并且不会变得越来越小。多云和混合云已成为现实,最常见的原因是并购。由于这一现实,我们现在看到了满足混合云需求的技术解决方案,例如 GCP Anthos 和 AWS Outposts。Bryant 认为,随着公司处理跨越云提供商的治理、安全和其他交互,控制平面将会很有趣。

采用云原生模式将继续至关重要,因为它允许更多与云无关的设计,可以以不同的方式部署。其中一个子集是云原生数据实践,它在架构中有一个集成层来处理常见的策略,例如用户授权。这有助于缓解“数据引力”问题,即系统中的所有内容都基于数据的存储位置构建。

正在创建一些工具来帮助为云平台铺平道路。两个被调用的是 Open Policy Agent,Reisz 与项目的共同创建者讨论了它,以及 Crossplane,它允许您按照开放应用程序模型构建自己的 PaaS。

 

软件供应链、区块链和 NFT

回顾 2021 年一些备受瞩目的网络攻击,引发了关于软件供应链以及我们如何处理依赖关系的讨论。几乎所有软件都具有依赖关系,无论是库还是云服务,这导致人们担心您对正在运行的完整代码堆栈的理解程度。有一些工具正在创建,但目前,我们没有办法说,“我可以验证这个软件是我认为的那样。”可悲的是,这种复杂性可能会导致更多的供应链攻击,无论是通过软件编译时的注入还是通过分发更新。

Reisz 期待在 2022 年看到区块链和不可替代代币 (NFT) 的一些可行用途。最初,我们将在游戏和虚拟世界中看到它们,您可以在其中购买真正独特或数量有限的东西,它会一直陪伴着你。这将导致其他类型的软件可以与您一起在不同的游戏中旅行。区块链还可用于隐私用例,例如个人、私人医疗记录。

虽然目前尚未使用,但区块链也可用于软件认证,以验证供应链中某个部分的真实性。Docker、VMware 和其他公司正在提供经批准的组件和容器的目录,为公司提供额外的信任层,并验证他们正在使用什么。

期待2022

布莱恩特问每个参与者他们期待在新的一年看到什么。

Penchikala 指出,所有趋势、技术和实践都是相互关联的。他期待看到数据工程、人工智能和机器学习解决方案如何变得更合乎道德和更公平。机器学习和人工智能可能不会取代我们,但要让它们真正让我们的工作更好,我们需要花时间确保它们合乎道德和公平。这可以通过标准化我们验证这些解决方案的道德性质的方式来实现,包括定义所有相关方的公平性。

Humble 对改进我们阅读和理解代码的方式非常感兴趣。在过去的 30 年中,我们的行业一直专注于让编写代码变得更容易。但是,作为一名程序员,您可能将大部分时间花在阅读代码上,无论是您还是其他人编写的代码,并试图理解它的作用。他一直在研究 Ballerina 语言,该语言具有内置的序列图来表示并发模型。更改图表将更改代码,从而更好地理解并发模型的工作原理。他最近与詹姆斯克拉克谈过这件事。


Hastie 正在寻找并看到更加人性化、善待他人的工作场所。“我希望这纯粹是因为组织只关心人,但我的愤世嫉俗者说他们必须这样做,因为他们正在失去好人。如果你想吸引好人,你需要给他们一个很好的工作的环境。”

Reisz 观察到在越来越高的抽象层次上工作的共同主题。这使我们在软件可以做的事情上拥有更多的能力和范围。

Betts 真的希望看到一个公司实施数据网格的好例子,而不仅仅是高级架构设计。他认为将会有一些非常有趣的发展,以及人们讲述他们如何处理数据、这一切如何运作以及为什么它是对过去的改进的精彩故事。他还想看看是否有可能证明他对康威定律的 COVID 推论,即混合和远程优先的公司更擅长编写分布式软件

每个人都对道德和可持续性有话要说,并将其视为未来几年其他一切的主要驱动力。Humble 计划尽其所能,继续提出作为我们行业的一个问题。每个人都希望我们能在新的一年里看到那里的进步。

相关文章
|
1月前
|
运维 负载均衡 Shell
控制员工上网软件:高可用架构的构建方法
本文介绍了构建控制员工上网软件的高可用架构的方法,包括负载均衡、数据备份与恢复、故障检测与自动切换等关键机制,以确保企业网络管理系统的稳定运行。通过具体代码示例,展示了如何实现这些机制。
120 63
|
26天前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
98 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
4月前
|
人工智能 运维 虚拟化
完善多云平台软件体系,VMware再探索下一代企业IT架构
完善多云平台软件体系,VMware再探索下一代企业IT架构
|
1月前
|
Kubernetes 前端开发 分布式数据库
工作中常见的软件系统部署架构
在实际应用中,会根据项目的具体需求、规模、性能要求等因素选择合适的部署架构,或者综合使用多种架构模式来构建稳定、高效、可扩展的系统。
185 2
|
4月前
|
边缘计算 物联网 5G
软件定义网络(SDN)的未来趋势:重塑网络架构,引领技术创新
【8月更文挑战第20天】软件定义网络(SDN)作为新兴的网络技术,正在逐步重塑网络架构,引领技术创新。随着5G、人工智能、边缘计算等技术的不断发展,SDN将展现出更加广阔的应用前景和市场潜力。未来,SDN有望成为主流网络技术,并在各行各业推动数字化转型。让我们共同期待SDN技术带来的更加智能、安全和高效的网络体验。
|
4月前
|
消息中间件 Kafka Java
Spring 框架与 Kafka 联姻,竟引发软件世界的革命风暴!事件驱动架构震撼登场!
【8月更文挑战第31天】《Spring 框架与 Kafka 集成:实现事件驱动架构》介绍如何利用 Spring 框架的强大功能与 Kafka 分布式流平台结合,构建灵活且可扩展的事件驱动系统。通过添加 Spring Kafka 依赖并配置 Kafka 连接信息,可以轻松实现消息的生产和消费。文中详细展示了如何设置 `KafkaTemplate`、`ProducerFactory` 和 `ConsumerFactory`,并通过示例代码说明了生产者发送消息及消费者接收消息的具体实现。这一组合为构建高效可靠的分布式应用程序提供了有力支持。
118 0
|
4月前
|
监控 持续交付 数据库
持续交付的软件系统架构
持续交付的软件系统架构
41 1
|
5月前
|
供应链 监控
软件架构一致性问题之软件供应链管理中降低维护成本如何解决
软件架构一致性问题之软件供应链管理中降低维护成本如何解决
55 4
|
4月前
|
测试技术
软件设计与架构复杂度问题之区分软件维护、演进和保护(苟且)如何解决
软件设计与架构复杂度问题之区分软件维护、演进和保护(苟且)如何解决
|
4月前
|
微服务
软件设计与架构复杂度问题之理解软件复杂性的递增性如何解决
软件设计与架构复杂度问题之理解软件复杂性的递增性如何解决
下一篇
DataWorks