zoukankan      html  css  js  c++  java
  • 架构设计目的是什么

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

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

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

    架构设计的真正目的

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    CPP流类库与输入输出
    STL学习之mismatch();
    谷歌浏览器现在点击任何文本都会出现光标
    jQuery删除元素remove和和empty的区别
    jQuery中的鼠标离开事件mouseout和mouseleave区别
    java类中的布尔(boolean&Boolean)类型字段要注意get方法和字段的命名
    Navicat_Premium_v15 激活
    navicat注册过期修改方法
    ClassNotFoundException找不到类异常的原因package 路径eclipse自动给我在路径前面加了一个java变成了java.com.XXX
    我保存一份博客园样式代码
  • 原文地址:https://www.cnblogs.com/whiteBear/p/15643853.html
Copyright © 2011-2022 走看看