架构设计的本质
降低软件系统的复杂度
架构的方法论
面向模式软件架构
介绍
POSA系列开山之作,Jolt大奖图书。作者均为模式界大师级人物,编著多卷POSA图书。致力于架构领域的“设计模式”
核心思想
应用经过验证的成熟架构模式,列如MVC、Reactor等
核心问题
- 知道模式,但是不知道什么时候用哪个模式
- 太庞大且比较理论化
- 5卷本由不同作者完成,前后风格不完全一致
风险驱动软件架构
介绍
George Fairbanks在其著作Just Enough Software Architecture中将风险看做架构设计的核心,提出“风险驱动设计”的方法论、业务架构建模的技巧
核心思想
根据系统风险大小来设计软件架构
核心问题
风险是一种概率预判,“一切皆有可能”。建模部分本质是面向对象设计的建模过程
DDD和整洁架构
介绍
Eric Evans “领域驱动设计之父”,世界杰出软件建模专家。他创建了 Domain Language 公司,
致力于帮助公司机构创建与业务紧密相关的软件。2004 年提出,在全世界广为流传,但是在中国的
应用并不是很火。
核心思想
通过领域建模来完成架构设计和代码设计
核心问题
- DDD是可扩展架构的设计技巧,不是架构方法论
- DDD兼顾架构设计和方案设计,大部分人会搞混
- DDD、敏捷架构不关注存储和计算,只关注业务
面向复杂度软件架构
介绍
软件系统规模越来越大,数据结构和算法不再是主要问题,整个系统的结构成为首要问题。
核心思想
针对复杂度大的地方来设计软件架构,复杂度低的地方简单设计即可
设计要点
- 分析系统需求找出系统复杂的地方,然后设计方案
- 复杂度来源:高性能、高可用、高扩展、安全、成本等
- 方案套路:分库分表、缓存、集群、分片、微服务、DDD、异地多活等
- 设计原则:合适原则、简单原则、演化原则
设计步骤
小结
- 架构设计的本质:降低软件系统复杂度
- 架构设计方法论:面向模式、风险驱动、DDD和整洁架构、面向复杂度