如何重播生产克隆上的Web请求以控制候选发布版?

mar*_*nza 5 ruby postgresql ruby-on-rails heroku

我有一个关键的Rails应用程序在生产中运行,具有相当标准的设置:Rails 5 API,Puma,PostgreSQL,Sidekiq,Heroku.我还有一个涉及风险数据库迁移和应用程序代码更改的分支.

我想将生产设置和数据克隆到专用的临时环境中,并且在繁忙的几个小时内,在两个环境中运行所有生产Web请求以控制此更改对数据的影响.

到目前为止我想到的事情:

  • 这不仅仅是关于重放数据库日志,因为更改发生在应用程序级别
  • 一些API请求在将来1分钟安排一些Sidekiq作业,因此理想情况下这也会实时触发作业
  • 如果这是在Heroku路由器或应用程序级别而不是更高的链(DNS,负载平衡器等)完成的话会很棒:我可以看到主应用程序中的Rake中间件镜像了对此生产克隆的所有请求,或after_action选择Rails控制器中的过滤器

我控制这些更改的一种方法是查看生产克隆引发的错误(应用程序错误和数据库回滚).