Яка CMS краща для VPS: Joomla чи Drupal
15:54, 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 зрівняються за швидкістю і простотою для розробника.