At ZeroK, every time an issue occurred in our staging environment, we would manually reproduce the issue in the local development environment to debug. For this, we’d manually set up mocks to emulate the behavior of dependencies or update the local DB. Additionally, keeping these mocks up to date was a pain, especially as the dependent services are being continuously updated with rapid development cycles.
Sometimes, the error would be caused specifically by the behavior of a dependent service, and the reproduction would be harder. In these instances, we’d dig through logs to find the specific response or coordinate with the owner of the dependent service to understand the reason, which would further delay debugging.