[关闭]
@levinzhang 2023-05-03T15:21:25.000000Z 字数 4629 阅读 297

InfoQ 2023年4月软件架构和设计趋势报告

by

摘要

在本文中,InfoQ编辑团队对2023年软件架构与设计的主题进行了概述,并重点介绍了如今需要关注的架构。


InfoQ趋势报告为InfoQ的读者提供了需要关注的主题的概览,同时帮助InfoQ编辑团队关注创新性的技术。除了该报告和趋势图之外,与之相关的播客会有多位编辑讨论这些趋势。

趋势图的更新

在后文中,我们会对报告进行更详细的阐述,但我们首先总结一下去年以来趋势图的变化。

今年有三个新的条目添加到了图表中。大语言模型和软件供应链安全是新的创新者趋势,“将架构作为团队运动”被添加到了早期采用者中。

获得采用并转移到右侧的趋势包括“可移植性设计”、数据驱动架构和serverless。eBPF被删除掉了,因为它的应用范围较小,而且不太可能成为架构决策的主要驱动力。

有些趋势进行了重命名或进行了合并。我们认为Dapr是对“可移植性设计”理念的实现,所以作为一个单独的趋势,它被移除掉了。数据驱动架构是“数据+架构”和数据网格(data mesh)的组合。区块链被替换为更广泛的去中心化的应用,或dApps的概念。WebAssembly现在同时涉及到了服务端和客户端,因为这些都是相关但独立的想法,并可能在未来独立演进。

可移植性设计

“可移植性设计”中的可移植性指的并不是能够将代码拿出来并转移到别的地方去。相反,它从基础设施中创建了一个整洁的抽象概念。正如InfoQ编辑Vasco Veloso所言,“设计和构建系统的人可以专注于能够带来价值的东西,而不必过多担心它们将要运行的平台的细节。”

这种设计理念正在被Dapr这样的框架所实现。InfoQ的新闻经理Daniel Bryant认为CNCF项目的好处在于为构建云原生服务提供了一个清晰的抽象层和API。Bryant说,“[集成]的关键在于API,而[Dapr]提供了抽象,而不做最低限度的共同标准”。

Bilgin Ibryam在最近的一篇文章中描述了云原生应用向云限定(cloud-bound)应用的演变。云限定应用不是使用应用逻辑和计算基础设施的逻辑组件来设计一个系统,而是把关注点放到集成绑定上。这些绑定包括外部API,以及像工作流编排和可观测性遥测这样的运维需求。

另一项支持可移植性设计的技术是WebAssembly,尤其是服务器端的WebAssembly。通常,WebAssembly被视为客户端的功能,用于优化在浏览器中运行的代码。但是,使用WebAssembly对服务器端的代码大有益处。InfoQ的编辑Eran Stiller描述了创建基于WebAssembly的容器的过程。

与其将它编译为Docker容器,然后在编排器的容器中启动整个系统,还不如将其编译为WebAssembly,这样能够使容器更加轻量级。它的构建是非常安全的,因为它的最初目的是用来运行浏览器的。而且它能够在任何地方运行:在任意云或任意CPU上。——Eran Stiller

关于DaprWebAssembly的更多信息,可以关注InfoQ相关的主题。

大语言模型

AI相关的新闻,尤其是像GPT-3和GPT-4这样的大语言模型,已经让我们无法忽视了。正如人们日常使用和各种形式的媒体报道所证明的那样,它不仅仅是软件专业人员使用的工具。但是,它对软件架构师意味着什么呢?在某种程度上来讲,现在断言未来会发生什么还为时尚早。

借助ChatGPT和Bing,我们刚刚看到像GPT-3这样的大语言模型的可能性。这就是创新者(innovator)趋势的定义。我不知道会有什么样的结果,但它肯定是非常重要的,我期待在未来几年看到它的发展。——Thomas Betts

虽然未来是不确定的,但我们乐观地认为,这些AI模型会对我们构建的软件以及构建软件的方式产生积极的影响。ChatGPT、Bing chat和GitHub Copilot的代码生成功能对编写代码和测试很有助益,能够让开发人员更快地开展工作。架构师也可以使用聊天机器人来讨论设计方案和分析权衡利弊。

尽管这些效率提升是很有用的,但是必须要了解AI模型的局限性。它们有内在的偏见,这可能并不那么显而易见。虽然看起来它们的回应信心满满,但它们可能并不了解你的领域。

这肯定是2023年需要关注的一个主要趋势,因为新产品是建立在大语言模型之上的,而公司找到了将它们集成到现有系统的方法。

数据驱动架构

去年,我们讨论了“数据+架构”的理念,以此来掌握架构师在设计系统时该如何以不同的方式来考虑数据。今年,我们在“数据驱动架构”的标题下,将这一理念与数据网格(Data Mesh)结合了起来。

数据的结构、存储和处理都是前期要关注的问题,而不是在实现过程中要处理的细节。QCon伦敦编程委员会的成员Blanca Garcia-Gil说,“在设计云架构时,有必要从一开始就考虑数据的收集、存储和安全性,这样以后我们就可以从中获取价值,包括使用AI/ML”。Garcia-Gil还指出,数据可观测性依然是一个创新者趋势,至少与系统中其他部分的可观测性相比是这样的。

数据网格是一种范式的转变,团队围绕着数据产品的所有权进行调整。这符合数据驱动架构的理念,也会将康威法则纳入系统的整体设计。

设计可持续性

尽管设计可持续性得到了更多的采用,但是我们依然将其作为一个创新者趋势,因为行业刚刚开始真正接受可持续系统以及面向低碳足迹的设计。我们需要将可持续性作为一个主要特性,而不是在降低成本时的次要目标。Veloso说,“我注意到最近有很多关于可持续性的讨论。坦白讲,可能有一半的原因是因为能源价格更加昂贵,每个人都想要减少OPEX”。

在这方面,最大的挑战之一是难以衡量系统的碳足迹。到目前为止,成本一直作为环境影响的替代方案,因为耗费的计算量与使用了多少碳之间存在一定的关联性。但是,这种技术有很多的局限性。

绿色软件基金会(Green Software Foundation)是一个致力于创建工具来测量碳消耗的计划。在QCon伦敦会议上,Adrian Cockcroft概述了三大云供应商(AWS、Azure、GCP)目前在碳测量方面的情况

随着工具的改进,开发人员将能够把碳使用添加到系统的其他可观测性指标中。一旦数据可见,就可以设计和修改系统以减少它们。

这也与可移植性和云原生框架的理念息息相关。如果我们的系统更具可移植性,这意味着我们能够更容易地调整它们,以最环保的方式运行。这可能涉及到将资源移动到使用绿色能源的数据中心,或者在可用能源更加绿色环保的时候处理工作负载。我们不再假定在服务器不繁忙的夜间是运行工作负载的最佳选择,因为太阳能可能意味着白天的中午是最绿色环保的时间。

去中心化应用(dApps)

区块链和分布式账本是去中心化应用背后的技术。随着Twitter的变化,作为一个替代性的、去中心化的社交网络,Mastodon得以进入大众视野。但是,区块链技术所致力于解决的问题依然被大多数人认为这根本并不是什么问题。由于适用场景的小众性,它依然被归类为创新者趋势。

将架构作为团队运动

架构师不再独自开展工作,架构师也不再只思考技术问题。在行业中,架构师角色的差异很大,一些公司已经完全取消这个头衔,而倾向于让“首席工程师(principal engineer)”作为主要负责架构决策的角色。这对应了一种更加强调协作的工作方式,架构师与构建系统的工程师紧密合作,不断完善系统设计。

架构师会一直与软件团队合作,提出并迭代设计。我会持续看到这里有不同的角色(尤其是在较大的组织中),但是最重要的是,要通过概念验证进行沟通和协作,从而对设计进行尝试。——Blanca Garcia-Gil

现在,架构决策记录(Architecture Decision Record,ADR)被普遍认为是记录和交流设计决策的一种方式。它们也可以用作协作工具,帮助工程师学会做出技术决定和考虑权衡利弊。

在InfoQ播客中聆听趋势报告的讨论

架构与设计编辑团队通过远程会议讨论了这些趋势,我们将讨论录成了播客。 你可以听一下这些讨论,感受这些趋势背后的考量因素。

关于作者

Thomas Betts

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

Blanca Garcia Gil

Blanca Garcia Gil在位于柏林的金融科技创业公司topi担任首席分析工程师。她专注于构建和扩展数据工程和分析领域。她在BBC工作了7年,为数据平台团队做出了贡献,在那里她建立了高度可扩展的数据摄取流水线,并带领团队改善数据仓库和数据可视化中的数据访问。在加入BBC之前,她担任过各种职务,包括web应用开发、移动原型设计和内容管理系统开发,以及编写高吞吐量的API。在空闲时间,她喜欢旅行、阅读、游泳和烹饪。她喜欢新的爱好,如服装制作、绘画或语言。她在西班牙长大,也曾在美国和澳大利亚生活过。她目前在英国伦敦工作。

Daniel Bryant

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

Eran Stiller

Eran Stiller是澳大利亚墨尔本的首席软件架构师。作为一位经验丰富的软件架构师和CTO,Eran设计、实施和审查了多个业务领域的各种软件解决方案。Eran在软件开发领域有多年的经验,并曾经参与公开演讲和社区贡献。微软认可他自2018年起担任微软区域总监(Microsoft Regional Director,MRD),并在2016-2022年期间担任微软Azure的最有价值专业专家(MVP)。

Vasco Veloso

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

Tanmay Deshpande

技术和业务架构师,更多信息请参阅https://linktr.ee/tanmaydeshpande

查看英文原文:Software Architecture and Design InfoQ Trends Report - April 2023

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注