🛣
Пути назад нет или жизнь без Rollback
Недавно начал пробовать работать с новенькой, но очень амбициозной ORM
drizzle.И наткнулся на
тред с обсуждением, что drizzle генерирует только up миграцию. Люди начали сетовать, что у них нет down миграции, а значит они не могут роллбэкнуться.
Ответ автора заставил меня сильно задуматься: он говорит, что в целом, ему никогда не приходилось и чаще было намного сложнее и неправильнее роллбэкать, потому что все изменения (включая фиксы) должны накатываться поверх.
То есть, даже если вы хотите сделать rollback, это должна быть отдельная up миграция.
И знаете, я с ним согласен.
Чаще всего, чтобы иметь возможность реально сделать rollback, если произошла ошибка, нам приходится подготавливать кучу вещей (начиная с кодовой базы, заканчивая кучей особенностей в CI/CD пайплайнах), при этом, на практике, я помню единичные разы, когда это помогало, не ломая приложения и базу.
В 95% случаев, если ломался деплой или была вынесена неправильная версия, мы просто накидывали фиксов поверх, а не откатывали назад.
Это проще, чем реализация rollback, безопаснее и при этом крайне эффективно.
Поэтому, мой совет – проинвестируйте свои силы в то, чтобы создать условия для быстрого накатке фиксов при проблемной расскатке, а не в откатку деплоя.
Всем мощной прокачки 🦾