NK
(фишечка из старенького)
Одним из ключевых вопросов техподдержки является стабильный алгоритм воспроизведение бага, который надо передать разработчикам.
У кого-то это получается, у кого-то нет, а в некоторых случаях разработчики вообще встраивают в систему фундаментальную систему всеобъемлющих логов, по которым можно восстановить все действия пользователей, - удовольствие недешёвое, но полезное. Если команда упоролась, эта система логов ещё обладает возможностью откатывать действия, - фундаментально более дорогая разработка. Все эти варианты требуют постоянной ручной подпилки. Эдакий налог на разработку любого экшна в системе.
Одной из относительно дешёвых разработок, позволяющих помочь в воспроизведении проблемы является точечный дамп, извлекающие данные только одного пользователя и всех его артефактов.
Основной кейс использования дампов, - в дебаге системы на одном конкретно взятом пользователей. Чтобы его взять, очень удобно иметь инструмент по дампу его на продакшне и загрузке на тестовый стенд.
При поиске проблемы берём дамп пользователя, переносим его на стенд и далее играемся с ним на стенде до тех пор, пока не воспроизведём и исправим баг.
Как построить такую систему? Самый дешёвый способ, взять sql дамп вообще всей БД (обычно они очень тяжёлые) и тупо погрепать по колонке с
user_id
. Функционально такой греп можно запустить мгновенно (лучше всё же zgrep
, чтобы не распаковывать дамп), хотя и работать он будет много минут, дав в результате sql юнит-дампНа таких "грепах" можно выстроить небольшой mvp для дампа/загрузки на продакшн-тест-стейдж-дев средах, а позже, если такая система себя оправдает, можно запланировать полноценный функционал по работе с дампами, к которой уже прикручивать обезличивание дампов, архивирование, версионирование и тд и тп.
В геймдеве таким балуются при подготовке перед бета-тестированием новых сложных фичей в pvp с десятком VIP пользователей, выявляя порой самые неожиданные баги.