Keynote

原件地址

本书的核心内容是介绍了一个轻量级的架构实践。 其中有两块相对比较重要的部分:

  • 一块是C4草图
  • 一块是基于组件的封装

C4 草图

常规的架构图是以组件的方式来进行描述!而本书通过上下文、容器、组件、以及类来进行描述。 实现的上层架构设计与下层类设计的打通。避免「墙上的架构图说的是一回事,而代码说的却是另一回事。」

  • 上下文(Context): 描述系统与外部的交互
  • 容器(Container): 描述高层次的技术选择、如何分担职责、如何通信
  • 组件(Component): 描述容器内关键组件之间的关系(组件是类组成的逻辑群组)
  • 类(Class): 面向对象系统里的最小结构单元。

基于组件的封装

一般我们按层进行代码的组织:

  • Controller层
  • Service层
  • DAO层

这种封层模式无法体现业务或架构设计。

基于组件的封装可以体现架构设计:

  • 将相同职责的类封装到同一个组件中
  • 通过组件接口对外暴露接口

代码结构和架构设计结构保持一致,使得阅读代码即可得知架构设计。

架构设计过程

另外,架构设计过程遵循了标准流程:

  • 捕捉需求并进行提炼
    • 功能性需求
    • 非功能性需求: 性能、可伸缩性、可用性、安全性、灾难恢复、可访问性、监测、管理、审计、灵活性、可扩展性、可维护性、法律法规、国际化、本地化…
  • 应用约束: 应用各种原则和约束
    • 技术约束: 可用技术清单、目标部署平台、内部知识产权、技术成熟度、过去的失败、供应商关系、开放源代码、现在系统的互操作性…
    • 组织约束: 组织战略、组织政治…
    • 人员约束: 团队大小、人员技能、扩展速度、资源支持…
    • 开发原则: 编码标准和规范、自动化单元测试、静态分析工具…
    • 架构原则: 分层策略、领域模型、高内聚低耦合、无状态组件、存储过程、业务逻辑的位置、会话使用、一致性保障…
  • 做出决策: 做出设计决策