架构设计30-架构模式01-介绍

简介: 架构设计30-架构模式01-介绍

架构设计系列文章,请参见连接。

背景:

1. 学习背景
多年前在学习架构设计的过程中,无意间找到了叫做《架构模式》的架构设计方法论。从哪之后就开始逐渐的深入学习这方面的内容。在简书个人介绍中的:《规则对于智者来说是指导,对于愚者来说是遵从》。其实就是在学习《架构模式》是理解的真理。

在平常的工作过程中,有很多人会以经验的方式去知道具体的工作。遇到无经验可借鉴的时候就束手无策了。往往这些时候就是体现一个人学习能力的时候,所以,就需要一种借鉴其他人经验的方式。而架构模式就是前人为我们总结和模式化的架构设计实践中经验。

2. 内容范围
在软件界有很多种模式的概念,并在之后会推出系列的架构模式文章。所以需要大概的说明一下系列文章的内容范围,以区别其他知识领域并方便的指导学习过程。

在搜索引擎上搜索《架构模式》时,最可能搜到的是Martin Fowler的《企业应用架构模式》。这本书的主要介绍的范围是在软件开发中可能会遇到的各种知识点,以及GoF设计模式的具体落地方式等等。所以,这本书描述的内容基本上在《架构设计01--架构师知识体系》底层的实现技术与设计模式部分。

本文中介绍的内容更多的是《软件体系结构》和《软件体系结构原理、方法与实践》中的内容。这两本书描述从软件架构的层面上通用模式。所以,可以理解为本系列文章的主要内容是介绍软件体系结构

因为每个人经历、知识体系都是不一样的,并且写文章所要介绍的内容也不尽相同。所以在网上可以找到很多种的架构模式的理解。例如:《10 Common Software Architectural Patterns in a nutshell》,《朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)》,《《软件架构模式》-第一章分层架构(上)》。在这里介绍的内容与其他介绍的内容没有什么好坏之分,只不过在软件体系结构中介绍的内容的细分领域不同。所以,作为一个软件从业人员尽量的多去学习,多去理解才是最终要的。不用进行比较。

概述:

1. 架构设计到底干了什么?
架构的基本需求主要是在满足功能属性的前提下,关注软件质量属性,架构设计则是为了满足架构需求(软件质量)寻求适当的”战术“;

2. 软件架构设计的意义?

  1. 项目关系人之间的交流平台

在软件过程中,软件系统中会有各种各样的关系人进入。软件系统的多种关系人在不同的时候分别关注系统不同的特性。我们可以从软件架构的"4+1"视图模型中看不同人的需求。

架构设计

  1. 早期设计决策

在精益中有个规则,叫做推迟决策。相应的敏捷中也需要支持尽快决策。在软件开发的开发初期可以实现MVP,对其进行各方面的评估与验证。因为在软件过程中不确定因素很多,刚开始很难预测未来的变化,一开始保留较大的弹性。软件需求分三种:功能需求,质量需求和设计约束。在开始进行架构设计时就可以考虑这三种需求来完成相应的决策。

  1. 在较高层面上体现软件的复用

软件质量中有一条软件可复用性,不要认为软件工程中的规则、原则、指导等都只能停留在它所固定的层次上。软件的可复用性并不只代表代码的复用性,它代表了软件开发层次中的各个层次。在组件化开发中软件可复用性可以体现在组件的服用。在架构设计层面的可复用性,就可以说架构模式了。

  1. 架构对开发的指导与规范意义不可忽视。

架构的指导意义体现在所有的人员都有一个共同的目标。在团队中一致的目标能让团队更高效的完成任务。并且可以形成软件中的统一语言,方便团队中的沟通。

说明:

1. 以怎样的方式描述架构模式?

根据软件实施经验、并综合架构模式的定义进行对软件架构进行描述。也会说明具体的架构模式的适用范围,以及使用过程中的注意事项。

2. 软件架构的生命周期?

从演进式架构还没有出现时,总有一种模糊的感觉:架构不是一蹴而就的。在遗留系统怎样更新到新架构、现在正在运行的软件产品怎样持续的进行改进、新系统设计时怎样考虑它的可扩展行?这些都是对软件架构的要求。所以,一直在思考,但是《演进式架构》出现后才真正的理解。
image.png

体系结构的生命周期模型

3. 架构模式分类

GoF为我们总结了23种设计模式。我们在这里说明10种架构模式。具体类型为:

  • 分层架构模式
  • 事件驱动架构模式
  • 微内核架构模式
  • 微服务架构模式
  • 云架构模式
  • 命令查询指责分离模式
  • 仓库系统及知识库
  • 控制环路模式
  • 管道过滤器模式
  • 无服务器架构

参考:

设计恰如其分的架构
新书推荐 | 拥抱变化:演进式架构设计
技术实践如何支持演进式架构和持续集成
微服务即演进式架构
微服务和演进式架构

目录
相关文章
|
1月前
|
消息中间件 存储 SQL
Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
【2月更文挑战第18天】Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
474 0
|
11月前
|
存储 缓存 运维
带你读《云原生架构白皮书2022新版》——主要架构模式(上)
带你读《云原生架构白皮书2022新版》——主要架构模式(上)
444 1
|
11月前
|
Cloud Native 前端开发 定位技术
带你读《云原生架构白皮书2022新版》——主要架构模式(下)
带你读《云原生架构白皮书2022新版》——主要架构模式(下)
179 1
|
11月前
|
存储 机器学习/深度学习 人工智能
【数据架构】数据网格架构模式
【数据架构】数据网格架构模式
|
11月前
|
设计模式
「软件架构」架构风格vs.架构模式vs.设计模式
「软件架构」架构风格vs.架构模式vs.设计模式
|
设计模式 前端开发
软件架构编年史:架构风格 vs. 架构模式 vs. 设计模式
软件架构编年史:架构风格 vs. 架构模式 vs. 设计模式
软件架构编年史:架构风格 vs. 架构模式 vs. 设计模式
|
设计模式 负载均衡 算法
【高可用架构】高可用性架构模式
随着企业客户部署的任务关键型基于web的服务的数量不断增加,对设计最佳网络可用性解决方案的深入理解的需求前所未有地重要。高可用性(HA)已成为此类系统开发的关键方面。高可用性简单地指的是一个组件或系统持续运行一段时间。
|
存储 设计模式 缓存
架构设计30-架构模式07-命令查询指责分离模式
架构设计30-架构模式07-命令查询指责分离模式
123 0
架构设计30-架构模式07-命令查询指责分离模式
|
消息中间件 运维 JavaScript
架构设计30-架构模式03-事件驱动架构模式
架构设计30-架构模式03-事件驱动架构模式
173 0
架构设计30-架构模式03-事件驱动架构模式
|
设计模式 运维 前端开发
架构设计30-架构模式02-分层架构模式
架构设计30-架构模式02-分层架构模式
229 0
架构设计30-架构模式02-分层架构模式