• 架构设计目的是什么


    极客时间:《从 0 开始学架构》软件设计的目的

    关于架构设计的目的,常见的误区:

    • 因为架构很重要,所以要做架构设计
    • 不是每个系统都要做架构设计吗
    • 公司流程要求系统开发过程中必须有架构设计
    • 为了高性能、高可用、可扩展,所以要做架构设计

    架构设计的真正目的

    软件架构的出现有其历史必然性。20 世纪 60 年代第一次软件危机引出了“结构化编程”,创造了“模块”概念;20 世纪 80 年代第二次软件危机引出了“面向对象编程”,创造了“对象”概念;到了 20 世纪 90 年代“软件架构”开始流行,创造了“组件”概念。我们可以看到,“模块”“对象”“组件”本质上都是对达到一定规模的软件进行拆分,差别只是在于随着软件的复杂度不断增加,拆分的粒度越来越粗,拆分的层次越来越高。

    架构也是为了应对软件系统复杂度而提出的一个解决方案,通过回顾架构产生的历史背景和原因,我们可以基本推导出答案:架构设计的主要目的是为了解决软件系统复杂度带来的问题。
    这个结论虽然很简洁,但却是架构设计过程中需要时刻铭记在心的一条准则,为什么这样说呢?
    首先,遵循这条准则能够让“新手”架构师心中有数,而不是一头雾水。
    “这么多需求,从哪里开始下手进行架构设计呢?”

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

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

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

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

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

    其次,遵循这条准则能够让“老鸟”架构师有的放矢,而不是贪大求全。
    “我们的系统一定要做到每秒 TPS 10 万”

    ——如果系统的复杂度不是在性能这部分,TPS 做到 10 万并没有什么用。

    “淘宝的架构是这么做的,我们也要这么做”

    ——淘宝的架构是为了解决淘宝业务的复杂度而设计的,淘宝的业务复杂度并不就是我们的业务复杂度,绝大多数业务的用户量都不可能有淘宝那么大。

    “Docker 现在很流行,我们的架构应该将 Docker 应用进来”

    ——Docker 不是万能的,只是为了解决资源重用和动态分配而设计的,如果我们的系统复杂度根本不是在这方面,引入 Docker 没有什么意义。

    因此,针对不同的业务需求,可就以下几点进行考虑,确定重点与关注点
    性能,可扩展,(存储)高可用,安全性,成本,要求面面俱到的最终结果将是系统复杂,极大可能工程延期,无法完成

  • 相关阅读:
    java实现 n人过桥问题
    git:rebase的原理
    注解@ConfigurationProperties使用方法
    docker+mysql 更改配置后重启不了的解决方案
    docker+mysql 构建数据库的主从复制
    Linux 踩坑记
    OSS上传图片无法在线预览的解决方案
    Linux中du、df显示不一致问题
    zookeeper作配置中心(存储支付信息)
    @Configuration结合@Bean实现对象的配置
  • 原文地址:https://www.cnblogs.com/whiteBear/p/15643853.html
Copyright © 2020-2023  润新知