【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

InfoQ 2022 年趋势报告:架构与设计篇

作者:Thomas Betts, Eran Stiller, Vasco Veloso 等

  • 2022-04-12
  • 本文字数:3497 字

    阅读完需:约 11 分钟

InfoQ 2022年趋势报告:架构与设计篇


每年,InfoQ 的编辑们都会讨论我们在整个软件开发领域所观察到的情况,并编制一些趋势报告,每份报告都有自己的采用曲线图。这有助于编辑团队将报告重点放在创新性技术和想法上,同时也让我们的读者对于需要关注的主题有个全局的认识。

 

该报告主要有两部分。第一部分是你正在阅读的这份书面报告,包括趋势图和过去一年中个别新增加或有变化的条目的详细介绍,以及 InfoQ 编辑们的概括性分析。

 

报告的第二部分是InfoQ播客上的一集内容。感兴趣的读者可以收听编辑们的部分对话,以及来自我们专家小组的一些轶事。

趋势图更新

2021 年,我们研究了架构师实现其设计的许多方式,考虑了主要的“非功能性需求(-ilities)”。今年,我们将“安全设计”添加到了该列表中,并在早期采用阶段就考虑。安全一直是一个考量因素,在设计一个系统及其组件时,及早并反复考虑安全问题越来越重要。

 

架构可能不是 DevSecOps 这个三元混合词的一部分,但它是这个理念的一个底层构件。网络安全和软件架构之间也有很多相似之处,这一点我们在 InfoQ 播客中与Maxime Lamothe-Brassard讨论过

 

我们考虑过添加“可扩展性设计”,但最终认为,可以从“弹性设计”和其他适应可扩展性的趋势之下捕获到这些信息。在大流行的第二年,在线服务消费继续增长,企业必须能够扩大规模才能满足需求。

 

eBPF,即扩展的伯克利包过滤器,是对 Linux 内核进行编程的一种方式。它允许开发者在运行时向操作系统添加功能。我们已经把 eBPF 作为一个创新趋势,并将在未来几年观察其采用情况。Liz Rice 在最近一期InfoQ播客中对该技术做了很好的概要介绍。

 

将”下一代 GraphQL“改为”GraphQL Federation“,因为它是各公司在其现有 GraphQL 实现之上所做的最重要的工作。

 

“数据网关”被删除,取而代之以“数据+架构”。另外,“架构师电梯”被替换为“架构决策记录”。下文会详细讨论这些变化。

 

Dapr 和 WebAssembly 都从创新变为早期采用。

 

有几个条目被删除了,因为在过去几年里没有被采用,也没有足够的创新,包括开放应用模型(OAM)和 RSocket&Reactive Streams。

数据+架构

我们看到了一个变化,从数据只在系统存储或传输层被考虑,到数据成为系统定义的一个元素。这在人工智能/ML 系统中尤其明显。这些系统是基于数据构建的,在事件源这样的设计模式中也是如此。有时,它表现为一个明确定义的概念,如数据网格,我们将把它作为一个独立的创新趋势继续关注。更多时候,架构师们只是考虑数据的方式不同而已,所以我们在今年的趋势图上增加了“数据+架构”。

 

InfoQ播客的采访中,Neal Ford 和 Mark Richards 谈到了在他们的新书 Software Architecture: the Hard Parts 中加入数据相关章节的必要性。Neal 说:


我们想确保我们提供了更全面的信息,因为我们坚信,数据加架构将是未来几年备受关注的主题之一。这也是我们现在在做的很多专业工作的主题——处理好这种关系,并使之成为一种顺利的工作关系,需要 DBA 和架构师之间的合作,还要使这些实践成为我们在架构和设计中习以为常的实践。


数据+架构包含了一些搜索引擎友好的术语,比如在趋势图上被它取代的数据网关。它还包括数据质量等概念,以及试图解决“我们如何确保我们使用的数据是正确的?我们如何知道它是否符合我们的预期?”这个问题的工具。这个问题不处理,其后果可能是灾难性的。

 

InfoQ 编辑 Eran Stiller 供职于Badook,他在工作中会考虑数据质量问题。他对这个问题的看法如下:


现如今的公司越来越依赖人工智能和机器学习算法。他们利用这些算法改善客户体验,预测销售和库存水平,并获得对其业务的宝贵洞察力。在某些情况下,它们甚至在没有人类干预的情况下完全自动化地做出决定。这些算法依赖于数据。如果数据好,用它构建的模型就可用。但遗憾的是,我们的数据会随着时间的推移而变化,其质量也在下降。数据收集出现错误,数据管道可能在不经意间对我们的数据造成破坏,而我们之前对数据所做的假设可能随着时间的推移不再有效,可能会造成灾难性的商业后果。

 

例如,房地产公司Zillow最近减记了5亿多美元,因为它用于预测房价和驱动其商业决策的数据模型未能适应不断变化的现实。

 

此外,世界各地的监管机构,如欧盟,正在对人工智能算法的创建和使用方式进行监管。最近,美国国会也出台了类似的《算法责任法案》。这些法规的一个关键部分将是确保用于推导算法的数据是正当的。

 

因此,我预测,数据质量和可靠性将成为大多数(如果不是所有)科技公司越来越关注的话题。就像测试代码一样,我们应该测试和验证我们的数据,确保它符合我们的期望。如果不这样做,我们可能会在某天早上醒来时,将我们的商业战略置于错误的预测之上,或者更糟糕,做出灾难性的全自动财务决策,这可能使我们损失数十亿美元。我相信,没人希望陷入这样的境地。

架构师与架构

在整个行业中,对架构师角色以及软件架构与设计实践的定义莫衷一是。许多公司都没有软件架构师的职位,而那些有这个职位的公司,其职责也有很大的差异。尽管如此,软件总是要设计,并且总是有一个架构。我们所面临的挑战是如何识别创新性的架构方式,以及这如何体现在软件架构师的角色中。

 

这个想法很难浓缩成趋势图上一个简短的概念。去年,我们有“架构师电梯”。Gregor Hohpe 的这个想法是说架构师需要在组织的多个层面上进行沟通。在此之前,我们有“架构师作为技术领导者”。这两个概念都属于早期采用的范畴。这主要是来自一种直觉,它们不一定是创新性的,但也没有被广泛采用。

 

今年,我们将“架构决策记录(ADR)”添加到早期采用。关于 ADR,Michael Nygard 在 2011 年发表了一篇很好的文章。大多数软件团队都熟悉“盒子和箭头”架构图,这无论是对于记录系统的期望状态还是当前状态都很有用。

 

然而,了解为什么做出这些设计决策通常是有好处的,这就是 ADR 的目的。通过记录决策,以及当时考虑的其他选项和所做的权衡分析,如果将来需要更新设计,ADR 就会非常有用,或者仅仅是在设计受到质疑时作为一种提醒。

 

构建分布式系统以及由半自主团队构建微服务有一个副作用,就是架构决策也变得分散。因此,架构师需要帮助团队执行架构任务,如权衡分析、做出正确的决策、记录和沟通这些决策。Andrew Harmel-Law认为,ADR 可以成为扩展软件架构的一个重要组成部分。

 

要了解更多关于架构师角色和软件架构实践的讨论,我强烈建议你听一听相应的播客



作者简介

Thomas Betts 是 InfoQ 架构与设计版块的首席编辑,也是 InfoQ 播客的联合主持人,同时还是 Blackbaud 高级首席软件架构师。二十多年来,他一直专注于提供让客户满意的软件解决方案。他曾供职于多个行业,包括零售、金融、医疗、国防和旅游。Thomas 与他的妻子和儿子住在丹佛,他们喜欢徒步旅行以及探索美丽的科罗拉多州。


Eran Stiller 是 Badook(位于澳大利亚墨尔本)的首席软件架构师。作为一名经验丰富的软件架构师和 CTO,Eran 设计、实施和审核过多个业务领域的各种软件解决方案。凭借在软件开发领域的多年经验,以及在公开演讲和社区贡献方面的记录,微软自 2016 年起授予他微软 Azure 最有价值专家(MVP)称号,并自 2018 年起让其担任微软区域总监(MRD)。


Vasco Veloso 从事软件开发和设计已有二十多年了。从汇编到 C、C++和 Prolog,再到 Java、Scala 和 Kotlin,从大型计算机到小型计算机,从软盘到 SSD,从企业内部到云端,他都见过,做过,也用过。他带领团队齐心协力开发出精心设计的软件。他还喜欢通过教学分享知识,并继续设计软件和联网设备。在业余时间,他喜欢探索阿姆斯特丹这座城市。他喜欢摄影,并对航空业非常感兴趣。他曾驾驶过超轻型飞机,并且相信,只要保持必要的专注,他就可以继续飞行,到达目的地,并享受沿途的风景。


Daniel Bryant 在 Ambassador Labs 担任 DevRel 部门的总监,同时也是 InfoQ 的新闻经理和 QCon 伦敦大会的主席。目前,他主要致力于“DevOps”工具、云/容器平台和微服务实现。Daniel 是伦敦 Java 社区(LJC)的领导者。他为多个开源项目做贡献,为 InfoQ、O'Reilly 和 DZone 等知名技术网站撰稿,并定期在 QCon、JavaOne 和 Devoxx 等国际会议上发表演讲。


Sarah Wells 做了 20 年的开发,领导过咨询、金融服务和媒体行业的交付团队。使用基于微服务的架构构建 FT 的内容和元数据发布平台,使她对可操作性、可观察性和 DevOps 产生了浓厚的兴趣。2018 年初,她承担起了金融时报的运营和可靠性职责。最近,Wells 转而接管工程实施部门,将平台和安全工程加入其中。她在金融时报领导了多个团队,为其他工程师构建工具和服务。2021 年底,Wells 离开 FT。她决定在采取下一步行动之前休息一段时间。您可以通过 Twitter 联系她(@sarahjwells)。

 

原文链接:

Software Architecture and Design InfoQ Trends Report—April 2022

2022-04-12 09:346096

评论

发布
暂无评论
发现更多内容

软件测试 | 测试开发 | Dubbo 接口测试原理及多种方法实践总结

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 实战演示 H5 性能分析

测吧(北京)科技有限公司

软件测试 | 测试开发 | 静态扫描体系集成

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 学做测试平台开发-Vuetify 框架

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 如何安装Jenkins 插件?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 接口抓包分析与Mock实战

测吧(北京)科技有限公司

测试

Qualcomm Atheros wallys QCA9880 Dual Band 2.4GHz 5GHz 2x2 MIMO 802.11ac Mini PCIE WiFi Module//QCA9882 3x3 FCC/CE/IC

wallys-wifi6

QCA9880 QCA9882

软件测试 | 测试开发 | 测试平台开发-前端开发之Vue router路由设计

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Frida 实现 Hook 功能的强大能力

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 测试平台开发-前端开发之数据展示与分析

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 搞清楚这六个能力模型,轻松应对互联网裁员潮

测吧(北京)科技有限公司

测试

从启动到关闭 | SeaTunnel2.1.1源码解析

Apache SeaTunnel

ElasticSearch 不停服升级实践

移动云大数据

elasticsearch

软件测试 | 测试开发 | 做到这几点,你也能成为 BAT 的抢手人!

测吧(北京)科技有限公司

测试

凭借一份“面试真经pdf”,我四面字节跳动,拿下1-2级offer

Geek_0c76c3

Java 数据库 开源 架构 开发

Rust vs C++ 深度比较

俞凡

c++ rust

软件测试 | 测试开发 | 测试左移之Sonarqube maven项目分析

测吧(北京)科技有限公司

测试

9个 方法预防租赁LED显示屏舞台隐患

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

软件测试 | 测试开发 | Pytest 结合 Allure 生成测试报告

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Jenkins通过什么方式报警?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 通用 api 封装实战,带你深入理解 PO

测吧(北京)科技有限公司

测试

持续测试成熟度模型

陈磊@Criss

软件测试 | 测试开发 | 实战演练基于加密接口测试测试用例设计

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Jenkins中,如何管理用户及其相对应权限?

测吧(北京)科技有限公司

测试

秋招收到10几个offer 说说我的想法吧

Geek_0c76c3

Java 数据库 开源 程序员 开发

软件测试 | 测试开发 | 一步一步学测试平台开发-Vue restful请求

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 测试右移之logstash完整配置实例

测吧(北京)科技有限公司

测试

成长计划校园极客秀|基于OpenHarmony的智能阳台

OpenHarmony开发者

OpenHarmony

墨天轮沙龙 | 宝兰德詹年科 :基础软件中间件,让业务人员更好专注业务逻辑的实现

墨天轮

数据库 基础软件 中间件 消息中间件 数据库中间件

OneFlow的大模型分片保存和加载策略

OneFlow

机器学习 深度学习 分布式

软件测试 | 测试开发 | 电商业务的性能测试(一): 必备基础知识

测吧(北京)科技有限公司

测试

InfoQ 2022年趋势报告:架构与设计篇_架构_InfoQ精选文章