笔记
架构设计的主要目的是为了解决软件系统复杂度带来的问题。
-
如何入手做架构设计。几个参考点:
- “这么多需求,从哪里开始下手进行架构设计呢?”
通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计。 - “架构设计要考虑高性能、高可用、高扩展……这么多高 XX,全部设计完成估计要 1 个月,但老大只给了 1 周时间”
架构设计并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出复杂点然后有针对性地解决问题。 - “业界 A 公司的架构是 X,B 公司的方案是 Y,两个差别比较大,该参考哪一个呢?”
理解每个架构方案背后所需要解决的复杂点,然后才能对比自己的业务复杂点,参考复杂点相似的方案。
- “这么多需求,从哪里开始下手进行架构设计呢?”
为了证明自己的技术牛,可能会陷入贪大求全的焦油坑而无法自拔。
-
分析系统复杂度的几个角度:
- 性能。访问量或请求量大不大。(用户群大不大,访问频率高不高。)
- 高可用性。系统宕机时间长短影响如何,数据丢失影响如何。
- 可扩展性。功能是否稳定,新需求是否比较多。
- 安全性。安全级别有多高,控制手段有哪些。
- 成本。客户的成本投入有多少,能否承受得住设计的开销。
理解与思考
- 任何系统都有架构。
即便再简单或粗糙的系统都有架构,软件系统天然具备架构属性。重点是“设计”。“设计”是用来增强效用、减少成本和降低复杂度的手段。 - 怎么做架构,从哪里入手,要考虑哪些方面。
先分析和理解需求,从性能、高可用行、可扩展性、安全和成本几个方面找出系统的复杂性所在,然后针对复杂性做一些设计,优化效用,降低复杂性。 - 思考题 请按照“架构设计的主要目的是为了解决软件复杂度带来的问题”这个指导思想来分析一下你目前的业务系统架构,看看是否和你当时分析的结果一样?
我目前参与的项目,是数据分析和评估类的。系统对性能要求高,因为数据量很大。另外可扩展性要求也挺高,新需求总是做不完。领导和客户都希望新需求能够快速交付。