Приветствую! Недавно возник вопрос про обработку данных в приложении. Поделитесь своим опытом, что вы в таком случае делаете.
1. Например нам нужно добавить какие-то данные в существующей таблице, предположим колонку, и на основании сложных вычислений (которые невозможно просто описать простым SQL запросом) проставить там данные. Для примера, представим, что нужно с помощью внешнего сервиса проставить - доступен ли email адрес пользователя который указан в его профиле.
2. Нам нужно запустить обработку всех картинок хранящихся на сайте, и сделать ресайз в новом разрешении (база даных вообще не участвует в этом случае, предположим).
Обычно я бы сделал это создав скрипт миграции, прокинул бы в него необходимые сервисы, при деплойменте скрипт бы отработал, в таблицу миграций была необходимая запись и цель была бы достигнута.
Но встретил непонимание коллег которые уверены в том, что единая ответственность миграций это вносить изменения в схему баз данных, а никак не в сами данные, и тем более уж не запускать какую-то обработку картинок которая к базе данных не имеет прямого отношения.
Во время дискуссии пришли к тому, что надо сделать CLI команду, которая бы запустилась один раз после деплоймента данных, внесла изменения и во время следующего деплоя ее выпилить, чтобы больше не запускалась, либо предусмотреть механизм как в миграциях - запись в таблицу информации о том, что команда уже запустилась.
Для меня это выглядит так, будто мы переизобрели механизм миграций, только назвали их не-миграциями.
У меня нет цели отстоять свою точку зрения, а скорее разобраться в вопросе. Как это принято делать у вас в проекте.
Разработка ведется на php, на одном из фреймворков. Но вопрос релевантен для любого стека.
Возможно есть статьи или книги которые описывают лучшие практики с вашей точки зрения, можете поделиться названием/ссылкой.
Спасибо.