概述
原文地址:架构设计的目的
核心内容
- 架构设计的核心是分析复杂度
- 架构即是收益决策
首先要明白的是,架构就是一种设计,一种设计思想。
架构设计常见误区
因为框架很重要,所以要做框架设计-》正确的废话
- 不做框架设计系统就跑不起来么? 不然
- 做了框架设计就能提高开发效率么? 不尽然
- 设计良好的架构能促进业务发展么? 不好说
不是每个系统都要做框架设计吗-》知其然不知其所以然
公司流程要求系统开发过程中必须有架构设计-》舍本逐末
为了高性能、高可用、可扩展,所以要做框架设计-》画蛇添足
架构设计的真正目的
架构也是为了应对软件系统复杂度而提出的一个解决方案,通过回顾架构产生的历史背景和原因,我们可以基本推导出答案:架构设计的主要目的是为了解决软件系统复杂度带来的问题。
明确了“架构设计是为了解决软件复杂度”原则后,很多架构上的困惑都可以很好回答。
“这么多需求,从哪里开始下手进行架构设计呢?”
- ——通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计。
“架构设计要考虑高性能、高可用、高扩展……这么多高 XX,全部设计完成估计要 1 个月,但老大只给了 1 周时间”
- ——架构设计并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出复杂点然后有针对性地解决问题。
“业界 A 公司的架构是 X,B 公司的方案是 Y,两个差别比较大,该参考哪一个呢?”
- ——理解每个架构方案背后所需要解决的复杂点,然后才能对比自己的业务复杂点,参考复杂点相似的方案。
分析复杂度
分析复杂度
分析复杂度
当我们对任何一个系统无论是进行架构设计还是更改的时候,首先应识别其复杂度到底体现在哪里
基于系统业务应用场景分析复杂度,分析复杂度是为了跟系统业务应用场景相贴合。
案例分析
比如要搭建一个“学生管理系统”,分析复杂度
- 性能:学校学生人数不多,访问频率不高,存储用 MySQL 完全能够胜任,缓存都可以不用,Web 服务器用 Nginx 绰绰有余。
- 可扩展性:学生管理系统的功能比较稳定,可扩展的空间并不大,因此可扩展性也不复杂。
- 高可用:学生管理系统即使宕机 2 小时,对学生管理工作影响并不大,因此可以不做负载均衡,更不用考虑异地多活这类复杂的方案了。但是,如果学生的数据全部丢失,修复是非常麻烦的,只能靠人工逐条修复,这个很难接受,因此需要考虑存储高可靠,这里就有点复杂了。我们需要考虑多种异常情况:机器故障、机房故障,针对机器故障,我们需要设计
MySQL 同机房主备方案;针对机房故障,我们需要设计 MySQL 跨机房同步方案。 - 安全性:学生管理系统存储的信息有一定的隐私性,例如学生的家庭情况,但并不是和金融相关的,也不包含强隐私(例如玉照、情感)的信息,因此安全性方面只要做
3 个事情就基本满足要求了:Nginx 提供 ACL 控制、用户账号密码管理、数据库访问权限控制。 - 成本:由于系统很简单,基本上几台服务器就能够搞定,对于一所大学来说完全不是问题,可以无需太多关注。
对应架构如下:
“复杂度”可以简单理解成“成本”,“复杂度带来的问题”就是“成本收益难度”,而“分析复杂度”就是“成本收益分析”,也就是说架构设计的目的是为了“收益最大化”
架构设计过程
架构即决策,收益决策
明确需求->分析复杂度->做出决策。
知识复盘
架构设计核心是什么?
分析复杂度(成本收益分析)
架构设计的目的是什么?
解决复杂度的问题(成本收益难度)
小结
- 架构设计是为了解决软件复杂度
- 优秀的架构设计能更好地收益最大化
最后
以上就是含糊云朵为你收集整理的【架构】笔记二 | 架构设计的目的核心内容架构设计常见误区架构设计的真正目的案例分析架构设计过程知识复盘小结的全部内容,希望文章能够帮你解决【架构】笔记二 | 架构设计的目的核心内容架构设计常见误区架构设计的真正目的案例分析架构设计过程知识复盘小结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复