У нас есть веб-сайт на основе Django, для которого мы хотели сделать часть контента (текстовой и бизнес-логики, такой как тарифные планы) легко редактируемой внутри компании , и поэтому мы решили хранить его вне кодовой базы. Обычно причина заключается в одном из следующих:
Это то, что нетехнические люди хотят редактировать. Одним из примеров является копирайтинг для веб-сайта - программисты готовят шаблон с текстом, который по умолчанию имеет значение «Lorem ipsum ...», а реальный контент позже вставляется в базу данных.
Это то, что мы хотим иметь возможность быстро менять без необходимости развертывания нового кода (что мы в настоящее время делаем два раза в неделю). Примером могут служить функции, доступные в настоящее время клиентам на разных уровнях ценообразования. Вместо того, чтобы жестко их кодировать, мы читаем их из базы данных.
Описанное решение является гибким, но есть некоторые причины, по которым оно мне не нравится.
Поскольку содержимое должно быть прочитано из базы данных, это приводит к снижению производительности .
Мы смягчаем это, используя схему кэширования, но это также добавляет сложности системе.
Разработчики, которые запускают код локально, видят систему в существенно другом состоянии по сравнению с тем, как она работает на производстве. Автоматизированные тесты также приводят систему в другое состояние. Ситуации, такие как тестирование новых функций на промежуточном сервере, также усложняются - если промежуточный сервер не имеет последней копии базы данных, он может неожиданно отличаться от производственного.
Мы могли бы смягчить это, периодически передавая новое состояние в хранилище (например, добавляя перенос данных), но это кажется неправильным подходом. Это?
Есть идеи, как лучше всего решить эти проблемы? Есть ли лучший подход для обработки контента, который я пропускаю?
Ответы:
Вы должны думать о редактируемом контенте как о полной функции .
Но вместо того, чтобы сделать контент редактируемым, вы могли бы сделать технарей частью вашего процесса разработки. Вместо разработки -> развернуть -> изменить данные, вы можете изменить данные -> разработать -> развернуть. Возможно, вы могли бы позаимствовать некоторые идеи у статических блоговых платформ, таких как Octopress .
источник
Это хорошая задача для ваших DevOps. :) Вы можете сделать следующее:
Можно автоматизировать все, кроме слияния с Chef или любым другим инструментом, поэтому это решение может быть удобным как для пользователей, так и для разработчиков и SQA.
источник
У нас была такая же ситуация. В итоге мы использовали следующие приложения Django:
Это не идеально, но дает вам все, что вам нужно:
Чтобы разработчики работали с теми же страницами, что и в производственной системе, если это действительно необходимо, экспортируйте их из производства в разработку и тестируйте с помощью приспособлений.
Концептуально, я думаю, что вы на правильном пути. Спросите себя, нужно ли вам реализовать собственное решение или вы можете жить с какой-то CMS. Плоские страницы - одна очень простая версия этого. Доступны более сложные CMS .
источник