上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
谎言 3:部署众多小型服务比部署整个应用更安全
“回滚”是现代软件工程需要面对的现实。作为工程师,当你部署的代码会破坏某些功能时,必须回滚部署并还原提交。没有人想要回滚——尤其是部署代码的工程师。但是,好的公司知道错误的部署总有可能出现,因此必须对其进行管理。
微服务架构的一个观点是,部署多个独立服务比部署整个应用更安全。当一项服务中断时,其他服务还有回退可用。整个应用程序将继续运行,客户不会有什么感觉。
这种方法存在多个问题。
首先,这要假设你的服务可以容忍其他任何服务的随机消失。这是Netflix的“Chaos Monkey”方法。但是,将其构建到服务中并非易事,测试它需要资源,并且除非这是工程的最优先事项,否则实践中人们多大程度上会遵守这一要求就不一定了。
其次,部署多服务功能时,服务的上线时间会有所不同。在一段时间里,你的那些服务将有不同的版本。对此有多种处理方法。你是否在半夜部署?你是否并行维护不同的API版本?你是否使用托管流?所有解决方案都需要额外的工程资源。如果部署意外破坏了(甚至不是部署的一部分)服务中的状态,会发生什么情况?你是否有针对任何意外情况的预案?
虽然单体部署也会出错,但是有多种方法可以缓解这种情况(蓝色 / 绿色、金丝雀等等)。虽然这些方法也可用于微服务,但是设置和管理安全部署并非易事,应对一项服务总比应对多个服务要容易些。