Какая CMS лучше для VPS: Joomla или Drupal
15:44, 27.01.2023
Если пользователь задумывается о создании сайта или блога, он непременно столкнётся с выбором системы управления контентом сайта. Ресурсы, с которыми владелец будущего веб-портала столкнется в процессе знакомства с популярными CMS, дают сравнительный анализ от лица веб-мастеров и обычных пользователей. Но мало где можно найти информацию о том, какая система лучше для разработчиков. В своей статье мы углубимся в особенности двух CMS — Joomla и Drupal. Мы составим техническое сравнение систем, рассмотрим их особенности и поймём разницу в подходах к реализации кода.
Удобство работы в CMS Joomla и Drupal
Любая система управление содержимым начинается с удобства использования. Сюда включают простоту вхождения, кривую обучения, и, конечно же, пользовательский интерфейс.
Если мы говорим о Joomla и Drupal — обе CMS ориентированы на программистов, требуют знаний HTML и PHP. Блоги, посвященные системам управления содержимым, следуют одному убеждению: самой простой и удобной CMS является WordPress, самой тяжёлой — Drupal.
Что касается реализации сложных проектов, то первенство отдают Drupal за счёт большого количества модулей, WordPress — наименее подходящая система создания комплексных веб-страниц. Joomla — некая «золотая середина» в указанных категориях, и если сравнивать системы от лица веб-мастера такое заключение справедливо.
Сайты в Drupal создаются за счёт двух инструментов — представления и блоки. У веб-мастера появляется больше гибкости в создании комплексных страниц. Ему не нужно иметь знания о том, как программировать модули.
Что касается Joomla, система предлагает аналогичные наборы инструментов (в документации именуются компоненты), но сложно использовать без специальных знаний. Если нужно быстро создать комплексную страницу, не имея знаний в разработке, Drupal подойдёт лучше всего.
Однако создание специальных кастомных функций — это совсем другая история. Сейчас недостаточно модульного пользовательского интерфейса и гибкого управления контентом. Без дополнительного программного обеспечения любой сайт будет оставаться не оптимизированным, тяжеловесным и неудобным, а доступные модули не всегда отвечают запросам.
Хотя Drupal предоставляет гибкие инструменты создания страниц для веб-мастера, администрирование с помощью этой CMS остается сложным, имеет крутую кривую обучения. Пользователям придется нанимать не только веб-мастера, но и разработчика, который активно использует Drupal. Чтобы обучиться работе в Drupal обычному пользователю, потребуется намного больше времени, чем если бы они потратили его на освоение Joomla. Консоль Drupal менее дружественна к начинающему разработчику, чем инструменты Joomla.
Если разработчик откроет исходный код страницы, написанной на Drupal, разбор и понимание, того, что происходит, вызовет большие трудности. Настроить Drupal нелегко, так как система использует плохо структурированный интерфейс. В то же время Joomla использует объектно-ориентированный фреймворк, соблюдающий паттерн MVC. Здесь есть интеграция большого количества шаблонов, например удобный Listener, не говоря о других.
Компетентный разработчик, знакомый с Drupal (чья стоимость услуг намного выше), не избавит заказчика от риска, что сайт будет представлять собой бесструктурную систему разветвлений с кучей зависимостей и исключений. Это создает множество проблем в будущем, когда требуется внести изменения, но сделать это в текущей системе невозможно, так как другие функции обязательно сломаются.
Общие черты Joomla и Drupal
Чтобы рассмотреть отличия Joomla и Drupal, разберём их принцип работы в 5 категориях. Выявим общие черты и разные подходы в реализации инструментов, поймем, какая система управления содержимым отвечает требованиям разработчика.
Хранение базы данных
Рассмотрим, как Drupal управляет информацией с сервера:
- Представления (отображение содержимого CMS) CMS находятся в БД. Пользователь не может установить систему управления версиями. У программистов нет возможности совместно создавать эти представления.
- Если в Drupal появляется новый контент, он становится частью таблиц в БД. Вид базы данных меняется по мере создания нового контента. Это означает, что в базе данных нет фиксированного количества таблиц. Если программисту необходимо создать веб-приложение и прикрепить к ней диаграммы отношений (Entity relationship model), он не сможет этого сделать. ERD требует статического количество таблиц в диаграмме, из-за структуры баз данных они динамически меняются.
- Современные CMS хранят журналы в файлах, Drupal держит данные журналирования в БД. Хранение журналов в базе данных делает их очень труднодоступными и, следовательно, более сложными для профилирования и анализа. Чтобы проанализировать журнал сайта на Drupal, разработчик не сможет пользоваться привычными командами Linux. Ему будут недоступны инструменты sed, awk, cut, cat.
- Сохранение баз данных проходит гораздо медленнее, а сами данные занимают гораздо больше места в хранилище. Это неоправданно раздувает базу данных и делает ее малоэффективной. Если речь заходит о ресурсах с большим трафиком, анализ логов становится практически невозможным. Кроме того, эта система не позволяет ротировать логи и архивировать старые журналы.
Современные паттерны проектирования
Прежде всего, нужно определить подходы двух CMS к созданию кода. Joomla — это объектно-ориентированная система. Что касается кода Drupal, хотя в нём используется аналогичный метод кодирования, многие инструменты используют процедурный тип PHP.
До появления Drupal 9, в CMS реализовались два старых паттерна проектирования, которые считают плохими в сообществе программистов:
- процедурный подход — плохо организованный код, он «нечитабельный» и его сложно понять;
- хукинг или перехват — возможность предпринимать действия, когда «узел контента» уже был создан.
Что касается Joomla, то система использует новые проектировочные шаблоны:
- шаблон программирования MVC (модель, представление, контроллер);
- событийно-ориентированное программирование;
- поведенческий шаблон «Наблюдатель» (Observer);
- объектно-ориентированный подход (т.е. полиморфный, использующий инкапсуляцию, наследование)
- порождающий шаблон «Одиночка» (Singleton);
- интерфейс ObjectFactory.
Эти паттерны используют популярные фреймворки Symfony2, Zend. Шаблон проектирования Database Abstraction Layer (сокращённо DBAL) в Joomla интегрирован лучше. Если разработчику нужен полноценный ORM, Joomla может использовать Doctrine.
Внедрение современных практик программирования в Joomla является результатом постоянного совершенствования CMS, в то время как Drupal обновляется с опозданием в несколько лет. Развитие Joomla стало возможным благодаря активному сообществу Joomla.
Архитектура CMS
В Joomla реализован чрезвычайно понятный и хорошо проработанный API. Drupal написали неудобоваримым кодом с плохой организацией структуры. Если провести аналогии, то по своей архитектуре Joomla напоминает рождественской елку. Drupal можно сравнить с молекулой под названием бакибол.
Для разработчика на Joomla доступна иерархическая «древесная» структура. Основной ствол - это ядро Joomla Core. На стволе размещаются крупные ветви (API), к которым присоединяют ветви меньшего размера (компоненты и виджеты). На ветвях расположены листья (виджеты, модули). Можно легко присоединять дополнительные компоненты.
Есть возможность использовать функции управления статьями, преимущества инструментов безопасности Joomla (уровни доступа и контроля). В компонентах располагаются подкомпоненты, есть возможность выстроить путь к чужой ветви. Но, в целом, ветви минимально контактируют между собой.
Архитектура Drupal похожа на шарообразный объект с множеством точек на поверхности, называемых модулями. Каждое расширение способно подключиться к любому из созданных модулей. То есть, из-за тесной интеграции все компоненты взаимодействуют между собой. Такая структура сложная для понимания. Любая добавленная функция будет снижать качество кода ещё сильнее. В новых версиях Drupal избавился от хукинга, что заметно упростило работу с кодом.
Скорость работы
Чтобы прочесть одну простую страницу, Drupal потребуется примерно 100 запросов. CMS Joomla легче и оптимизированнее, ядро системы работает гораздо быстрее. Минимальная память для Joomla - 512 Мб, для Drupal необходимо не менее 2 Гб.
Чтобы повысить производительности ресурсов с большим трафиком и обширной базой данных, Drupal использует Solr. Для Joomla предусмотрен Sphinx, этот инструмент написан на нативном коде C++. Инструмент значительно проще и работает быстрее. При этом, программисту не нужно добавлять Sphinx для большинства ресурсов. Производительности Joomla достаточно, чтобы быстро работать «из коробки».
Joomla справляется с интенсивным трафиком и может быстро обращаться к базе данных при серьёзной нагрузки. Sphinx используют в случае, если требуется значительный прирост производительности. Связка Drupal и Solr неспособна конкурировать с решениями для Joomla.
Вышесказанное убедительно свидетельствует, что вопреки заблуждению большинства, Joomla гораздо лучше подходит для разработки больших и сложных веб-ресурсов, чем Drupal.
Кэширование данных
Большинство бенчмарков сходятся во мнении, Joomla работает быстрее и затрачивает меньше ресурсов, если не использовать кеширование. В то же время сайты на Drupal работают быстрее с активированным кешем. На практике правильная настройка кеша в Joomla позволит обойти Drupal по части производительности. Кроме того, кэш Joomla, потребляет меньше ресурсов по сравнению с кешем Drupal.
Перспективность Drupal и Joomla
Аргументом, почему стоит выбрать Joomla вместо Drupal, является сайт linux.com. Разработчики, работающие на этом сайте, известны тем, что одержимы качеством кода. Они являются примером подражания для других программистов.
Участники Linux Foundation оценили Joomla на 5, а Drupal получил только 3 звезды. Дэн Лопес, веб-архитектор linux.com, в своём интервью заявил, что выбирает Joomla. Хотя множество правительственных сайтов США построены с помощью Drupal, тот факт, что главный сайт Linux использует Joomla, склоняет чашу в пользу последней.
По сравнению с комьюнити Open-source разработчиков Drupal, сообщество, которое поддерживает Joomla, в разы больше. То есть, программисты выбирают более простую для понимания, удобную и легковесную систему.
С точки зрения бизнеса, компании, которые выбирают Drupal, сталкиваются с трудностями поиска специалистов. Высококачественных опытных разработчиков этой CMS намного меньше, а их услуги дороже, чем у программистов Joomla. Большинство разработчиков предпочитают писать код на Joomla. Они часто отклоняют запросы, которые относятся к Drupal.
Будущее Drupal
Drupal 9, который вышел в 2020-м году, не решил многие проблемы со времен Drupal 7 и Drupal 8. Система управления содержимым получила внедрение фреймворка Symfony2 и компилирующий обработчик шаблонов Twig 2, но сложная структура кода никуда не делась. Часть инструментов CMS используют объектно-ориентированный подход, система избавилась от хукинга, но полностью от процедурного метода Drupal не ушёл.
Еще одной проблемой стала обратная совместимость. Сайт на Drupal 7 (срок поддержки которого истекает в 2023 году) невозможно быстро перенести на Drupal 9. С Drupal 8 появился механизм депрекации (где устаревшие функции удаляются из ядра), что слегка улучшает наследование с переходом на новую версию.
Вместо заключения
Joomla, как и Drupal достаточно хороши для реализации любого проекта. При этом, сложность сайта не имеет значения, каждая система способна реализовать любые требования. Joomla более приоритетна за счет быстрого внедрения новых возможностей, использования структурированного и понятного кода, добавления функций без риска «сломать» всю систему. Drupal постепенно «догоняет» Joomla, но неизвестно, когда эти CMS сравняются по скорости и простоте для разработчика.