本章导读
问题1:软件架构都有哪几种
问题2:业务能力模式
问题3:子域模式
问题4:限界上下文
软件架构
软件架构的定义
4+1视图
软件架构为什么这么重要
架构风格
分层式架构风格-逻辑视图
1. 定义
2. 例子
3. 缺点
六边形架构-逻辑视图
单体架构-实现视图
微服务架构-实现视图
1. 微服务架构强加的一项关键约束是松耦合
2. 什么是服务?
3. 微服务架构中的服务
4. 什么是松耦合
5. 服务的大小并不重要
为应用程序定义微服务架构
三步走
第一步:将应用程序的需求提炼为各种关键请求
第二步:确定如何分解业务。一般是两种方法,一种源于业务架构学派的策略是定义与业务能力相对应的服务。另一种是围绕领域驱动设计的子域来分解和设计服务
第三步:确定每个服务的API及服务间的通信方式
第一步:定义系统操作(做什么)
1. 创建抽象领域模型
2. 定义系统操作
有以下两种类型的系统操作
命令型规范
第二步:定义服务
第一种方式:根据业务能力进行服务拆分
1. 业务能力的定义
2. 业务能力的作用
3. 识别业务能力
4. 从业务能力到服务
第二种方式:通过子域进行服务拆分
1. 子域
2. 限界上下文
3. 例子
拆分的指导原则
1,单一职责原则
2. 闭包原则
拆分单体应用为服务的难点
1. 网络延迟
2. 同步进程间通信导致可用性降低
3. 在服务之间维持数据一致性
4. 获取一致的数据视图
5. 上帝类阻碍了拆分
定义服务API