博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
架构设计流程
阅读量:4134 次
发布时间:2019-05-25

本文共 1491 字,大约阅读时间需要 4 分钟。

 

架构设计流程

    1、识别复杂度
        将主要的复杂度问题列出来,然后根据业务、技术、团队等综合情况进行排序,优先解决当前面临的主要复杂度问题
        如果想一次性解决所有问题面临如下问题
            要做的事情太多,反而感觉无从下手
            设计方案本身太复杂,落地时间遥遥无期
            同一个方案要解决不同的复杂度,有的复杂度是互相矛盾的。例如:要提升系统可用性就需要将数据及时存储到硬盘上,而硬盘反过来又会影响系统吸能
        如果按照优先级解决复杂度,可能会出现解决了排在前面的复杂度后,解决后续复杂度方案需要将已经落地的方案推到重来,这个担忧理论上是可能的,但现实中机会是不可能出现的,原因在于软件系统的可塑性和易变性。对于同一个复杂度问题,软件系统的方能可以有多个,总可以挑出综合来看性价比最高的的方案,即使要推倒重来,新方案也必须要同时解决已经被解决的复杂度问题
    2、设计备选方案
        几种常见错误
            设计最优先的方案
                挑选适合自己业务、团队、技术能力的方案才是好方案,否则要么浪费大量资源开发了无用系统,要么无法实现
            只做一个方案
                弊端
                    心里评估过于简单,可能没有想的全面,只是因为某个缺点就把某个方案给否决了
                    架构师再牛,经验只是和技能也有局限,有可能某个评估的标准或者经验是不正确的,或者老的方案不适合新的情况
            备选方案过于详细
                弊端
                    耗费了大量时间和精力
                    将注意力集中到细节中,忽略了整体的技术设计,导致备选方案数量不够或者差异不大
                    评审时其他人会被很多细节给绕进去,评审效果很差
        方案选择
            备选方案的数量以3-5个为最佳;少于3个方案可能因为思维狭隘,考虑不周期;多于5个则需要耗费大量的精力和时间,并且方案之间的差别可能不明显
            备选方案的差异要比较明显;如主备方案和集群方案,或者zookeeper做主备决策和用keepalived做主备方案就很明显
            备选方案不要只是局限于已经熟悉的技术
            备选阶段关注的是技术选型,而不是技术细节,技术选型的差异要比较明显
    3、评估和选择备选方案
        几种指导思想:最简派、最牛派、最熟派、领导派
        选择方法:360度环评
            列出我们需要关注的质量属性点,然后分别从这些质量属性去评估每个方案,再综合选择当时情况的最优方案,整理出360度环评表
            方案质量属性点有:性能、可用性、硬件成本,项目成本,复杂度,安全性,可扩展性
            评估质量属性时,需要遵循架构设计原则合适原则和简单原则和演化原则,避免贪大求全,某个属性满足一定时期内业务发展就可以了
            如果某个质量属性和业务发展有关系,需要评估未来业务发展的规模,一种简单的方案是将当前规模乘以2~4即可
        面临选择几种看似正确但实际错误的做法
            数量对比法:简单地看哪个方案的优点多就选哪个;问题在于把所有质量属性的重要性等同,而没有考虑质量属性的优先级,如BAT方案成本不是问题,可扩展性和可用性成本要重要的多;但创业公司成本可能很重要
            加权法:每个质量属性给一个权重。问题在于无法客观地给出每个属性的权重得分
        正确做法:按优先级选择
            综合当期的业务发展情况、团队人员规模和技能、业务发展预测等因素,将质量属性按照优先级排序
    4、详细方案设计
        详细方案设计就是将方案涉及的关键技术细节给确定下来
        详细设计方案阶段可能遇到的一种极端情况就是在详细设计阶段发现备选方案不可行,一般情况下主要原因是备选方案设计时遗漏了某个关键技术或者或者质量属性。
        避免方式
            架构师不但要进行备选方案设计和选型,还需要对备选方案的关键细节有较深入的理解
            通过分步骤、分阶段、分系统方式,尽量降低方案复杂度
            如果方案本身就很复杂,那就采取设计团队的方式来进行设计,博采众长

转载地址:http://rmsvi.baihongyu.com/

你可能感兴趣的文章
C++ 调用json
查看>>
nano中设置脚本开机自启动
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>