Архитектура тестовой среды для CMS

Моя компания разработала cms, но сейчас мы используем ее некоторое время и сталкиваемся с проблемой: все изменения напрямую связаны с живым окружением. Если вы хотите провести капитальный ремонт сайта, иногда вам нужно сначала выполнить всю работу, а затем сразу опубликовать все изменения на действующем сайте.

Сейчас я говорю о контенте, а не о среде разработки / тестирования / подготовки / производства для разработки программного обеспечения

Я видел несколько вариантов решения проблемы, но ни один из них не может полностью решить эту проблему:

  1. Использовать управление версиями: версия x работает на производстве, y находится на стадии подготовки;
  2. Используйте флаг черновика / публикации: весь черновой контент хранится отдельно от действующего сайта;
  3. Используйте две базы данных: одну для промежуточной среды, одну для живого.

У всех есть проблемы:

  1. Управление версиями проблематично для вновь созданных страниц (нулевая версия на производстве?) И изменений в карте сайта (для этого мы используем вложенный набор);
  2. Для черновиков невозможно создать вторую версию уже опубликованной страницы;
  3. Во второй базе данных вы должны скопировать / синхронизировать все данные, которые вы не хотите различать в двух местах: пользователи, группы пользователей, разрешения и т. Д.

Есть ли другие варианты? Желательно сделать это на уровне пользователя, чтобы пользователь A мог начать капитальный ремонт, а пользователь B по-прежнему мог публиковать новый контент. Но, возможно, это пока слишком сложно, и нам просто нужно решить первую проблему.

PS. Это приложение на php, ZF с серверной частью MySQL, но я думаю, это не имеет значения для архитектуры.


person Jurian Sluiman    schedule 21.06.2011    source источник


Ответы (3)


Существует еще одна стратегия - иметь отдельный репозиторий для управления контентом, из которого контент публикуется в различных средах доставки контента. (Итак, 3 базы данных, а не две.)

Это архитектура, используемая SDL Tridion, и я по собственному опыту знаю, что она очень эффективна. Я уверен, что есть и другие системы WCMS, которые работают подобным образом, хотя единственная, что сразу приходит в голову, - это Bricolage.

person Dominic Cronin    schedule 20.11.2011

Для этого можно использовать относительные ссылки или добавить префикс к ссылкам на основе значения в файле конфигурации сайта.

person Shiraz Bhaiji    schedule 22.06.2011

Прошло много времени, но теперь у нас есть многоступенчатая CMS, которая работает следующим образом. Дерево производства и постановки двоякое. При установке вложенного набора мы можем хранить несколько деревьев в одной базе данных. Страница в производстве связана с подготовкой с помощью UUID.

Само содержимое управляется с помощью управления версиями, где таблица управления версиями содержит все версии, а таблица сущностей - производственную версию. Управление версиями (для постановки), таким образом, на несколько шагов впереди производственной версии. Таким образом, мы также можем реализовать автосохранение для текстовых блобов (это просто другая версия).

person Jurian Sluiman    schedule 31.10.2012