软件开发中的决策:权衡与取舍
上QQ阅读APP看书,第一时间看更新

2.1.1 添加新需求导致的代码重复

完成上述两个服务的开发后,紧接着来了一个新需求:为这两个HTTP接口添加授权功能。两个团队的首选方案都是在自己的代码库中实现授权组件。图2.3展示了新的架构设计。

图2.3 新的架构设计

两个团队各自开发、维护一个类似的授权组件。然而,两个团队的工作依旧是相互独立的。

请注意,介绍这个场景时,我们使用了基于令牌的简化版认证,该方案容易遭到流量回放攻击,因此不建议在生产系统中使用。本章中我们使用简化版认证做介绍是为了避免将我们希望介绍的主要内容复杂化。安全很重要,这一点再怎么强调也不为过。如果每个团队都各使用一套方案,保障好安全的概率是非常低的。从避免安全事故角度出发,虽然开发一个共享库的周期更长,但它带来的优势是很明显的。