«После обновления всё сломалось» — самая частая история про старые CMS. Владельцы годами не обновляются из страха, и сайт остаётся с известными уязвимостями. Мы сделали обновление предсказуемой процедурой.
Почему обновления ломают сайты
В старых системах шаблоны, модули и собственные доработки лезут прямо в ядро: правят его файлы, зависят от внутренних функций, которые никто не обещал сохранять. Обновили ядро — доработки повисли в воздухе. Изменения базы данных применяются полуавтоматически, и если что-то пошло не так посередине, сайт в непонятном состоянии.
Как устроено у нас
- Версионируемый контракт. Плагины общаются с ядром только через открытый контракт, и он версионируется. Метод контракта нельзя убрать или переименовать: это сломает чужие плагины. Ядро внутри может меняться как угодно, плагинов это не касается.
- Автоматические миграции. Изменения базы применяются при запуске новой версии, по порядку и целиком. Не применились — старая версия продолжает работать.
- Тесты. Каждая функция ядра и контракта покрыта автоматическими проверками, которые прогоняются перед каждым релизом. Обновление, которое ломает существующее поведение, не выходит.
- Изоляция плагинов. Если плагин всё же несовместим с новой версией, он отключится один, а не уронит магазин.
Как это выглядит
Обновление — две команды на сервере, занимают минуту. Резервная копия перед ними — одна команда. Не понравилось — откат теми же командами. Никаких «мастеров обновления» на полчаса и молитв.