从零学架构(三)


架构设计的本质

降低软件系统的复杂度

架构的方法论

面向模式软件架构

介绍

POSA系列开山之作,Jolt大奖图书。作者均为模式界大师级人物,编著多卷POSA图书。致力于架构领域的“设计模式”

核心思想

应用经过验证的成熟架构模式,列如MVC、Reactor等

核心问题

  1. 知道模式,但是不知道什么时候用哪个模式
  2. 太庞大且比较理论化
  3. 5卷本由不同作者完成,前后风格不完全一致

风险驱动软件架构

介绍

George Fairbanks在其著作Just Enough Software Architecture中将风险看做架构设计的核心,提出“风险驱动设计”的方法论、业务架构建模的技巧

核心思想

根据系统风险大小来设计软件架构

核心问题

风险是一种概率预判,“一切皆有可能”。建模部分本质是面向对象设计的建模过程

DDD和整洁架构

介绍

Eric Evans “领域驱动设计之父”,世界杰出软件建模专家。他创建了 Domain Language 公司,
致力于帮助公司机构创建与业务紧密相关的软件。2004 年提出,在全世界广为流传,但是在中国的
应用并不是很火。

核心思想

通过领域建模来完成架构设计和代码设计

核心问题

  1. DDD是可扩展架构的设计技巧,不是架构方法论
  2. DDD兼顾架构设计和方案设计,大部分人会搞混
  3. DDD、敏捷架构不关注存储和计算,只关注业务

面向复杂度软件架构

介绍

软件系统规模越来越大,数据结构和算法不再是主要问题,整个系统的结构成为首要问题。

核心思想

针对复杂度大的地方来设计软件架构,复杂度低的地方简单设计即可

设计要点

  1. 分析系统需求找出系统复杂的地方,然后设计方案
  2. 复杂度来源:高性能、高可用、高扩展、安全、成本等
  3. 方案套路:分库分表、缓存、集群、分片、微服务、DDD、异地多活等
  4. 设计原则:合适原则、简单原则、演化原则

设计步骤

小结

  • 架构设计的本质:降低软件系统复杂度
  • 架构设计方法论:面向模式、风险驱动、DDD和整洁架构、面向复杂度


文章作者: maybe
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 maybe !