上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2.2 增量变更
增量变更描述了软件架构的两个方面:团队如何增量地构建软件,以及如何部署它。
在开发过程中,允许小步、增量变更的架构更容易演进,因为对于开发人员来说,这意味着变化范围更小。对于部署而言,增量变更则涉及模块化水平、业务功能之间的耦合度,以及它们在架构中的映射。有如下用例。
假设有一个大型的小工具商家PenultimateWidgets(意为“倒数第二小工具”),其产品黄页背后采用了微服务架构和现代工程实践。其中一个功能是用户可以给不同的小工具评星打分。而PenultimateWidgets的其他服务也需要评分功能(例如客服代表、物流提供商评价等),所以它们都在复用这个星级评分服务。某天,该服务团队在现有功能的基础之上发布了一个新版本,新版本允许给出半星评分——一个微小而重要的升级。其他需要评分的服务不必强制升级,可以根据需要酌情跟进。PenultimateWidgets的DevOps实践包含了架构级监控,不仅可以监控各个服务,还可以追踪服务间路由。当运维团队观测到一段时间内没有任何人访问某个特定的服务时,他们会自动将该服务从系统中移除。
这就是一个在架构级别进行增量变更的例子:如有需要,新老服务可以并存。团队可以选择适当的时机(或按需)来进行迁移,老版本则会自动被当作垃圾回收。
增量变更的成功离不开一系列持续交付实践的配合。并不是所有情况下都需要这些实践,但它们通常相辅相成。我们将在第3章讨论如何实现增量变更。