Модернизация
Как модернизировать живую контентную платформу, не выключая её
Миграции, которые выживают, скучные: публичный URL зелёный, редакторы публикуют, риск уезжает в пайплайн, который можно измерить. Миграции, которые становятся фольклором, — пятничные cut-over. Я работал первым видом — Sitecore на XM Cloud с headless Next.js, Umbraco и Magento в сторону Contentful и Vercel. Это метод, не питч вендора.
Инвентаризуйте истины, не шаблоны
Начните с того, что должно остаться верным в день любого публичного переключения: карта URL, метаданные, каноникалы, превью, доступ к закрытому контенту и интеграции, которые стреляют при публикации. Шаблоны — наименее важный артефакт. Их перерисуют. URL и связи контента — дорогие.
Считайте типы контента по тому, как их переиспользуют, а не по вложенности старого дерева. Клон двенадцатилетней папочной структуры CMS — как заплатить за новый стек и оставить старые проблемы.
Спроектируйте целевую модель до импортёра
Редакторы будут жить в новой модели годы. Если импортёру проще, когда каждое поле становится rich text, импортёр врёт. Назначьте хозяина каждого типа. Бесхозные поля становятся свалками.
Превью и локализация — часть модели, не сюрприз второй фазы. Headless в продакшене ломается, когда превью — «разберёмся потом».
Автоматизируйте перенос, затем измерьте потери
Одноразовый скрипт, который «в целом сработал на staging», — не миграция. Нужен пайплайн, который можно прогнать снова, с отчётом: сколько вошло, сколько вышло, какие поля потеряны, какие ссылки сломаны. Повторный прогон — как пережить то, что редакторы будут публиковать в старой системе до последнего дня.
Целостность — продуктовое требование. Бывали назначения, где ничего эффектнее, чем убедиться: в новую CMS приехали те данные, которые бизнес считает опубликованными.
Удавка, а не переключатель
Поставьте новый фронт на подмножество путей или трафика. Старая система отвечает за всё, что вы ещё не доказали. Редиректы — артефакт первого класса, не таблица, которую «добавят потом».
Откат должен быть сменой маршрутизации. Если откат — «восстановить базу и молиться, что кэш CDN истечёт», плана нет.
Не назначайте полный cut-over потому, что в плане программы красный milestone. Назначайте, потому что отчёт о расхождениях пуст настолько, что остаток — редакционный, не структурный.
Когда модернизировать не надо
Если ограничение — процесс поставки, отсутствие тестов или нет владельца продукта, новая CMS — очень дорогой способ оставить эти ограничения. Оставайтесь, сдерживайте, чините настоящее узкое место. Возраст стека — чувство. Срок поставки и частота инцидентов — нет.
Коротко
- Сначала URL, связи и процесс редактора, потом «хром».
- Повторяемые пайплайны с отчётом о потерях лучше героических одноразовых скриптов.
- Новый фронт в тени; откат — маршрутизация.
- Не клонируйте старое дерево в новую CMS из страха.
- Откажитесь от рерайта, если стек — не ограничение.