Keynote
本书的核心内容是介绍了一个轻量级的架构实践。 其中有两块相对比较重要的部分:
- 一块是C4草图
- 一块是基于组件的封装
C4 草图
常规的架构图是以组件的方式来进行描述!而本书通过上下文、容器、组件、以及类来进行描述。 实现的上层架构设计与下层类设计的打通。避免「墙上的架构图说的是一回事,而代码说的却是另一回事。」
- 上下文(Context): 描述系统与外部的交互
- 容器(Container): 描述高层次的技术选择、如何分担职责、如何通信
- 组件(Component): 描述容器内关键组件之间的关系(组件是类组成的逻辑群组)
- 类(Class): 面向对象系统里的最小结构单元。
基于组件的封装
一般我们按层进行代码的组织:
- Controller层
- Service层
- DAO层
这种封层模式无法体现业务或架构设计。
基于组件的封装可以体现架构设计:
- 将相同职责的类封装到同一个组件中
- 通过组件接口对外暴露接口
代码结构和架构设计结构保持一致,使得阅读代码即可得知架构设计。
架构设计过程
另外,架构设计过程遵循了标准流程:
- 捕捉需求并进行提炼
- 功能性需求
- 非功能性需求: 性能、可伸缩性、可用性、安全性、灾难恢复、可访问性、监测、管理、审计、灵活性、可扩展性、可维护性、法律法规、国际化、本地化…
- 应用约束: 应用各种原则和约束
- 技术约束: 可用技术清单、目标部署平台、内部知识产权、技术成熟度、过去的失败、供应商关系、开放源代码、现在系统的互操作性…
- 组织约束: 组织战略、组织政治…
- 人员约束: 团队大小、人员技能、扩展速度、资源支持…
- 开发原则: 编码标准和规范、自动化单元测试、静态分析工具…
- 架构原则: 分层策略、领域模型、高内聚低耦合、无状态组件、存储过程、业务逻辑的位置、会话使用、一致性保障…
- 做出决策: 做出设计决策