Моя компания разработала cms, но сейчас мы используем ее некоторое время и сталкиваемся с проблемой: все изменения напрямую связаны с живым окружением. Если вы хотите провести капитальный ремонт сайта, иногда вам нужно сначала выполнить всю работу, а затем сразу опубликовать все изменения на действующем сайте.
Сейчас я говорю о контенте, а не о среде разработки / тестирования / подготовки / производства для разработки программного обеспечения
Я видел несколько вариантов решения проблемы, но ни один из них не может полностью решить эту проблему:
- Использовать управление версиями: версия x работает на производстве, y находится на стадии подготовки;
- Используйте флаг черновика / публикации: весь черновой контент хранится отдельно от действующего сайта;
- Используйте две базы данных: одну для промежуточной среды, одну для живого.
У всех есть проблемы:
- Управление версиями проблематично для вновь созданных страниц (нулевая версия на производстве?) И изменений в карте сайта (для этого мы используем вложенный набор);
- Для черновиков невозможно создать вторую версию уже опубликованной страницы;
- Во второй базе данных вы должны скопировать / синхронизировать все данные, которые вы не хотите различать в двух местах: пользователи, группы пользователей, разрешения и т. Д.
Есть ли другие варианты? Желательно сделать это на уровне пользователя, чтобы пользователь A мог начать капитальный ремонт, а пользователь B по-прежнему мог публиковать новый контент. Но, возможно, это пока слишком сложно, и нам просто нужно решить первую проблему.
PS. Это приложение на php, ZF с серверной частью MySQL, но я думаю, это не имеет значения для архитектуры.