微服务设计:测试

单元测试通常只测试一个函数和方法调用。
单元测试对于代码重构非常重要,因为我们知道,如果不小心犯了错误,这些小范围的测试能很快做出提醒,这样我们就可以放心地随时调整代码。
运行端到端测试需要部署多个服务。显然,这种测试可以覆盖更大的范围,也让我们对系统的正常工作更有信心。另一方面,这种测试运行起来比较慢,定位失败也更加困难。
包含在测试中的服务数量越多,测试就会越脆弱,不确定性也就越强。如果测试失败以后每个人都只是想重新运行一遍测试,然后希望有可能通过,那么这种测试是脆弱的。不仅这种涉及多个服务的测试很脆弱,涉及多线程功能的测试通常也会有问题,测试失败有时是因为资源竞争、超时等,有时是功能真的被破坏了。
使用蓝/绿部署时,我们会部署两份软件,但只有一个接受真正的请求。
实施蓝/绿部署有几个前提条件。首先,你需要能够切换生产流量到不同的主机(或主机集群)上。切换可以通过改变DNS条目,或更改负载均衡的配置。你还需要提供足够多的主机,以支持并行运行两个版本的微服务。如果你正在使用一个弹性云提供商,这个要求对你来说可能很简单。使用蓝/绿部署可以降低风险,也让你有能力在遇到问题时尽快恢复。如果做得足够好,整个过程可以完全自动化,在无需人工干预的情况下完整地部署或恢复。
保持旧版本运行,除了给予我们在切换生产流量前可以测试服务这个好处外,还可以大幅度地减少发布软件所需要的停机时间。使用某些生产流量重定向的机制时,我们甚至可以做到在用户无感知的情况下进行版本切换,达到零宕机部署。
posted @ 2023-07-06 21:24  wtzhang  阅读(7)  评论(0编辑  收藏  举报