【架构】笔记二 | 架构设计的目的

原文地址:架构设计的目的

核心内容

  • 架构设计的核心是分析复杂度
  • 架构即是收益决策

首先要明白的是,架构就是一种设计,一种设计思想

架构设计常见误区

因为框架很重要,所以要做框架设计-》正确的废话

  • 不做框架设计系统就跑不起来么? 不然
  • 做了框架设计就能提高开发效率么? 不尽然
  • 设计良好的架构能促进业务发展么? 不好说

不是每个系统都要做框架设计吗-》知其然不知其所以然
公司流程要求系统开发过程中必须有架构设计-》舍本逐末
为了高性能、高可用、可扩展,所以要做框架设计-》画蛇添足

架构设计的真正目的

架构也是为了应对软件系统复杂度而提出的一个解决方案,通过回顾架构产生的历史背景和原因,我们可以基本推导出答案:架构设计的主要目的是为了解决软件系统复杂度带来的问题

明确了“架构设计是为了解决软件复杂度”原则后,很多架构上的困惑都可以很好回答。

“这么多需求,从哪里开始下手进行架构设计呢?”

  • ——通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计。

“架构设计要考虑高性能、高可用、高扩展……这么多高 XX,全部设计完成估计要 1 个月,但老大只给了 1 周时间”

  • ——架构设计并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出复杂点然后有针对性地解决问题。

“业界 A 公司的架构是 X,B 公司的方案是 Y,两个差别比较大,该参考哪一个呢?”

  • ——理解每个架构方案背后所需要解决的复杂点,然后才能对比自己的业务复杂点,参考复杂点相似的方案。

分析复杂度
分析复杂度
分析复杂度

当我们对任何一个系统无论是进行架构设计还是更改的时候,首先应识别其复杂度到底体现在哪里

基于系统业务应用场景分析复杂度,分析复杂度是为了跟系统业务应用场景相贴合。

案例分析

比如要搭建一个“学生管理系统”,分析复杂度

  • 性能:学校学生人数不多,访问频率不高,存储用 MySQL 完全能够胜任,缓存都可以不用,Web 服务器用 Nginx 绰绰有余。
  • 可扩展性:学生管理系统的功能比较稳定,可扩展的空间并不大,因此可扩展性也不复杂。
  • 高可用:学生管理系统即使宕机 2 小时,对学生管理工作影响并不大,因此可以不做负载均衡,更不用考虑异地多活这类复杂的方案了。但是,如果学生的数据全部丢失,修复是非常麻烦的,只能靠人工逐条修复,这个很难接受,因此需要考虑存储高可靠,这里就有点复杂了。我们需要考虑多种异常情况:机器故障、机房故障,针对机器故障,我们需要设计
    MySQL 同机房主备方案;针对机房故障,我们需要设计 MySQL 跨机房同步方案。
  • 安全性:学生管理系统存储的信息有一定的隐私性,例如学生的家庭情况,但并不是和金融相关的,也不包含强隐私(例如玉照、情感)的信息,因此安全性方面只要做
    3 个事情就基本满足要求了:Nginx 提供 ACL 控制、用户账号密码管理、数据库访问权限控制。
  • 成本:由于系统很简单,基本上几台服务器就能够搞定,对于一所大学来说完全不是问题,可以无需太多关注。

对应架构如下:

复杂度”可以简单理解成“成本”,“复杂度带来的问题”就是“成本收益难度”,而“分析复杂度”就是“成本收益分析”,也就是说架构设计的目的是为了“收益最大化

架构设计过程

架构即决策,收益决策
明确需求->分析复杂度->做出决策

知识复盘

架构设计核心是什么?

分析复杂度(成本收益分析)

架构设计的目的是什么?

解决复杂度的问题(成本收益难度)

小结

  • 架构设计是为了解决软件复杂度
  • 优秀的架构设计能更好地收益最大化
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值