架构包含技术的选择,更多分层等于更高的复杂度,但是轻量级协同设计可以提高质量。最佳实践也是有使用条件限制的,面对架构要用于质疑。

系统的最大风险

外部接口是系统风险最高的部分之一。

- 关键的外部接口有哪些?接口的技术定义是什么?

- 哪些队列是通信组件?消息的格式是什么?

- 同步还是异步?异步连接是否有保障?能否乱序传输?

- 接口是否幂等?接口的可用性、性能、可伸缩性、安全性?

- 接口的所有权属?版本的升级处理?服务级别?

系统的常见风险

除了外部接口之外,其他的常见风险如下:

- 组件运行过慢

- 组件无法伸缩

- 关键组件崩溃

- 单点故障

- 数据被破坏

- 基础设施故障

- 磁盘满

- 新技术过于复杂

文档

架构需要以文档的方式回答质疑。

代码不会讲述完整的故事,轻量级文档来描述代码之外的问题,如

  • 这是关于什么的?希望能做什么?
  • 质量属性?约束?原则?
  • 软件架构?外部接口?
  • 数据(数据比软件本身更重要。)?
  • 基础设施架构?
  • 部署?运营和支持?
  • 决策日志
  • ……