Что такое Headless CMS (простыми словами)

Что такое Headless CMS (простыми словами)

Headless в переводе с английского значит «без головы». Под «головой» (head) в web-разработке понимают фронтэнд (frontend) – интерфейс системы, то есть та часть, с которой работает пользователь. Соответственно, Headless CMS – это система управления контентом, которая изначально проектируется без фронтенда, а только с API (программными интерфейсами для взаимодействия с внешними приложениями и сервисами).

Такой подход позволяет подключать к ядру Headless CMS любой frontend, на какой бы платформе он ни работал и на каком бы языке ни был написан. Мало того, такая система может работать одновременно с несколькими каналами дистрибуции, и везде вы будете управлять контентом фактически централизованно. Это свойство омниканальности.

Термины… нужно больше терминов

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

API – это программный интерфейс взаимодействия различных web-сервисов между собой. Простыми словами, это стандартизированный язык команд, которые понятны обеим сторонам / обеим программам, вне зависимости от того, на каком языке они написаны, какую внутреннюю логику обрабатывают.

CDN (Content Delivery Network) – сеть доставки контента. Это распределённая инфраструктура из серверов или целых ЦОДов, которая отвечает за хранение статического контента как можно ближе к пользователям. С одной стороны, экономится международный трафик (а он очень дорогой), а с другой – снижается время отклика страниц и повышается доступность сайтов для конечных потребителей. Чем масштабнее CDN, тем больше точек присутствия (обычно точки связываются с целыми регионами или с отдельными странами).

Генераторы статических сайтов (SSG) – это современные web-приложения (в качестве последних могут рассматриваться и приложения для мобильных устройств), которые могут предварительно комбинировать данные, участвующие в построении страниц, и создавать их готовые «статичные» копии. Иными словами – это новая реализация старого подхода (как с готовыми HTML-страницами, которые достаточно загрузить на хостинг). Примеры генераторов статичных сайтов: Gatsby, Next.js, Jekyll, Hugo, MkDocs и т.д.

Рендеринг – это процесс построения дерева DOM-объектов (всех объектов страницы, к которым нужно применить те или иные стили), чтобы браузер мог отобразить содержимое так, как это задумывалось. Рендеринг может быть серверным (пре-рендеринг), когда HTML-всех страниц заранее создаётся специальным программным обеспечением на сервере, или клиентским, когда за отрисовку всех элементов полностью отвечает браузер пользователя (тратятся дополнительные ресурсы и время).

Преимущества Headless CMS относительно классических CMS

Вот тут как раз и пригодятся обозначенные выше термины.

Классические CMS – это системы управления контентом, которые изначально спроектированы для работы с одним сайтом (с одним интерфейсом). Когда клиент запрашивает конкретную страницу, запрос перенаправляется web-серверу (например, Apache). Тот в свою очередь запускает выполнение динамического кода, например, скриптов PHP, и при необходимости обращается к серверу баз данных. Страница в реальности строится динамически (отсюда и понятие «динамические сайты) – из кусков HTML-кода, JavaScript-логики и данных, хранящихся в БД.

При каждом обращении страница перестраивается заново. На это тратится время и ресурсы сервера. Если сайт написан на JavaScript, рендеринг может осуществляться на стороне клиента (браузером), но при этом всё равно могут отправляться дополнительные запросы к базам данных, хранящимся на сервере.

Headless CMS работают преимущественно с генераторами статических сайтов и придерживаются архитектуры Jamstack. Интерфейс всех возможных страниц можно сгенерировать (отрендерить) заранее на сервере и готовый контент хранить в статичном виде на серверах CDN-провайдеров. Таким образом существенно сокращается время отрисовки страниц, так как браузерам или мобильным устройствам отдаётся уже статический контент, и время доставки, так как CDN-сервер расположен ближе всех к потенциальному клиенту.

Другие преимущества Headless CMS:

  • Омниканальность. Вы можете подключать к Headless CMS любое количество интерфейсов (фронтэндов). Это могут быть сайты, мобильные приложения, интерфейсы IoT-устройств и т.д. Нет никаких ограничений по количеству, ведь в любом случае они все будут обращаться к одному API.
  • Централизованная работа с контентом. Не нужно иметь несколько согласованных команд, которые будут работать каждая со своим наполнением. Вы можете оптимизировать штат настолько, насколько это будет действительно эффективно. Бонус – снижение расходов на оплату труда контент-менеджеров.
  • Изначальная ориентация на микросервисы (лучшее архитектурное решение для крупных продуктов корпоративного уровня). На микросервисы переходит всё больше и больше команд разработчиков. Но это не просто мейнстрим, это возможность лёгкого масштабирования разработки и упрощение работы (соответственно, снижение требований к уровню квалификации, что автоматически равно снижению расходов заказчиков).
  • Повышенная безопасность. Так как клиенты получают фактически статичный контент, вероятность взлома через прямые запросы к базам данных равна нулю.
  • Устойчивость к повышенным нагрузкам. Подключаясь к CDN, вы фактически используете распределённую сеть высокопроизводительного оборудования и широкие каналы доступа. Сеть CDN изначально рассчитана на высокие нагрузки. Её сложно атаковать или перегрузить запросами. Даже если отвалится один из узлов, остальные останутся в строю.
  • Высокая производительность. Статичный контент отдаётся быстрее, клиенты и поисковые системы остаются довольными. Причём, неважно – крупное у вас приложение корпоративного уровня или малостраничный сайт. Все они будут одинаково быстро открываться.
  • Лёгкость в обслуживании. Тут, конечно, всё зависит от опыта разработчиков. Но как минимум не потребуются отдельные специалисты по нагрузочному тестированию и по настройке балансировки серверов, если используются CDN.

Минусы Headless CMS

Headless CMS пока остаются инструментами для профессионалов. Как минимум для их интеграции и настройки понадобятся программисты.

Большинство продуктов на рынке рассчитано на работу крупных команд и не имеет русскоязычного интерфейса.

Headless CMS логично размещать в облаке, чтобы получить максимум доступности и гарантированное обслуживание запросов. А это повышенные расходы.

А еще такие CMS категорически не подходят для хобби-проектов (блоги, инфосайты и т.п.) – слишком сложная архитектура и внедрение.

Какие бывают Headless CMS

Условно Headless CMS можно разделить по нескольким критериям:

Открытость кода:

  • открытый;
  • закрытый (проприетарный).

Размещение:

  • свой сервер/инфраструктура;
  • облако (SaaS);
  • виртуальный контейнер (подходит для аренды проприетарного ПО и размещения его на своих мощностях).

Тип API:

  • RESTfull;
  • GraphQL;
  • Git-хранилища;
  • свой стандарт.

Кроме того, Headless CMS могут работать с плагинами/расширениями, предлагать готовые варианты интерфейсов или даже предоставлять специальные среды разработки.

Некоторые Headless CMS умеют работать не через API, а напрямую с базами данных, но это уже слабо соотносится с архитектурой Jamstack, хотя и подходит под определение «Headless».

Лучшие Headless CMS

На текущий момент на рынке представлено достаточное количество узкопрофильных CMS – более 50 вариантов. При этом между классическими CMS и Headless очень тонкая грань. С помощью специальных плагинов или просто за счёт реализации API обычная коробочная CMS легко превращается в «безголовую». Традиционно к Headless CMS относят только те движки, которые изначально ориентируются только на API. Ниже перечислены лучшие представители в отрасли.

Ghost – open-source Headless CMS с наибольшим количеством звёзд на GitHub

Ghost – open-source Headless CMS с наибольшим количеством звёзд на GitHub

Ghost – это лучший инструмент для крупных издательств с открытым исходным кодом. Проект зародился в 2013 году благодаря успешной кампании по сбору средств на Kickstarter. Сейчас эту CMS используют более 2,5 млн. клиентов. Есть PRO-редакция сервиса (облачная инфраструктура от разработчиков), её оборот превышает 3 млн. USD/год.

Ghost часто используют в нишевых проектах, например, инфосайты с моделью подписки, премиум-публикациями, платными рассылками и т.п.

Преимущества

Ghost легко устанавливается на собственный хостинг и интегрируется с типовыми решениями и сервисами. Например, есть готовые интеграции с социальными сетями, с видео-хостингами, с маркетинговыми и SEO-инструментами, с сервисами приёма платежей, email-рассылками и т.д. При желании можно арендовать готовую облачную инфраструктуру. Есть возможность работы с базами данных (по умолчанию SQLite или MySQL, но перечень легко расширяется). Готовые темы интерфейсов можно скачать или приобрести в специальном онлайн-магазине (если нет времени заниматься разработкой своих). Есть настольное приложение для управления контентом (поддерживаются все популярные операционные системы, включая Linux).

Недостатки

Для размещения этого ПО требуются хостинги с особой конфигурацией: с поддержкой Node.js и npm, или готовые docker-контейнеры, или VPS-серверы, которые придётся настраивать под себя. В любом случае – это нетиповой подход. Интерфейс админ-панели без поддержки русского языка. Сложная установка и настройка для неспециалистов.

Стоимость. Полностью бесплатно, если вы устанавливаете CMS на свой сервер. Доступ к готовой облачной инфраструктуре – от 29 USD/месяц.

Cockpit – система управления контентом, написанная на PHP

Cockpit – система управления контентом, написанная на PHP

Cockpit – одна из немногих Headless CMS, которые можно установить на классический shared-хостинг, где есть поддержка баз данных MySQL/ SQLite и языка программирования PHP. Иными словами, это решение, которое можно применять вне специализированных хостингов и собственных виртуальных серверов.

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

Преимущества

В отличие от многих конкурентов, Cockpit изначально поддерживает большое количество языков интерфейса, есть в перечне предустановленных и русский. Админ-панель проста и понятна в управлении. Есть поддержка мультиязычных сайтов (например, если нужен контент на разных языках для одной и той же страницы).

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

Недостатки

CMS Cockpit поддерживается всего одним программистом. Нет реализации готового облачного сервиса с высокой доступностью, всю инфраструктуру придётся организовывать самостоятельно. Пока есть только небольшое количество дополнений. Модели контента придётся настраивать самостоятельно (нет готовых интеграций для популярных решений).

Стоимость. Использование CMS бесплатное.

Sanity – качественный облачный сервис с бесплатным тарифом

Sanity – качественный облачный сервис с бесплатным тарифом

Sanity – это высокопроизводительное решение для команд разработчиков разного уровня. Подходит в том числе и для крупного энтерпрайза. Sanity будет особо интересна при коллективной работе редакторов/авторов: есть согласование изменений и версионирование, все изменения отображаются в реальном времени.

Сервис быстро интегрируется с существующими интерфейсами, для разработчиков предоставляется подробная документация. Несмотря на то, что проект существует с 2017 года, у него уже есть своё сложившееся сообщество и большое количество плагинов/дополнений.

Преимущества

Для более удобной работы с контентом предоставляется специальный инструмент с открытым исходным кодом – Sanity Studio (одностраничное приложение, написанное на JavaScript). Есть плагины и готовые интеграции с популярными сервисами/инструментами для разработки, а также масса примеров (стартовых проектов) и подробная документация.

Даже в бесплатном тарифе есть кэширование контента и доставка его через CDN. Многие лимиты – мягкие. Это значит, что, если вам недостаточно ресурсов, вы можете докупить их в необходимом объёме. Поэтому ценовую политику можно назвать очень гибкой.

Недостатки

Относительно сложная модель развёртывания: получается, что для работы с сервисом вам необходимо не просто иметь аккаунт в системе, но и установить на своём сервере CMS (Sanity Studio), которая будет обращаться с запросами к сетевой базе данных Sanity. При этом язык запросов (API) нестандартный – используется GROQ. Поддержку GraphQL можно добавить только после установки специального плагина.

Стоимость. Базовая подписка – бесплатная. Она включает в себя определённые квоты, например, по количеству пользователей (не более 3-х), запросам к API, дисковому пространству (5 Гб) и т.д. При необходимости их можно расширить. Но ряд лимитов задан жёстко, для их снятия или для расширения функционала нужно перейти на другой тарифный план – от 199 USD за проект в месяц + свои расширяемые лимиты.

Выводы

Headless CMS – это узкопрофильные решения, рассчитанные на нетиповые проекты и команды разработчиков. Без технических специалистов их не получится не только настроить, но и установить.

Современный рынок предлагает достаточное количество реализаций, но все они слабо коррелируются с типовым внедрением в малом бизнесе и в хобби-проектах. Это скорее энтерпрайз.

Многие клиенты предпочитают обратный путь, когда для расширения количества каналов доставки контента реализуется API у имеющейся классической CMS. Так получается дешевле, чем начинать всё сначала: от разработки интерфейсов до интеграции их с CMS, пусть и с Headless.

Тем не менее, в определённых ситуация внедрение Headless CMS более чем оправдано.

» Статьи » Что такое Headless CMS (простыми словами)