架构设计方法初探

作者 : 开心源码 本文共1457个字,预计阅读时间需要4分钟 发布时间: 2022-05-11 共81人阅读
作者 陈彩华文章转载交流请联络 caison@aliyun.com

架构设计

  最近学习了阿里资深技术专家李运华的架构设计教程,颇有收获,总结一下。

本文主要详情架构设计的相关概念,系统复杂度的来源,架构设计的基本准则和流程。

1 基本概念和目的

架构设计的基本概念和目的

  架构设计的目的
  是为理解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具有高性可以、高可使用、高扩展等特点,而是要识别出实际业务实际情况的复杂点,而后有有针对性地处理问题,即:有的放矢,而不是贪大求全,即:

  • 确定系统边界。确定系统在技术层面上的做与不做。
  • 确定系统内板块之间的关系。确定板块之间的依赖关系及板块的宏观输入与输出。
  • 确定指导后续设计与演化的准则。使后续的子系统或者板块设计在一个规定的框架内继续演化。
  • 确定非功可以性需求。非功可以性需求是指安全性、可使用性、可扩展性等。

  在实际情况中,不肯定每个系统都要做架构设计,需要结合实际情况。有时候最简单的设计开发效率反而是最高的,架构设计毕竟要投入时间和人力,这部分投入假如使用来尽早编码,项目也许会更快。

2 架构设计复杂度来源

高性可以

高性可以

高可使用

高可使用

可扩展性

可扩展性

低成本、安全、规模

低成本、安全、规模

3 架构设计三准则

架构设计三准则

合适准则

  GFS为何在Google诞生,而不是在Microsoft诞生,其中Google有那么庞大的数据是一个主要因素,而不是由于Google的工程师比Microsoft的工程师更加聪明。

  真正优秀的架构都是企业在当前人力、条件、业务等各方面束缚条件下设计出来的,可以够正当地将资源整合一起并发挥出最大功效,并且可以迅速落地。这也是很多BAT出来的架构师到了小公司或者者创业团队反而做不出成绩的起因,由于没有大公司的平台、资源、积累,只是生搬硬套大公司的做法,失败的效率非常高。

简单准则

软件领域的复杂性

  无论是结构的复杂性还是逻辑的复杂性,都会存在各种问题,所以架构设计时假如简单方案和复杂的方案都能满足需求,最好选择简单的方案。《UNIX编程艺术》总结的KISS(Keep It Simple,Stupid!)准则一样适使用于架构设计。

演化准则

  对于软件系统来说,变化才是主题。软件架构需要根据业务的发展而不断变化。
  假如没有把握“软件架构需要根据业务发展不断变化”这个本质,在做架构设计的时候就很容易陷入一个误区:试图一步到位设计一个软件架构,期望不论业务如何变化,架构都稳如磐石。

  为了实现这样的目标,要么照搬业界大公司公开发表的方案;要么投入庞大的资源和时间来做各种各样的预测、分析、设计。无论哪种做法,后果都很显著:投入巨大,落地遥遥无期。更让人沮丧的是,就算跌跌撞撞拼死拼活终于落地,却发现很多预测和分析都是不靠谱的。

  实践中,架构师要提示自己不要贪大求全,遵循演化优于一步到位的准则,由于业务的发展和变化总是很快的,无论多牛的团队,都不可可以完美预测所有的业务发展和变化路径。实践中能参考如下建议:

  • 首先,设计出来的架构要满足当时的业务需要

  • 其次,架构要不断地在实际应使用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无使用的设计,使得架构逐步完善。

  • 第三,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等却能在新架构中延续。

4 架构设计的流程

架构设计的流程

参考资料:
从0开始学架构——李运华
架构蓝图–软件架构 “4+1” 视图模型
《阿里巴巴开发手册(详尽版)》

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 架构设计方法初探

发表回复