13.02.2024_
пресса

Git-ориентированная CMS: Что это и зачем?

Разработчики по всему миру сегодня полагаются на Git для управления исходным кодом. Повышение производительности, обеспечиваемое этой распределенной системой управления версиями, - всего лишь одна из причин, почему она оказала такое колоссальное влияние на мир разработки программного обеспечения.

К счастью, популярность Git можно расширить не только на управление исходным кодом. Он также может быть полезен при создании и управлении динамичным контентом в рамках CMS.

Управление контентом изначально попадало в ведение отдела маркетинга, но со временем все изменилось. Аудитория взаимодействует с вами на различных устройствах и различными способами, выходящими за рамки статического контента. Это означает, что разработка программного обеспечения и операционна деятельность также важны, как и создание и публикация контента. Современная CMS должна устраивать всех — от маркетологов до разработчиков.

Что такое Git-ориентированная CMS?

Когда традиционные CMS создавались для облегчения работы маркетологов, они были лишены гибкости, которая делает их удобными для разработчиков. Современные разработчики привыкли к процессам непрерывной интеграции и поставки (CI/CD), которые помогают повысить производительность рабочего процесса. Этот концепт, вытекающий из DevOps, создает непрерывный рабочий процесс, позволяя разработчикам и контент-менеджерам без проблем взаимодействовать, что существенно повышает производительность систем.

К сожалению, традиционные платформы CMS используют централизованные базы данных и службы хранения контента, которые не только ограничивают, но и диктуют общие возможности репозитория контента и CMS. С другой стороны, Git-based CMS может обеспечить гораздо более эффективное управление версиями всего контента и конфигурации, вместе с исходным кодом программного обеспечения.

Что отличает Git-based CMS?

Событийная многоблочная версионность

Традиционные платформы CMS имеют ограниченные возможности версионности для отдельных объектов. Они отслеживают графики отдельных объектов или полагаются на громоздкие структуры данных для отслеживания отношений.

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

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

Кстати, Git - это система версионирования на основе файлов. Хранение контента в виде файлов необходимо, и у файлового подхода есть несколько существенных преимуществ. Поскольку мы имеем дело с файлами, контент легко перемещать между средами (Dev, QA, Prod и т. д.) и мигрировать между системами. Гораздо проще интегрировать контент с другими системами сторонних производителей, такими как языковые переводы, электронная коммерция и маркетинговая автоматизация.

Распределенный репозиторий

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

Системы управления исходным кодом (SCM) позволяют группам разработчиков работать над единым кодовым базисом, не мешая друг другу. 

Централизованная система хорошо работает для небольших команд, но не подходит для крупных проектов. Одна централизованная система не может масштабироваться. Вот почему был создан Git, чтобы облегчить и сделать масштабируемым совместную работу нескольких команд разработчиков.

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

Git позволяет разработчикам иметь свои локальные и промежуточные репозитории, все происходящие от родительского репозитория. Это облегчает распределение разработчиков, упрощает параллельное выполнение и, что самое важное, распределяет версионирование и рабочий процесс, что делает возможным, быстрым и простым "перетекание" кода в эти независимые репозитории и обратно.

Тот же подход, которым разработчики используют для внесения и продвижения изменений в исходный код, может использоваться Git-ориентированной CMS для передвижения кода вперед и контента обратно между средами (Prod, QA, Staging, Dev и т. д.). Это также позволяет разработчикам работать локально и оставаться частью CMS. Это означает, что они могут использовать инструменты, которые им знакомы и нравятся, и не работать в изоляции. Лучший способ заставить разработчика полюбить CMS - это позволить им работать с CMS, не взаимодействуя напрямую с CMS.

Масштабируемая публикация контента

Механика Git делает публикацию контента действительно масштабируемой. Когда репозиторий установлен на определенной версии, каждый файл присутствует и находится в правильном состоянии для этой версии. По мере внесения коммитов в репозиторий, создается новая структура данных с изменениями для коммита. Ни на одной из предыдущих версий не предпринимается никаких действий, и она полностью неизменна.

Суть в том, что два репозитория на двух разных машинах с одним и тем же идентификатором коммита математически гарантировано будут одинаковыми. Это крайне полезный механизм для версионирования, но также огромная помощь при публикации. Git-based CMS  может публиковать контент на основе коммитов Git. Если вы хотите узнать, соответствует ли конечная точка на другом конце света тому, что вы ожидаете, вам нужно сравнить идентификатор(ы) коммита.

В сегодняшнем масштабируемом, глобально распределенном мире у вас может быть любое количество серверов. Вам нужны средства, чтобы убедиться, что они все синхронизированы. Внутренние механизмы Git предоставляют нам именно это. Git-based CMS будет иметь возможность масштабироваться географически через облачный сервис и в то же время гарантировать, что удаленные экземпляры последовательно работают с одной и той же версией контента и кода.

Branching

Стоимость инфраструктуры снизилась, а стоимость разработки продолжает расти. Балансировка затрат с объемом и скоростью инноваций — это главная проблема наших дней. Сегодня всё зависит от отличного DevOps. Чтобы действительно заработать, нужна возможность создавать ветви.

Разработчики и IT-специалисты давно поняли, что им нужно работать в командах, изолировать работу и контролировать порядок слияния работ в критический путь для ввода в эксплуатацию. Работа с CMS идет параллельно традиционному пути разработки, и в какой-то момент они сливаются, и последние несколько шагов зависят от CMS.

Факт в том, что сегодня нам нужна та же гибкость на всем пути через CMS и прямо до самого последнего этапа развертывания в продуктивную среду. Даже если большая часть вашей разработки находится вне CMS, вам по-прежнему нужно интегрироваться. И здесь ключевая роль принадлежит возможности ветвления.

Git поддерживает ветвление нативно, поэтому Git-based CMS позволяет авторам контента и разработчикам работать над функциями отдельно в каждому со своей ветвью, не мешая друг другу. Это позволяет им не только экспериментировать, но и быстро продвигаться вперед. Branching CMS на основе Git, может значительно повысить производительность.