打造高质量软件架构 - 9大质量属性

news2024/9/27 15:32:46

关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文,阿里云认证的资深架构师,上亿营收AI产品研发负责人。

在软件架构中,软件系统的需求通常可以分为两类:功能性需求和非功能性需求。软件系统的架构设计需要满足这两类需求,尤其是在非功能性需求方面,系统架构的支持成为了架构的质量属性。本文将描述软件架构的9个质量属性,但并不意味着每个质量属性都必须在架构设计中实现。可以根据产品的实际需求,选择最重要的质量属性并实施。

file

1. 可扩展资源 Scalability

随着用户或请求数量的增加,系统的运行和操作能力也应随之增强。在云平台上,可扩展性可以通过横向或纵向扩展机器,或者简单地附加一个 AutoScalingGroup 来实现。

流量模式:了解系统的流量模式很重要,生成尽可能多的机器并不划算,尤其是在利用率较低的情况下。

  • 日常模式:特定区域的流量在早上增加,晚上减少。
  • 全球/区域模式:应用在某些地区的使用频率较高。
  • 突发流量:许多用户在同一时间请求资源,而只有少数机器能处理这些突发流量,通常发生在高峰时段或人口密集地区。

自动扩展:能够快速启动一些机器以应对突发流量,并在需求减少时优雅地缩减机器数量。

延迟:尽可能快速地提供服务请求。这包括优化算法并在靠近用户的位置复制系统以减少往返请求时间。

2. 可用性 Availability

可用性通过系统正常运行的时间百分比来衡量,定义了系统正常运行的时间比率。可用性受到系统错误、基础设施问题、恶意攻击和系统负载的影响。

部署标签:部署应用组件的多个独立副本,包括数据存储区域。

区域部署:将后端服务部署到一组地理节点上,每个节点都可以服务来自任何区域的客户请求。

3. 可扩展架构 Expandability

扩展性指标衡量系统能力的提升以及实现扩展所需的工作量。扩展可以通过添加新功能或修改现有功能来实现,原则是在不影响当前系统功能的前提下进行增强。

模块化/可重用性:可重用性和扩展性使技术能够更容易地转移到其他项目上,减少开发和维护时间,同时提高系统的可靠性和一致性。

插件化:能够轻松插入其他组件,如微内核架构。

4. 一致性 Consistency

一致性确保每次读取操作都返回最近的写入操作结果。这意味着在执行每个操作后,所有节点上的数据保持一致,无论客户连接到哪个节点,所有客户都可以同时看到相同的数据。一致性提高了数据的新鲜度。

5. 弹性 Elasticity

系统能够从意外故障和恶意攻击中从容应对并恢复。为了保持弹性,系统需要能够快速有效地检测故障并恢复。

恢复能力:在发生意外变化后,系统恢复到初始操作状态的过程。意外变化包括应用程序的软删除或硬删除、配置错误等。灾难恢复包括防止或尽量减少数据丢失和业务中断的最佳实践,涵盖设备故障、本地电力中断、网络攻击、民事紧急事件、犯罪行为或军事攻击以及自然灾害。

设计模式

  • 隔离:将应用程序的元素隔离到池中,以便当一个池发生故障时,其他元素仍然可以继续运行。
  • 熔断器:在连接远程服务或资源时,处理可能需要不同时间进行修复的故障。
  • 选举:通过选举一个实例作为领导者,负责管理其他实例,协调分布式应用中协作任务实例集合的操作。

6. 可观察性 Observability

可观察性是指收集程序执行、内部模块状态以及组件之间通信数据的能力。可以使用各种测试和跟踪技术和工具来提高可观察性。

日志记录:在每个请求中生成不同类型的日志:事件日志、事务日志、消息日志和服务器日志。

告警与监控:准备监控仪表板,创建服务级别指标(SLIs),并设置关键告警。

L1/L2/L3 支持:设置 L1/L2 的值班支持流程。L1 支持涉及与客户互动,L2 支持通过处理 L1 的工单并协助故障排除,L3 是最终的支持级别,通常由开发团队处理技术问题。

7. 安全性 Security

软件通过保护信息和数据,赋予个人或其他产品或系统相应的数据访问类型和授权权限。这些功能包括机密性(数据只能被授权人员访问)、完整性(软件防止未经授权的访问或修改)、不可抵赖性(能够证明发生的行为或事件)、责任追踪(能够追溯用户行为)和真实性(验证用户身份)。

可审计性:审计和跟踪系统活动,以便在发生安全漏洞时识别并确定漏洞的机制和范围。远程存储的审计跟踪可以防止入侵者掩盖他们的行踪。

合法性:

  • 合规性:遵守数据保护的法律法规,如 GDPR 和《个人信息保护法》。
  • 隐私:能够对内部公司员工隐藏交易(加密的交易,即使是 DBA 和网络架构师也无法查看)。

身份验证:确保用户身份的安全验证。

授权:确保用户只能访问应用程序中的某些功能(通过使用案例、子系统、网页、业务规则和字段级权限)。

8. 持久性 Persistence

持久性是指软件能够长期提供服务并满足用户需求的能力。

复制:涉及共享信息以确保冗余资源之间的一致性,从而提高可靠性、容错性或可访问性。

容错:容错是指系统在一个或多个组件发生故障时仍能正常运行的特性。

存档能力:数据是否需要在一段时间后被存档或删除?(例如,客户数据将在三个月后删除,或被标记为过时并存档到备份数据库中以供将来访问。)

9. 敏捷性 Agility

敏捷性已成为描述现代软件方法学的流行术语,敏捷团队通常是指能够适应变化的团队。

可维护性:应用程序的变更和系统增强的难易程度。它表明开发人员在修改软件以改进、修复或适应环境和需求变化时的效率。

可测试性:开发人员和其他人员测试软件的难易程度。

开发的便捷性:开发人员在修改软件时是否容易引入缺陷或降低现有产品质量的可能性。

可部署性:从代码提交到生产环境部署的时间。

可安装性:在所有必要平台上安装系统的难易程度。

可升级性:是否能够轻松/快速地在服务器和客户端上升级该应用程序/解决方案的早期版本。

可移植性:系统是否需要在多个平台上运行?(例如,前端是否需要同时在 Oracle 和 SAP 上运行?)

可配置性:最终用户是否能够通过可用界面轻松更改软件配置的各个方面。

兼容性:产品、系统或组件在共享相同硬件或软件环境时与其他产品、设计或成员交换信息的程度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2170351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

球体RCS计算 - 金属球的单站RCS【CST软件分析】

用金属球算RCS雷达散射截面可谓RCS的入门案例,本期用T和I两个求解器算单站RCS进行比较。 Step 1. RCS模板,T-solver, 频率0-5GHz,然后建模,半径10.16cm,可以算出来电尺寸在5GHz大概为三个波长,…

ROS理论与实践学习笔记——2 ROS通信机制之常用的命令

4.1 rosnode操作节点 rosnode:是用于获取节点信息的命令。 rosnode ping 测试到节点的连接状态 rosnode list 列出活动节点 rosnode info 打印节点信息 rosnode machine 列出指定设备上节点 rosnode kill 杀死某个节点 rosnode cleanup 清除不…

Python中的数据处理与分析:从基础到高级

在数据科学和数据分析领域,Python凭借其丰富的库和强大的生态系统,成为了最受欢迎的语言之一。本文将从基础到高级,详细介绍如何使用Python进行数据处理和分析,涵盖数据清洗、数据转换、数据可视化等多个方面。 1. 数据导入与导出…

华为 HCIP-Datacom H12-821 题库 (27)

🐣博客最下方微信公众号回复题库,领取题库和教学资源 🐤诚挚欢迎IT交流有兴趣的公众号回复交流群 🦘公众号会持续更新网络小知识😼 1. 如图,BGP 下有如下配置,下面哪些描述是错误的? A、Time…

Minderbinder:一款基于eBPF的进程安全测试工具

关于Minderbinder Minderbinder是一款基于eBPF的进程安全测试工具,在该工具的帮助下,广大研究人员可以通过注入噪声来测试目标进程的安全性。 Minderbinder 是一款使用 eBPF 将故障注入正在运行的进程的工具。当前版本的Minderbinder 可以通过将 kprobe…

动手学LLM(ch2)

2.1 理解词嵌入 深度神经网络模型,包括大型语言模型(LLMs),无法直接处理原始文本,因为文本是分类数据,与神经网络的数学运算不兼容。为了达到这个目的,需要将单词转换为连续值向量。记住一句话…

“Y模型”—我在3年实操后的个人总结

一直想写一篇关于【需求分析】及【产品设计】方面个人最常用的一些方式方法,对于一些刚入行以及埋头苦干的同学来说,大多数情况都是粗放式凭感觉的分析产品。 因为自己也有过这样的阶段,深知这种思考方式的弊端。从用户场景/反馈到具象化的产…

Linux标准IO(四)-格式化I/O输入

C 库函数提供了 3 个格式化输入函数&#xff0c;包括&#xff1a;scanf()、fscanf()、sscanf()&#xff0c;其函数定义如下所示&#xff1a; #include <stdio.h> int scanf(const char *format, ...); int fscanf(FILE *stream, const char *format, ...); int sscanf(c…

2023年金融科技建模大赛(初赛)开箱点评,多分类模型实战

原创作者Toby&#xff0c;文章来源公众号&#xff1a;python风控模型&#xff0c;2023年金融科技建模大赛&#xff08;初赛&#xff09;开箱点评 各位同学大家好&#xff0c;我是Toby老师。2023年金融科技建模大赛&#xff08;初赛&#xff09;从今年10月14日开始&#xff0c;…

最强反推更新!Joy Caption Alpha One详细测评、在线免费使用

免费教程网站&#xff1a;AI教程_深度学习入门指南 - 站长素材 (chinaz.com) 原文链接&#xff1a;最强反推更新&#xff01;Joy Caption Alpha One详细测评、在线免费使用 (chinaz.com) JoyCaption在一周前悄悄上线了最新版本Joycaption alpha one Joycaption alpha one免费在…

Python进阶:利用NotImplemented优化你的对象交互逻辑,让Python对象间的操作更加智能与灵活

推荐阅读&#xff1a;从混乱到清晰&#xff1a;用NotImplementedError重构你的Python代码&#xff0c;NotImplementedError如何助你打造更健壮的API NotImplemented 在Python中&#xff0c;NotImplemented并不是一个异常类&#xff0c;而是一个特殊的值&#xff0c;用于在二元…

linux桌面软件(wps)内嵌到其他窗口

程序测试环境是&#xff1a;slackware系统&#xff0c;属于linux系统&#xff0c;有桌面&#xff08;Xface Session&#xff09;。系统镜像是&#xff1a;slackware64-15.0-install-dvd.iso。qt、c代码实现。 程序功能&#xff1a;将已经打开的wps&#xff08;word、pdf等都可…

【优选算法】(第五篇)

目录 ⻓度最⼩的⼦数组&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 ⽆重复字符的最⻓⼦串&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 ⻓度最⼩的⼦数组&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - …

分割数组的最大值

题目链接 分割数组的最大值 题目描述 注意点 0 < nums[i] < 10^61 < nums.length < 10001 < k < min(50, nums.length) 解答思路 首先需要理解题意&#xff0c;需要将这个数组分成 k 个非空的连续子数组&#xff0c;找到划分组合中子数组和的最大值最小…

el-table+el-form实现表单校验和解决不垂直居中导致的问题

el-tableel-form实现表单校验 1.实现el-table的表单校验 关键点123 2.解决不垂直居中导致的问题 问题效果图 解决方案 .item-align-center {display: inline-flex; }

OJ在线评测系统 原生Java代码沙箱核心实现流程三 整理封装输出结果 拿到程序执行时间(stopwatch类) 和 运行内存

我们在之前的操作中已经拿到程序进行了编译和运行 接下来我们要将我们的结果输出 整理输出 // 4.收集整理输出结果 ExecuteCodeResponse executeCodeResponse new ExecuteCodeResponse(); ArrayList<String> outputList new ArrayList<>();for (ExecuteMessage…

Library介绍(一)

之前和大家介绍过cell delay是如何计算的。那么&#xff0c;本文将着重和大家介绍一些timing lib中的各个参数定义是什么意思。会分以下几个部分介绍&#xff1a;库属性描述、时序弧介绍、环境描述、单元描述。之前介绍的cell delay template就是单元描述中的一部分。本文主要介…

网络安全入门必备:这四点你做到了吗?

数据的鸿沟无疑是显而易见的&#xff0c;网络安全领域亟需熟练的专业人员。 组织在这方面投入巨大资金&#xff0c;但挑战依旧存在。 根据最新的研究&#xff0c;有64%的违规行为是导致机构过去一年收入损失及/或罚款的主要原因。 60%的组织在努力招聘网络安全人才&#xff…

【市场解读】新能源汽车换代问题

参考文献&#xff1a;百分点舆情中心《新能源汽车换代问题消费者情绪洞察报告》 行业背景 新能源汽车市场竞争加剧&#xff0c;车企不断推陈出新政府发布《汽车以旧换新补贴实施细则》&#xff0c;激励市场发展 *对汽车换代问题媒体关注度与网友讨论度高&#xff0c;正面声量…

电脑退域后系统黑屏

之前加入域时迁移了账号系统&#xff0c;导致退域后本地账号系统没了东西黑屏但能看到鼠标。也登不了域账号了一顿慌张&#xff08;操作如下&#xff09; 解决&#xff1a;又加回了域哈哈哈 重启电脑按F8进不去安全模式&#xff0c;找不到触发时间... winr打开运行&#xff0c;…