基于架构层级的软件架构模式划分与研究

2021-09-24 03:20李志华
电脑知识与技术 2021年23期
关键词:六边形层级架构

李志华

摘要:现代社会信息化发展速度日益加快,为了满足不断提升的服务需求,涌现了多种软件架构模式。然而,软件架构模式之间存在着相互交叉的情况,造成了模式之间的关系含糊。该文定义了软件架构层级,通过架构层级的划分,梳理常见的软件架构模式之间的关系,并通过分析这些架构模式的产生动机,进一步解释层级划分,帮助软件开发人员更好地识别和选择软件架构模式。

关键词:架构模式;架构层级;分层架构;六边形架构;SOA;微服务;事件驱动架构;服务网格

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2021)23-0060-02

Abstract: With the rapid development of information technology in modern society, in order to meet the increasing demand for services, a variety of software architecture patterns have emerged. However, the software architecture patterns intersect with each other, resulting in the ambiguous relationship between the patterns. This paper defines the software architecture level, clarifies the relationship between common software architecture patterns through the division of architecture level, and further explains the hierarchy by analyzing the motivation of these architecture patterns, so as to help software developers better identify and select software architecture patterns.

Key words: architecture pattern; architecture level; layered architecture; hexagonal architecture;  SOA; microservice; event driven architecture; service mesh

1 背景

軟件架构是软件开发的初始阶段就必须做的工作,并在软件开发和维护的生命周期中持续产生影响。随着软件的发展,产生了多种软件架构模式,常见的有:分层架构、六边形架构、SOA架构、微服务架构、事件驱动架构、服务网格等。软件架构模式是逐步发展形成的,其最终形式往往和其他架构模式有着一定的关系,导致一个软件会同时使用多种架构模式。若想将架构模式和软件开发完美结合,首先应该了解架构模式之间的关系,并对其有一个充分的认识。从软件架构层级的角度进行划分,可以帮助开发人员更好地了解软件架构模式之间的关系,更好地完成软件架构。

2 软件架构层级

在架构金字塔[1]中,将架构分为了4级:系统级、应用级、模块级、代码级。

代码级的关注点在代码细节上,由于关注点的抽象程度较低,不适合划分为软件架构模式的层级。另外,不同层级受业务的影响程度也不同,引入了业务领域来辅助定义层级。最终,将软件架构层级分为了3级。

1) 系统级:不同业务领域的应用在整个系统内的关系。

系统是最高的抽象层级,代表了能够提供价值的东西[2],这种价值,一般最终体现在业务上。因此,系统级的软件架构模式,是和业务领域相关的,与业务领域无关的架构模式属于更低的架构层级。不同业务领域一般对应了不同的组织,这是区分是否属于同一业务领域的重要标志。不同业务领域下的软件应用组合起来,形成了软件系统。

常见的系统级软件架构模式:SOA、服务网格。

2) 应用级:同一业务领域下的不同应用之间的关系。

常见的应用级软件架构模式:微服务架构、事件驱动架构。

3) 模块级:应用内部的模块关系。

常见的模块级软件架构模式:分层架构、六边形架构。

不同层级的架构模式之间,存在着互相交叉的关系;而同一层级的架构模式,存在互补的关系。

3 软件架构模式

3.1 分层架构

分层架构模式被认为是所有架构的始祖。在分解复杂的软件系统时,使用最多的技术就是分层,在计算机本身的架构中,到处都有分层的例子,不同的层从包含了操作系统调用的程序设计语言,到设备驱动程序和CPU指令集,再到芯片内部的各种逻辑门[3]。

软件,从一开始的单体系统,逐步向分布式系统发展。单体系统中,出现了二层结构:客户端和服务器端,然后又发展到更多层结构,分层对业务的依赖程度不高,是技术角度的架构模式。在向分布式系统发展中,系统分解成了多个应用,不依赖于业务的分层架构渐渐无法满足业务系统,人们开始用微服务等新的架构模式来架构系统,而分层架构模式逐步向模块级发展,被广泛地交叉于其他各种架构模式中。

3.2 六边形架构

软件分层一般有三层:表现层、领域层、数据源层,业务逻辑应该存在于领域层,然而,由于没有严格的代码约束,实际的软件中,业务逻辑会渗透到表现层的界面代码中,这种耦合导致了难以白盒测试和服务难以重用的问题[4]。

猜你喜欢
六边形层级架构
基于FPGA的RNN硬件加速架构
知识快餐店 到处都是六边形
功能架构在电子电气架构开发中的应用和实践
军工企业不同层级知识管理研究实践
基于军事力量层级划分的军力对比评估
创意六边形无限翻
怎样剪拼
怎样剪拼
LSN DCI EVPN VxLAN组网架构研究及实现
任务期内多层级不完全修复件的可用度评估