美文网首页
架构设计流程:设计备选方案

架构设计流程:设计备选方案

作者: 空谷幽心 | 来源:发表于2018-08-05 16:01 被阅读97次

笔记

  • 成熟的架构师需要对已经存在的技术非常熟悉,对已经经过验证的架构模式烂熟于心,然后根据自己对业务的理解,挑选合适的架构模式进行组合,再对组合后的方案进行修改和调整。

  • 高可用的主备方案、集群方案,高性能的负载均衡、多路复用,可扩展的分层、插件化等技术,绝大部分时候我们有了明确的目标后,按图索骥就能够找到可选的解决方案。

  • 事实上方案的创新绝大部分情况下也都是基于已有的成熟技术。

  • 新技术都是在现有技术的基础上发展起来的,现有技术又来源于先前的技术。将技术进行功能性分组,可以大大简化设计过程,这是技术“模块化”的首要原因。技术的“组合”和“递归”特征,将彻底改变我们对技术本质的认识。

  • 第一种常见的错误:设计最优秀的方案。

  • 第二种常见的错误:只做一个方案。心里会简单地对几个方案进行初步的设想,再简单地判断哪个最好。
    弊端

    1. 心里评估过于简单,可能没有想得全面,只是因为某一个缺点就把某个方案给否决了,而实际上没有哪个方案是完美的,某个地方有缺点的方案可能是综合来看最好的方案。
    2. 架构师再怎么牛,经验知识和技能也有局限,有可能某个评估的标准或者经验是不正确的,或者是老的经验不适合新的情况,甚至有的评估标准是架构师自己原来就理解错了。
    3. 单一方案设计会出现过度辩护的情况,即架构评审时,针对方案存在的问题和疑问,架构师会竭尽全力去为自己的设计进行辩护,经验不足的设计人员可能会强词夺理。

    比较好的做法

    1. 备选方案的数量以 3 ~ 5 个为最佳。少于 3 个方案可能是因为思维狭隘,考虑不周全;多于 5 个则需要耗费大量的精力和时间,并且方案之间的差别可能不明显。
    2. 备选方案的差异要比较明显。例如,主备方案和集群方案差异就很明显,或者同样是主备方案,用 ZooKeeper 做主备决策和用 Keepalived 做主备决策的差异也很明显。但是都用 ZooKeeper 做主备决策,一个检测周期是 1 分钟,一个检测周期是 5 分钟,这就不是架构上的差异,而是细节上的差异了,不适合做成两个方案。
    3. 备选方案的技术不要只局限于已经熟悉的技术。设计架构时,架构师需要将视野放宽,考虑更多可能性。很多架构师或者设计师积累了一些成功的经验,出于快速完成任务和降低风险的目的,可能自觉或者不自觉地倾向于使用自己已经熟悉的技术,对于新的技术有一种不放心的感觉。就像那句俗语说的:“如果你手里有一把锤子,所有的问题在你看来都是钉子”。例如,架构师对 MySQL 很熟悉,因此不管什么存储都基于 MySQL 去设计方案,系统性能不够了,首先考虑的就是 MySQL 分库分表,而事实上也许引入一个 Memcache 缓存就能够解决问题。
  • 第三种常见的错误:备选方案过于详细。
    缺点

    1. 耗费了大量的时间和精力。
    2. 将注意力集中到细节中,忽略了整体的技术设计,导致备选方案数量不够或者差异不大。
    3. 评审的时候其他人会被很多细节给绕进去,评审效果很差。

    正确的做法是备选阶段关注的是技术选型,而不是技术细节,技术选型的差异要比较明显。

  • 架构师的技术储备越丰富、经验越多,备选方案也会更多,从而才能更好地设计备选方案。

理解与思考

  1. 有追求是好,但是不要被自己的追求带沟了去了,适可而止。
  2. 每个人都有局限性,不要轻易的否定一种方案。都保留下来,多做几个方案,即便这些方案看起来不够完美。
  3. 做备选方案的时候不要陷入细节。细节会妨碍大的方案的讨论和取舍。
  4. 各备选方案之间的差异要大一点。
  5. 多考虑下新技术。
  6. 成熟的项目不要轻易切换技术栈。成本太高。

课后思考题

  • 除了这三个备选方案,如果让你来设计第四个备选方案,你的方案是什么?

相关文章

  • 架构设计流程:设计备选方案

    笔记 成熟的架构师需要对已经存在的技术非常熟悉,对已经经过验证的架构模式烂熟于心,然后根据自己对业务的理解,挑选合...

  • 11 | 架构设计流程:设计备选方案

    架构设计第 2 步:设计备选方案 架构师的工作并不神秘,成熟的架构师需要对已经存在的技术非常熟悉,对已经经过验证的...

  • 11 | 架构设计流程:设计备选方案

    上一期我讲了架构设计流程第 1 步识别复杂度,确定了系统面临的主要复杂度问题后,方案设计就有了明确的目标,我们就可...

  • 【软件架构篇】复杂度来源

    架构设计的目的就是解决系统的复杂度。架构师首先需要识别出系统的复杂度,然后再针对性地给出备选方案,选择备选方案,进...

  • 架构设计流程

    第69篇 极客时间《从0开始学架构》课程笔记。 架构设计的流程(步骤)包括4步,首先识别复杂度,其次设计多个备选方...

  • 13 | 架构设计流程:详细方案设计

    完成备选方案的设计和选择后,我们终于可以长出一口气,因为整个架构设计最难的一步已经完成了,但整体方案尚未完成,架构...

  • 架构设计流程:评估和选择备选方案

    笔记 “360 度环评”!具体的操作方式为:列出我们需要关注的质量属性点,然后分别从这些质量属性的维度去评估每个方...

  • 12 | 架构设计流程:评估和选择备选方案

    上一期我讲了设计备选方案,在完成备选方案设计后,如何挑选出最终的方案也是一个很大的挑战,主要原因有: 每个方案都是...

  • 产品研发流程定义

    说明: 项管会参与需求研发全流程的跟进、沟通、资源协调; 架构师会参与需求可行性分析、架构设计、前后端技术方案设计...

  • 打造漂亮的流程设计-流程设计与交互工作3

    流程设计与架构设计的关系: 从0->1最困难,能完成产品就表示你成熟了. 着手点: 信息架构设计.->核心流程设计...

网友评论

      本文标题:架构设计流程:设计备选方案

      本文链接:https://www.haomeiwen.com/subject/drybvftx.html