我们的团队尝试找到一种方法来比较当前版本和新版本之间的 CPU 和内存使用情况。我找到了一些答案。
(1)使用负载均衡器
通过使用负载均衡器,我们可以将服务器分成两组。并通过将不同的版本部署到它们,我们可以对它们进行测试和测量。参考。https://cloud.google.com/architecture/application-deployment-and-testing-strategies
(2)我的建议
我认为如果我们可以将新功能部署到随机选择的服务器上,我们就不需要划分服务器。如果可能的话,我们可以通过分别收集随机选择的服务器的日志来了解 A/B 测试的结果。我认为这是可能的,但在 A/B 测试概念中找不到这种东西。
您能否给我一些建议,关于如何通过 a/b 测试检查 CPU 使用率,或者在 a/b 测试概念中如何称呼 (2)?
答案1
该链接中提到的 A/B 测试包括基于统计显著数量的用户交互做出的业务决策。例如,对于新闻出版物,当显示标题 A 和 B 时,哪个会获得更多点击。
您不太可能拥有大量后端实例,因此您可以随机抽样其利用率指标并了解正在发生的事情。当然,请对主机监控数据进行统计,看看分布情况如何。
还可以考虑使用金丝雀测试模式和各种滚动部署。将更改引入负载均衡器的一个后端。如果此更改未触发监控警报(包括 CPU 和内存警报),则逐步将其部署到其余后端。
由于这些测试涉及生产环境,因此需要验证版本是否与生产数据库和 API 兼容。通常在开发环境中完成,可能使用模拟的虚假数据。这些正确性测试与性能监控不同。
不幸的是,测试中的性能特征与生产并不完全相同。可以将生产复制或备份恢复到影子暂存环境,然后对真实数据进行测试。即使是作为单独的副本,这也有点冒险。最终用户不能看到任何生产副作用。生产可能包含敏感数据,从而带来合规风险。