2024年最全从零开始学架构——架构设计的目的_什么时候做架构设计,附带学习经验

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 2)系统耦合严重,牵一发动全身,后续修改和扩展困难;
  • 3)系统逻辑复杂,容易出问题,出问题后很难排查和修复。

架构设计的误区

关于架构设计的目的,常见的误区有:“因为架构很重要,所以要做架构设计”,这是一句正确的废话,架构是很重要,但架构为何重要呢?
不做架构设计系统就跑不起来么?
其实不然,很多创业公司可能就没有架构设计,简单的讨论一下用户诉求就开始编码实现,只要功能能正常使用就可以了,也不会有很多用户量。
做了架构设计就能提升开发效率么?
也不尽然,实际上有时候最简单的设计开发效率反而最高的,架构设计毕竟需要投入时间和人力,这部分投入如果用来今早编码,项目也许会更快。
设计良好的架构能促进业务发展么?
好像有一定的道理,例如设计高性能的架构能够让用户体验更好,但反过来想,我们照抄微信的架构,业务就能达到微信的量级么?肯定不可能。

不是每个系统都需要做架构设计。如果生搬硬套业界其他公司已有的架构,有可能造成架构水土不服,或者运行起来特别扭的情况,最后往往需要不断重构,甚至无奈推倒重来。目前所在的公司做的一个项目强行引入某框架导致的后续问题不断,早期我就提出过这个框架的问题,后续框架问题不断,且问题难以定位,框架和代码耦合严重也难以扩展,已经达到了需要重做的地步。所以框架架构选型一定要根据实际情况来做,否则适得其反。

架构设计的真正目的

整个软件技术发展的历史,其实就是一部与“复杂度”斗争的历史,架构的出现也不例外。简而言之,架构也是为了应对软件系统复杂度而提出的一个解决方案,通过回顾架构产生的历史背景和原因,我们可以基本推导出答案:架构设计的主要目的是为了解决软件系统复杂度带来的问题

简单的复杂度分析案例

以学生管理系统,基本功能包括登陆、注册、成绩管理、课程管理等。首先需要识别复杂度在哪。

  • 性能:一个学校的学生大约1~2万人,学生管理系统的访问频率并不高,平均每天每个学生的访问次数平均不到1次,因此性能这部分并不复杂,存储用MySQL完全能够胜任,缓存可不用,Web服务器用Nginx绰绰有余。
  • 可扩展性:学生管理系统的功能比较稳定,可扩展的空间并不大,因此可扩展性也不复杂。
  • 高可用:学生管理系统即使宕机2小时,对学生管理工作影响并不大,因此可以不做负载均衡,更不用考虑异地多活这类复杂的方案。但是,如果学生的数据全部丢失,修复是非常麻烦的,只能靠人工逐条修复,这个很难接受,因此需要考虑存储高可靠,这里就有点复杂了。我们需要考虑多种异常情况:机器故障、机房故障,针对机器故障,我们需要设计MySQL同机房主备方案;针对机房故障,我们需要设计MySQL跨机房同步方案。
  • 安全性:学生管理系统存储的信息有一定的隐私性,例如学生的家庭情况,但并不是和金融相关的,也不包含强隐私,因此安全性方案只要:Nginx提供ACL(Access Control List)控制、用户账户密码管理、数据库访问权限控制。
  • 成本:由于系统简单,基本上几台服务器就能搞定,成本不高。
    整体架构如下,
    在这里插入图片描述
    学生管理系统虽然简单,但基本上能涵盖软件系统复杂度分析的各个方面,正所谓麻雀虽小但五脏俱全。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值