2021-2022软件架构与设计趋势报告

6,640 阅读9分钟

2022 年什么会火?什么该学?本文正在参与“聊聊 2022 技术趋势”征文活动 」

本文属译文,原文来源如下。

🤞 个人主页:@青Cheng序员石头
🤞 粉丝福利:加粉丝群 一对一问题解答,获取免费的丰富简历模板、提高学习资料等,做好新时代的卷卷王!

Key Takeaways

  • In a cloud-native world, architects are reprioritizing the -ilities they consider most important. Innovative architects are designing for resilience, observability, portability, and sustainability.
  • 在云计算的世界里,架构师们正在重新优先考虑他们认为最重要的-ilities。具有创新精神的架构师正在设计弹性、可观察性、可移植性和可持续性。
  • Dapr and the Open Application Model are two ways to make building distributed systems easier, and it will be interesting to watch how they are adopted in the future.
  • Dapr 和 Open Application Model 是使构建分布式系统变得更加容易的两种方法,观察它们在未来是如何被采用的将是非常有趣的。
  • The pendulum seems to be coming to rest, after swinging to extremes between monoliths and microservices. As a result, architects are relying on well-established patterns and designs that focus on high cohesion and low coupling, regardless of the underlying technology.
  • 钟摆似乎要停下来,在monoliths和microservices之间摇摆到极端之后。因此,无论底层技术如何,架构师都依赖于关注高内聚性和低耦合性的成熟模式和设计。
  • In fully-remote work environments, architects are finding new ways to communicate with their teams, and finding replacements for the water cooler chats which were useful for gathering knowledge.
  • 在完全远程的工作环境中,架构师正在寻找新的方式与他们的团队进行沟通,并且寻找更换饮水机聊天的替代品,这对于收集知识非常有用。
  • The next generation of GraphQL features, notably GraphQL Federation and GraphQL Microservices, are showing where to go next after companies have strong adoption of GraphQL.
  • 下一代的 GraphQL 特性,尤其是 GraphQL Federation 和 GraphQL Microservices,显示了在公司强烈采用 GraphQL 之后的下一步发展方向。

Designing for ___

We start by looking at which “-ilities” are most important to architects. A software architect is responsible for the cross-cutting concerns and making sure that individual components of a large system can work together seamlessly to meet overall objectives. In 2021, four areas we feel architects are concerned with are designing for resilience, designing for observability, designing for portability, and designing for sustainability.

我们首先看看对于建筑师来说,哪些“城市”是最重要的。软件架构师负责横切关注点,并确保大型系统的各个组件能够无缝地协同工作,以满足总体目标。在2021年,我们认为建筑师关心的四个领域是: 弹性设计、可观察性设计、可移植性设计和可持续性设计。

Designing for resilience is vital for modern, distributed systems, where any individual component could fail, and the overall system should remain available. In many ways, the ideas being implemented are not new—just becoming more important as distributed systems and modular architectures are more common. Daniel Bryant referred to the work done by David Parnas in the 1970s, and Michael Nygard’s more recent book, Release It!, as good sources for ideas regarding circuit breakers, timeouts, retries, and other fundamental requirements for a resilient system. What is new is finding ways to solve those problems across a system, such as using a cloud-native service mesh, or even building on a framework such as Dapr

设计弹性对于现代分布式系统至关重要,在这种系统中,任何单个组件都可能失败,整个系统应该保持可用。在许多方面,正在实现的想法并不新鲜ーー只是随着分布式系统和模块化架构越来越普遍,它们变得越来越重要。丹尼尔 · 布莱恩特提到了大卫 · 帕纳斯在20世纪70年代所做的工作,以及迈克尔 · 尼加德的新书《释放它!》,作为有关断路器,超时,重试和其他弹性系统的基本要求的想法的好来源。新的做法是找到在系统中解决这些问题的方法,比如使用本地云服务网格,或者甚至在 Dapr 这样的框架上进行构建。

Correctly-built distributed systems

The topic of microservices has steadily moved across the trends graph and has been categorized as a late majority trend for some time, as it has become easier to build distributed systems. However, we’re continuing to see some pushback against the overuse of microservices as an attempt to solve all problems. In some cases, this has led to major reversals, such as going back to a monolith. As the pendulum stops swinging, it seems we’re finally setting on a sane approach for most systems.

微服务的话题已经在趋势图中稳步移动,并且在一段时间内被归类为晚期的大多数趋势,因为构建分布式系统变得更加容易。然而,我们仍然看到一些人反对过度使用微服务,认为这是解决所有问题的一种尝试。在某些情况下,这导致了重大的逆转,如回到一个单一的。随着钟摆停止摆动,我们似乎终于为大多数系统设定了一个合理的方法。

Some of the trends around building distributed systems, or modular monoliths, all come back to fundamental architectural principles, such as high cohesion and low coupling. Domain-Driven Design, while considered a late majority trend, continues to be emphasized by architects looking for good guidance on context mapping and identifying boundaries within a system. Similarly, the C4 model can be very useful to create a hierarchical set of architecture diagrams to help understand your system.

围绕构建分布式系统或模块化整体的一些趋势,都回到了基本的架构原则上,比如高内聚性和低耦合性。领域驱动设计地图,虽然被认为是一个晚期的主流趋势,但是仍然被架构师们所强调,他们正在寻找关于系统内部环境映射和识别边界的好的指导。类似地,c4模型对于创建体系结构图的层次集非常有用,这有助于理解您的系统。

Data architecture

InfoQ is continuing to see innovation in the overlap between software architecture and data architecture. Data mesh, added to the graph last year, remains an innovator trend this year. It’s joined by data gateways, which are somewhat like API gateways but focus on the data aspect. As microservices have led to a polyglot persistence layer, API gateways offer abstractions, security, scaling, federation, and contract-driven development features.

InfoQ 继续看到软件体系结构和数据体系结构重叠部分的创新。去年增加的数据网格今年仍然是一个创新趋势。它由数据网关连接起来,这有点像 API 网关,但主要关注数据方面。由于微服务导致了多语言持久层的出现,API 网关提供了抽象、安全、可伸缩性、联合和契约驱动的开发特性。

The role of the architect

We continue to look at the role software architects play in their organizations. Beyond the traditional “boxes and arrows” responsibilities, architects are serving as technical leaders and mentors to other team members. Architects also need to be able to communicate with many audiences, described by Gregor Hohpe as riding the architect elevator—talking to the CTO and other executives, then traveling down to the engine room to work with the developers.

我们将继续关注软件架构师在他们的组织中所扮演的角色。除了传统的“盒子和箭头”责任,架构师还担任其他团队成员的技术领导和导师。建筑师还需要能够与许多观众交流,Gregor Hohpe 称之为乘坐建筑师的电梯ーー与 CTO 和其他高管交谈,然后前往机房与开发商合作。

For many teams, communication styles were very disrupted due to the pandemic and many companies adopting a long-term remote working strategy. This means architects have lost the ability to learn by osmosis simply because they could sit in the same room as the developers and overhear conversations. Where this has been helpful, it has led to more written communication, whether in IM chat rooms, or architecture decision records, and keeping those up to date because teams are regularly referring to them. The leading architects are finding ways to leverage the constraints of a fully remote team to their advantage, and creating better software designs because of it.

对于许多团队来说,由于流行病和许多公司采用长期远程工作策略,交流方式受到严重干扰。这意味着架构师已经失去了通过渗透作用学习的能力,仅仅是因为他们可以和开发人员坐在同一个房间里,偷听对话。这种做法有所帮助的地方,却导致了更多的书面交流,无论是在 IM 聊天室,还是在架构决策记录中,并保持这些记录是最新的,因为团队经常引用它们。领先的架构师正在寻找方法,利用完全远程团队的约束优势,并因此创建更好的软件设计。

Other topics

Dapr and the Open Application Model (OAM) were both introduced by Microsoft in late 2019. OAM is a specification for defining cloud-native applications and focuses on the application, rather than the container or orchestrator. Similarly, Dapr is a framework that has pluggable components meant to make cloud-native development easier. Although Microsoft was involved in their creation, both are open source projects, work on any cloud provider, and Dapr may become a CNCF project. Both Dapr and OAM have yet to see major adoption and are therefore clearly innovator trends to keep an eye on.

Dapr 和开放应用模型(OAM)都是微软在2019年末推出的。OAM 是一个用于定义本地云应用程序的规范,它侧重于应用程序,而不是容器或协调器。类似地,Dapr 是一个具有可插拔组件的框架,目的是使本地云开发更加容易。虽然微软参与了他们的创建,但是两者都是开源项目,在任何云供应商上工作,Dapr 可能成为 CNCF 项目。Dapr 和 OAM 都还没有看到主要的采用,因此它们是值得关注的明显的创新趋势。

WebAssembly is another innovator trend. For architects, it will be interesting to see if it is used as just a supplement to web frameworks and mobile development, or if systems will be designed with WebAssembly in mind, and how that will manifest.

WebAssembly 是另一个创新趋势。对于架构师来说,看看它是否仅仅被用作 web 框架和移动开发的补充,或者系统是否会在设计时考虑到 WebAssembly,以及这将如何实现,将是很有意思的。

A final note about GraphQL, which crossed the chasm on the trends graph last year. Since then, there has been innovation, particularly at Netflix, for the next-generation of GraphQL functionality, notably GraphQL Federation and GraphQL microservices. Just as the sprawl created by microservices led to new patterns for managing that sprawl, for companies that have invested heavily in GraphQL, they are needing GraphQL Federation to assist with managing the new complexity. This isn’t a problem every company will run into, but it remains useful to know and see where it goes in the future.

关于 GraphQL 的最后一点说明,它在去年跨越了趋势图上的鸿沟。从那时起,对于下一代的 GraphQL 功能有了创新,特别是在 Netflix,尤其是 GraphQL Federation 和 GraphQL microservices。正如微服务产生的蔓延导致了管理这种蔓延的新模式,对于那些在 GraphQL 上投入巨资的公司来说,他们需要 GraphQL Federation 来协助管理新的复杂性。这并不是每个公司都会遇到的问题,但是了解和预测未来的走向仍然是有用的。


少年,没看够?点击石头的详情介绍,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!