Движок платформы Росток.Онлайн

GLS CMF

Фреймворк для управления контентом

Не готовая CMS, а основа, из которой собираются сайты. На нём целиком работают конструктор сайтов Росток.Онлайн ↗ и проекты, которые мы делаем на заказ. GLS CMF отдельно не поставляется: эта страница о том, как он устроен и почему именно так.

Главное решение

Ядро не знает, на каком фреймворке работает

Ядро описывает, что происходит, — контракты и сущности; как это делается, живёт отдельным слоем. Переезд на другой фреймворк меняет слой, а не бизнес-логику.

  1. Ядро

    Контракты и сущности

    правила предметной области

    не знает ни про базу, ни про HTTP, ни про шаблоны

  2. Мост · сегодня Symfony

    Реализации контрактов

    хранение, запросы, шаблоны

    заменяется целиком — ядро этого не замечает

  3. Приложение

    Росток.Онлайн

    модули, темы, содержимое

    то, что видит посетитель

каждый слой опирается на соседа слева и ничего не знает о тех, что справа

Мост сегодня

Почему мост построен на Symfony

Сменным слой делает архитектура. А выбрать для него лучшее из того, что есть, — наша работа. Сегодня это Symfony: фреймворк, на котором держатся большие и долгоживущие проекты.

Предсказуемость

Выпуски по расписанию

Версии выходят по публичному графику: новая — раз в полгода, крупная — раз в два года. Обновление планируется, а не случается.

Срок жизни

Долгая поддержка

У версий с долгосрочной поддержкой — три года исправлений и четыре года исправлений безопасности.

Совместимость

Обещание записано

Совместимость внутри крупной версии — не привычка, а опубликованное обязательство проекта.

Сообщество

На нём строят другие

Компоненты Symfony лежат в основе Drupal, Laravel и множества других проектов — их проверяет огромная аудитория.

Symfony — товарный знак Symfony SAS. GLS CMF не аффилирован с проектом Symfony.

Из чего собирается

Две единицы с разными задачами

Не «конструктор с плагинами»: модуль отвечает за содержимое страницы, бандл — за целую подсистему.

Модуль

Единица содержимого

Блок, из которого собирается страница: заголовок, галерея, карточки, форма. Объявляет собственные настройки, и редактор строит по ним поля сам — отдельный интерфейс писать не нужно.

Бандл

Единица поставки

Целая подсистема: блог, магазин, аналитика. Приходит со своими сущностями, экранами и модулями, объявляет себя манифестом и подключается без правки чужого кода.

Новая часть подключается сама

Система находит её при запуске: нет общего списка, в который надо не забыть дописаться, — и нет поломки от того, что забыли.

Темы поверх модулей

Оформление отделено от содержимого: тема переопределяет вид, не трогая логику блока.

События вместо связей

Подсистемы узнают о происходящем через события и не знают друг о друге напрямую.

Тот же принцип в действии

Как собирается страница

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

  1. Адрес

    что открыли

  2. Страница

    узел в дереве

  3. Макет

    из каких мест состоит

  4. Модули в местах

    • заголовок
    • галерея
    • форма
  5. Тема

    как это выглядит

Возможности

Что умеет из коробки

Это не список галочек — это то, что иначе пришлось бы писать под каждый проект заново.

Содержимое

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

Медиа

Хранилище за абстракцией — диск или объектное хранилище без правки кода. Обработка изображений, учёт использования файлов.

Работа в фоне

Долгие задачи уходят в очередь, регулярные — в расписание: посетитель не ждёт того, что можно сделать потом.

Много сайтов в одной установке

Каждый сайт живёт своей жизнью и не видит данных соседа. Разделение обеспечивает сам движок — не внимательность автора очередного модуля.

Страницы

Дерево страниц, макеты с местами для содержимого, переопределение вида на любом уровне.

Редактирование

Правка блока на самой странице, предпросмотр до публикации, черновики на сервере.

GLSoft — разработчик движка GLS CMF

Почему движку можно доверить сайт

Потому что он делается не «как получится», а по написанному заранее. Три правила, которые мы не нарушаем.

Сначала спецификация

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

Строгие типы и тесты на правила

ошибку ловит анализатор до запуска; договорённости стерегут тесты, а не память

Совместимость

обновление ядра не ломает собранные на нём сайты — иначе это не фундамент

Неудобный вопрос

Насколько это безопасно

Его задают сразу после «а что за система». Отвечаем без фокусов, включая ту часть, которая нам невыгодна.

Массовые атаки

Массовый перебор проходит мимо

Большинство взломов безадресны: робот перебирает сайты, ищет известную систему известной версии и пробует на ней готовый список дыр. Для системы, которой нет в этом списке, такого потока просто не существует.

Честная оговорка

Но закрытость — не защита

Она убирает очередь, а не риск: тому, кто придёт именно за вами, неизвестность системы не помешает. Защищает не она, а то, что выше на этой странице.

Ответственность

Одна система — один ответственный

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

Коротко

Три вопроса, которые задают всегда

Можно ли получить GLS CMF отдельно?

GLS CMF отдельно не поставляется: мы развиваем его сами и на нём же делаем сайты. Подробности — по договору.

Сайт останется управляемым, если мы перестанем работать вместе?

Да. Содержимым вы управляете сами в кабинете Росток.Онлайн, и то, что сделали мы, редактируется там же, как остальное.

Сколько стоит работа?

Зависит от задачи. Срок и стоимость называем письменно после разбора — до того, как начнём.

Нужен сайт на GLS CMF?

Соберите его сами в конструкторе Росток.Онлайн — он работает на этом движке.

Работает на платформе Росток.Онлайн