GMTC深圳站本周日开幕,14大专题全部上线,完整日程>> 了解详情
写点什么

InfoQ 趋势报告:架构和设计领域技术演变详解

  • 2019 年 2 月 13 日
  • 本文字数:4524 字

    阅读完需:约 15 分钟

InfoQ趋势报告:架构和设计领域技术演变详解

本文概述了我们对当前“架构和设计”领域的看法,这个领域侧重于基础设施模式、技术框架模式的实现,以及软件架构师必须掌握的设计流程和技能。


关键要点:

  • 我们看到了“演化式架构”设计需求的增长,这种架构建立在可替换性设计和关注“胶水”组件的基础之上。演化式架构支持功能性和跨功能性需求和约束的未来变化。

  • “微服务”架构可能会进入晚期大众阶段,但与“正确设计分布式系统”相关的主题以及反应式和容错式设计将越来越靠近采用曲线。

  • 我们预测有些架构主题永远不会转移到早期大众或晚期大众阶段,但它们当中有一些高效的针对特定用例的模式,如基于事件溯源/CQRS 或基于 Actor 模型的系统。

  • 我们看到“架构师”这个角色越来越多地偏向于技术领导力、架构模式识别和框架意识以及横切关注点设计。

  • 虽然我们认为“serverless”这个术语有点含糊不清,但我们很欣赏 serverless 将重点放在设计事件驱动的系统以及自动消除某些平台问题的可能性上。



InfoQ 和 QCon 都关注处于“创新者、早期采用者和早期大众”阶段的主题。我们尝试找出符合 Geoffrey Moore 所谓的早期市场的想法。早期市场“客户群由技术爱好者和有远见的人组成,他们希望走在机遇前面,解决迫在眉睫的问题”。我们也在寻找可能会“跨越鸿沟”以便得到更广泛采用的想法。值得一提的是,技术在采用曲线上的确切位置可能会有所不同。例如,湾区公司目前广泛采用微服务架构,但在其他地方可能不是这种情况,而且对他们来说采用微服务也许不太合适。


本文概述了我们对当前“架构和设计”领域的看法,这个领域侧重于基础设施模式、技术框架模式的实现,以及软件架构师必须掌握的设计流程和技能。


从上次评审这个主题以来发生的显著变化是“微服务”已进入到后期大众。同时,根据我们内部的讨论,与“正确设计分布式系统”相关的主题以及反应式和容错式设计离采用曲线已经不远了。在Gartner炒作周期中,微服务可能正在接近“幻灭低谷”的底部。


我们预测,有些架构主题永远不会沿着采用曲线走向早期大众或晚期大众,但它们当中包含了几种高效的架构模式——例如基于事件溯源/CQRS 或基于 Actor 模型的系统——可以为某些组织和业务问题提供高效的解决方案。


虽然我们认为“serverless”这个术语有点含糊不清,但我们很欣赏 serverless 将重点放在设计模块化、事件驱动的系统以及自动化一些底层操作平台的可能性上。我们还看到了围绕演化式架构的讨论,演化式架构将为需求和约束的未来变化提供支持


除了技术技能(如架构模式识别和框架意识)和处理横切关注点设计的能力,我们看到“架构师”这个角色正在变得更加专注于软技能,例如技术领导力


下图是 2018 年下半年的趋势图,2019 版位于文章的开头。



以下是 InfoQ 的三位架构和设计(AD)主题编辑之间的内部聊天记录(内容经过轻微的编辑),为图中的技术定位提供了更多相关信息。


Daniel Bryant,独立技术顾问、Datawire 产品架构师、InfoQ 新闻经理:


我认为 HTTP2 将进入早期采用者阶段,而 HTTP3 则进入创新者阶段。GraphQL(可能也包括 gRPC)可能会进入早期采用者阶段(或创新者?)。我认为混沌工程应该加入 DevOps 的行列。微服务进入晚期大众,BDD、DDD 和 TDD 也是。

我很想看到“演化式架构”出现在某个地方——可能是早期采用者?那么“架构师即技术领导者”(强调角色的非技术演变)呢?

我很想听听你们的想法,我们是否需要移动、添加或删除某些主题?


Jan Stenberg,IT 顾问,在.Net/C#和JVM/Java方面拥有超过25年的经验:


我认为 AD 在某种程度上与 InfoQ 报道的其他主题不同。

在 AD 方面,我们没有新的或更新的架构常规基础。相反,由于新的工具、框架或智能架构的出现,已有的想法会再次流行起来,并且可能被包装和品牌化。

有一些领域可以被纳入到两个队列中。从高层面来看,它们可以被纳入到 AD 中,而技术性部分则应该被纳入到另一个队列。我认为 serverless 就是这样的一个例子,从高层面来看,它是 AD 的一个重要领域,而技术性部分则属于云队列。微前端和类似的技术则是另外一个例子,它应该属于 AD 还是 HTML5 和 JavaScript?

我认为有一些领域或架构永远不会出现在早期大众或晚期大众阶段,但它们当中却有一些我最喜欢的架构,比如基于事件溯源/CQRS 或基于 Actor 模型的系统。我认为,在可预见的未来,它们将是少数人使用的利基架构。我不确定我们应该如何看待这些主题,或许当架构师和开发人员不再谈论它们时,它们就会消失?

以下是我对 AD 未来的看法(或许我希望这样):

serverless。去年我听过这方面的演讲,它们给我的印象是这一领域将越来越自动化,底层基础设施的工作量将越来越少。

工作流平台(如 Camunda)。我认为它们对于具有复杂业务逻辑的微服务或分布式系统来说非常重要。

事件溯源/CQRS。我希望它会变得更加主流,可能会进入早期采用者或早期大众阶段。

事件驱动的架构,进入早期采用者或早期大众阶段。

Actor 模型/反应式。去年我和 Vaughn Vernon 讨论了这件事,他认为有一天它们会成为主流,但我对此持怀疑态度。

演化式架构很有趣,我认为它进入早期采用者阶段是对的。

混沌工程。是的,它应该属于 DevOps,从 AD 角度讨论这个主题可能是一个例外。

GraphQL 和类似的工具应该属于创新者或早期采用者,它将取代 REST。

架构师即技术领导者。我在家中与各种各样的架构师会面,他们大部分人的主要工作是让商业/政府领域专家了解他们自己的领域,所以架构师更应该被纳入到敏捷队列中?

微服务进入晚期大众。我认为微服务很快将成为“今天的 SOA”。很多人用对了,也有很多人将它实现成了分布式单体。

DDD 进入晚期大众,但我希望它仍然会是 InfoQ 的一个有趣的主题。

BDD 进入晚期大众,或“晚期少数派”。

关于 TDD,仍然或多或少会有一些讨论。单元测试或黑盒测试或者其他,但至少会进入晚期大众。

当我在日常生活中(不是在技术大会和类似的活动中)遇到架构师、开发人员和领域专家时,我意识到,我们在这里讨论的很多概念对于他们来说是未知或非常弥散的,这也使得他们很难看到 InfoQ 的好处。大约两年前,我在开发者大会(应该是在加拿大)上听过一个演讲,Vaughn Vernon 问有多少人对 DDD 有所了解,大约有一半的观众举起了手。

当我开始成为 InfoQ 编辑时,我写了一些有关框架和库的文章,我认为这些框架和库新增的功能可能会影响架构,但随着时间的推移,我写的东西越来越关注有趣的博文和演示文稿上,只有一小部分是关于与特定架构密切相关的框架,如 Axon、Akka。

在 QCon 大会期间进行这种讨论会很棒。


Charles Humble,InfoQ 主编:


我和 Vaughn Vernon 都认为 Actor 模型很可能会成为主流——无论是直接地还是通过消息传递来实现。在 JVM 领域,Akka 在这方面做得很好,而在金融领域,基于消息传递的系统长期以来一直是实现 Actor 模型的一种流行的方式。

Actor 似乎很容易掌握和理解,也是处理大规模并行工作的一种很好的方法。我希望看到在Pony之上构建基于 Actor 模型的现代系统,并成为一个榜样,但我不得不说,我个人认为这不太可能。

关于演化式架构,Martin Fowler 去年在播客上谈到了这个问题。我很期待Thoughtworks的这本书


Thomas Betts,IHS Markit 首席工程师和 InfoQ Architecture Queue 负责人:


从高层面来看,我同意 Daniel 的大部分观点。Jan 是对的,一些架构模式顺着图中的趋势自然演进,而其他一些则可能永远不会超过早期采用者阶段,因为它们并不会被广泛采用。

有时候,我会对 AD 与 InfoQ 其他主题之间的重叠部分感到困惑,尤其是文化与方法论(CM)。我想这与康威定律有关。架构的很多内容都归结为通信——进入和离开系统的外部通信点是什么?内部服务是如何相互通信的?如何保存和访问数据?

在很多方面,公司解决这些问题的方式以及他们可以选择的选项将基于它们在 AD 和 CM 采用生命周期曲线上的位置。我认为 AD 是这个等式的技术端,而 CM 是非技术端,但这样的比喻似乎过于简单化了。此外,技术实现可能应该属于开发和/或语言队列。AD 处于两者之间的软弱处,处理横切面关注点,为如何实现系统提供指导。

我想添加一些具体的讨论点。

serverless——虽然我个人不喜欢这个术语,因为它似乎没有任何特定的含义,它或许应该在早期采用者阶段。

反应式——可能应该属于早期采用者。我认为反应式架构会变得更加普遍,因为开发人员越来越熟悉反应式编程,特别是在使用 JavaScript 时。

DDD——虽然 DDD 本身可能会进入晚期大众,但仍然会有很多与 DDD 密切相关的衍生想法,这些想法会在创新者或早期采用者中。例如,事件溯源可以进入早期采用者或早期大众。但是,我不认为很多子主题应该被包含在 AD 主题图中。

微服务——与“serverless”一样,它是一个容易被滥用或误解的术语。我认为随着它被广泛采用,将进入晚期大众,但可能在分布式架构方面处于早期采用者阶段。

分布式系统——我认为把它放在主题图中并不合适,因为这个概念太宽泛了。但我希望我们在谈论系统设计时可以考虑到分布式。像反应式和容错这样的想法对于构建健壮的分布式系统来说至关重要,而它们在单体系统中可能没有那么重要。这就是为什么要在 AD 主题图中加入混沌工程。

我完全支持在 QCon 大会上讨论这些话题!


关于作者

Thomas Betts 是 IHS Markit 的首席软件工程师,拥有 20 年的专业软件开发经验。他一直致力于提供令客户满意的软件解决方案。他曾在多个行业工作,包括零售、金融、医疗、国防和旅游。Thomas 与妻子和儿子住在丹佛,他们喜欢徒步旅行,也喜欢探索美丽的科罗拉多州。


Daniel Bryant 正在引领组织和技术变革。他目前的工作包括通过引入更好的需求收集和规划技术来实现组织敏捷性,重点关注敏捷开发中的架构相关性,以及促进持续集成/交付。Daniel 目前专注于“DevOps”工具、云/容器平台和微服务实现。他还是伦敦 Java 社区(LJC)的负责人,为多个开源项目做出贡献,为 InfoQ、DZone 和 Voxxed 等知名技术网站撰写文章,并定期出席 QCon、JavaOne 和 Devoxx 等国际性会议。


Charles Humble 于 2014 年 3 月接任 InfoQ.com 的主编,指导我们的内容创作,包括新闻、文章、书籍、视频演示和访谈。在担任 InfoQ 的全职工作之前,Charles 负责我们的 Java 报道,并担任 PRPi 咨询公司的首席技术官,PRPi 咨询公司是一家名誉研究公司,于 2012 年 7 月被普华永道收购。他全面负责 PRPi 公司内部使用的定制软件的开发。他在企业软件领域工作了大约 20 年,曾经是开发人员、架构师和开发经理。在业余时间,他为 Twofish 创作音乐,首张专辑于 2014 年 2 月发行,并尽可能多地与妻子和孩子在一起度过。


Jan Stenberg 在瑞典北部的一名 IT 顾问,工作超过 25 年,在.Net/C#和JVM/Java方面有着丰富的经验。他的经验范围从大型分布式和基于服务的系统到基于Web和富客户端应用程序,再到硬件相关的软件。


查看英文原文https://www.infoq.com/articles/architecture-trends-2019


活动推荐:

2019 年 7 月 12-13 日,ArchSummit 全球架构师峰会将在深圳举办。针对华南地区的技术氛围和技术人群的关注点,设置了金融技术、小程序、中台战略技术选型、AI 技术落地、数据平台建设等专题,邀请 Apple、Google、阿里等企业专家来分享最新的技术成果。点击 archsummit.com 查看官网。


2019 年 2 月 13 日 08:007848
用户头像

发布了 731 篇内容, 共 384.2 次阅读, 收获喜欢 1903 次。

关注

评论 1 条评论

发布
用户头像
说的是个屁啊,能说人话吗
2019 年 02 月 14 日 11:39
回复
没有更多了
发现更多内容

浅谈Java中的TCP超时

Hoswey_洪树伟

Java、

Kubernetes手记(5)- 配置清单使用

雪雷

k8s 6月日更

人人视频被迫下架:打击盗版视频网站任重道远

石头IT视角

数字化转型背景下的测试转型

BY林子

敏捷测试 测试转型

高性能 JavaScriptの七 -- 编程实践小技巧

空城机

JavaScript 前端 6月日更

学妹问,学网站开发还是打 ACM?

程序员鱼皮

Java 程序员 算法 前端 ACM

5分钟速读之Rust权威指南(十九)

码生笔谈

rust 生命周期

阿里云边缘容器服务、申通 IoT 云边端架构入选 2021 云边协同发展阶段性领先成果

阿里巴巴云原生

云原生

项目管理与项目集管理、项目组合管理的区别?

万事ONES

项目管理 项目 PMO ONES

spring-beans 注册 Beans(四)BeanDefinition

梦倚栏杆

你愿意被管理么?

escray

学习 极客时间 朱赟的技术管理课 6月日更

加快技术应用规模化 建设世界先进水平区块链产业生态

Geek_987812

区块链+金融:当前区块链应用场景中最具活力的领域

Geek_987812

JavaScript 中数组 sort() 方法的基本使用

编程三昧

JavaScript 前端 数组 排序 js

做通才还是专才,你会怎么选?

架构精进之路

认知提升 6月日更

🏆【声网 Agora】「PC端实现实时语音通讯4.x」

浩宇天尚

WebRTC RTC征文大赛 声网 6月日更

5W1H聊开源之What——开源协议有哪些?

禅道项目管理

开源

Spring永远的神!阿里大牛熬夜38天整理的Spring全家桶笔记太香了!

程序员小毕

Java spring 程序员 架构 面试

不管是三胎还是App!指望“拉新”太难了,还是要靠老用户!

友盟全域数据

APP开发

公司:离职就是一场危机管理

石云升

创业 职场经验 6月日更

操作系统内核是什么?Linux内核又是什么?读完这篇文章,我终于知道了

奔着腾讯去

c++ 操作系统 内存管理 Linux内核 进程管理

云原生推动全云开发与实践

阿里巴巴云原生

云原生

异构内存及其在机器学习系统的应用与优化

白玉兰开源

人工智能 机器学习 解决方案 第四范式 傲腾

给你一直尝试和创新的机会!走进亚马逊云科技MRC团队

亚马逊云科技 (Amazon Web Services)

《原则》(八)

Changing Lin

6月日更

分布式认知工业互联网如何赋能工业企业数字化转型?

Geek_987812

Java--JVM运行流程

是老郭啊

Java JVM JVM原理

MySQL基础之六:连接查询

打工人!

myslq 6月日更

Python——输入输出:加减乘除四则运算的程序

在即

6月日更

国内低代码产品是如何定位的?这3类,企业可自行对号入座

优秀

低代码

软件研发团队如何做好项目进度管理?

万事ONES

项目管理 研发管理 需求 ONES

数据cool谈(第2期)寻找下一代企业级数据库

数据cool谈(第2期)寻找下一代企业级数据库

InfoQ趋势报告:架构和设计领域技术演变详解-InfoQ