架构设计流程

第69篇

极客时间《从0开始学架构》课程笔记。

架构设计的流程(步骤)包括4步,首先识别复杂度,其次设计多个备选方案,然后评估和选择备选方案,最后再细化选定的方案。

第 1 步:识别复杂度

  1. 架构设计的本质目的是为了解决软件系统的复杂性,所以设计架构时,首先就要分析系统的复杂性。
  2. 复杂度主要来源:“高性能”、“高可用”、“可扩展”、“低成本”、“安全”、“规模”等。大部分场景下,复杂度只是其中的某一个,少数情况下包含其中两个,不管有几个,都必须进行优先级排序。
  3. 排序方法:将主要的复杂度问题列出来,然后根据业务、技术、团队等综合情况进行排序,优先解决当前面临的最主要的复杂度问题。重点是根据业务和团队综合判断,不是单纯技术角度判断。
  4. 识别复杂度是一项挑战,因为原始的需求中并没有哪个地方会明确地说明复杂度在哪里,需要架构师在理解需求的基础上进行分析。
  5. 复杂度“排查法”:根据复杂度来源,结合实际业务需求逐条分析识别,根据峰值计算是否需要高性能、根据业务后果判断哪里需要高可用、是否需要可扩展、是否需要考虑安全、成本等等。

第 2步:设计备选方案

  1. 明确复杂度问题之后才能进行方案设计,成熟的架构师需要对已经存在的技术非常熟悉,对已经经过验证的架构模式烂熟于心,然后根据自己对业务的理解,挑选合适的架构模式进行组合,再对组合后的方案进行修改和调整。
  2. 因为可选的架构模式很多,所以组合的方案也多,如果再加入一些创新之后,相应的解决方案会更多,这个阶段比较容易犯错。常见错误有三种。
  3. 第一种错误:设计最优秀的方案。不能为了优秀而优秀。应该时刻提醒自己根据架构设计原则中“合适原则”和“简单原则“的要求,挑选合适自己业务、团队、技术能力的方案才是好方案。
  4. 第二种错误:只做一个方案。不能只做单一方案,但也不可能穷举所有方案。合理做法是:设计3个备选方案,备选方案差异要比较明显,备选方案不能只限于已经熟悉的技术。
  5. 第三种错误:备选方案过于详细。备选方案就是初级设计,不是最终方案,写得太细会耗费大量时间精力,并且会太关注细节,从而忽略整体技术设计。正确的做法是备选阶段关注技术选型,而不是技术细节,技术选型的差异要比较明显。

第 3 步:评估和选择备选方案

  1. 评估方法:“360 度环评”。具体操作方式:列出我们需要关注的质量属性点,然后分别从这些质量属性的维度去评估每个方案,再综合挑选适合当时情况的最优方案。
  2. 常见的方案质量属性点有:性能、可用性、硬件成本、项目投入、复杂度、安全性、可扩展性等。在评估这些质量属性时,需要遵循架构设计原则 1“合适原则”和原则 2“简单原则”。
  3. 基于环评结果可以进行各个方案的对比分析,但还是不能选定方案,因为没有哪个方案是完美的,极少出现某个方案在所有对比维度上都是最优的。
  4. 但也不能根据数量对比法、加权法进行方案的选择,因为数量对比未考虑质量属性的优先级,加权法无法客观地给出每个质量属性的权重得分。
  5. 正确的做法是按优先级选择方案。即架构师综合当前的业务发展情况、团队人员规模和技能、业务发展预测等因素,将质量属性按照优先级排序,首先挑选满足第一优先级的,如果方案都满足,那就再看第二优先级……以此类推。
  6. 备选方案的选择和很多因素相关,并不单单考虑性能高低、技术是否优越这些纯技术因素。业务的需求特点、运维团队的经验、已有的技术体系、团队人员的技术水平都会影响备选方案的选择。


    环评表示例

第 4步:详细方案设计

  1. 详细方案设计就是将最终确定的备选方案进行细化,使得备选方案变成一个可以落地的设计方案,将方案涉及的关键技术细节给确定下来。
  2. 详细设计方案里面其实也有一些技术点和备选方案类似。但实际上这里的技术方案选择是很轻量级的,我们无须像备选方案阶段那样操作,而只需要简单根据这些技术的适用场景选择就可以了。
  3. 详细设计方案阶段可能遇到的一种极端情况就是在详细设计阶段发现备选方案不可行,一般情况下主要的原因是备选方案设计时遗漏了某个关键技术点或者关键的质量属性。
  4. 如何避免:架构师不但要进行备选方案设计和选型,还需要对备选方案的关键细节有较深入的理解;通过分步骤、分阶段、分系统等方式,尽量降低方案复杂度;采取设计团队的方式来进行设计,博采众长。
  5. 典型的需要细化的设计点:数据库表如何设计?数据如何复制?主备服务器如何倒换?业务服务器如何写入消息?业务服务器如何读取消息?业务服务器和消息队列服务器之间的通信协议如何设计?
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容