Joomla Vs. Drupal: техническое сравнение лучших CMS с открытым исходным кодом

  • Понедельник, 04 августа 2014

drupalvsjoomlaПеревод статьи разработчика сайтов Arash Arabi с сайта http://www.butterfly.com.au/

Пару недель назад, я должен был написать техническое сравнение Joomla и Drupal. Естественно я начал искать онлайн. Удивительно, но я не мог найти достойной технической оценки этих двух систем. Большая часть доступных материалов отражает поверхностные сравнения, написанные веб-мастерами и не-разработчиками. Были несколько статей, в которых сравнивали производительность, но ничего достаточно углубленного, чтобы оценить технические данные и внутреннюю работу PHP фреймворка CMS в деталях. Как разработчик, который работал как с Joomla, так и с Drupal, я решил, что пришло время написать хорошее техническое сравнение между Joomla и Drupal, и положить конец войне между ними.

 

mythbusted

Прежде чем мы начнем, мы должны прояснить специфическую CMS-терминологию:

Что в Drupal называется модулями очень похоже на компоненты в Joomla.

Что в Joomla называется модулями очень похоже на блоки в Drupal.

Удобство в использовании против сложности.

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

из коробки

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

Требования кнастройке

Немного о верхней диаграмме. Joomla проще в установке и настройке, чем Drupal. Кроме того, легче развивать пользовательские функции для Joomla по сравнению с Drupal и Wordpress.

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

Точно так же миф, что Drupal является более подходящим для сложных проектов, чем Joomla вызван оценками CMS, с точки зрения вебмастера, а не точки зрения программиста. Это восприятие связано с тем, что Drupal обеспечивает модульный подход для создания пользовательского интерфейса и ввода содержимого. Веб-страницы Drupal создаются с помощью блоков и видов. Это дает вебмастеру максимальную гибкость для создания веб-страниц без необходимости программирования модулей для Drupal. В то же время Joomla предоставляет вебмастерам подобные рабочие инструменты (компоненты и модули), но это не такие мощные инструменты, какие предоставляет Drupal квалифицированному вебмастеру чтобы быстро построить новые сложные веб-страницы.

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

Технические сравнение Joomla и Drupal

Как только программист открывает исходный код Drupal он сталкиваются с кошмаром. Программировать на Drupal не легко, так как он основан на плохо продуманном, процедурном фреймворке, в то время как Joomla основана на хорошо разработанном, объектно-ориентированном MVC фреймворке, который так-же реализует ряд шаблонов проектирования, таких как listener, и т.п.

Даже если вы нанимаете высококвалифицированного, (очень дорогого) Drupal программиста, существует высокая вероятность того, что ваш код будет напоминать спагетти, которые будут вызывать много проблем в будущем, если вы хотите внести дополнительные изменения.

1 База данных

  1. В Drupal, виды хранятся в базе данных. Это означает, что вы не можете поставить их под контроль версий (например SVN или GIT) и разработчики не могут сотрудничать при развитии видов.

  2. Каждый новый тип содержимого в Drupal создает пару таблиц базы данных. Это означает, что структура базы данных изменяется с течением времени, если вебмастер создает и изменяет типы контента. Это кошмар для разработчиков, которые хотели бы создать Entity Relationship Diagrams (ERD), при создании веб-приложения. Вы никогда не можете полагаться на ERD потому, что в следующий раз, когда вы посмотрите в базу, количество таблиц и схема базы будет отличаться.

  3. В Drupal, логи хранятся в базе данных. Все современные системы хранят логи в файлах. Хранение логов в базе данных означает, что к ним очень трудно получить доступ, анализировать и профилировать. Разработчик не может использовать инструменты Linux (такие как sed и т.д.) для обработки и анализа журналов. Процесс идет медленнее и занимает огромное количество дискового пространства (много гигабайт) для хранения баз данных. Это делает базу данных системы необоснованно большой и неэффективной. Для большого сайта с высоким трафиком это делает практически невозможым запросы и анализ логов. Кроме того, он не может поддерживать ротацию и архивирование старых логов. Кто в здравом уме будет хранить логи в базе данных?

2. Паттерны проектирования

Joomla является объектно-ориентированной, а Drupal основан на старом PHP 4 процедурном программировании (темные дни PHP).

php4

Drupal реализует устаревшие паттерны проектирования:

  1. Procedural

  2. Hooking

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

 

Однако Joomla реализует современные паттерны проектирования,  которые используются в лучших фреймворках, таких как Symfony 2, Zend и корпоративных языках программирования, таких как Java (включая Struts и Spring):

  1. Объектная ориентированность (включая полиморфизм, инкапсуляцию, наследование и т.д.)

  2. MVC (Model View Controller)

  3. Event Driven, Event Dispatcher, и Observer

  4. Singleton

  5. Factory

Некоторые из паттернов проектирования, реализованных в обоих CMS, таких как DBAL (Database Abstraction Layer) были сделаны лучше в Joomla. DBAL в Joomla почти так же хорош, как ORM (Object-relational mapping). И если вы действительно хотите использовать ORM Joomla, он легко интегрируется с Doctrine.

Реализация этих современных практик связано с непрерывным улучшением фреймворка Joomla и CMS, которые проведены за эти годы, в то время как Drupal стагнирует.

3 Архитектура ядра

Joomla имеет очень чистый API ядра, а Drupal написан на уродливом коде-спагетти. Можно было бы назвать архитектуру Joomla  елкой, а архитектуру Drupal бакиболой.

древовидная иерархияВ Joomla у нас есть древовидная иерархия. Ствол является ядром Joomla. Он имеет ветки (API), к которым вы можете прикрепить несколько отростков (компоненты) или листьев (модулей или виджетов). Компонент может быть подключен, таким образом, чтобы интегрироваться с контролем доступа Joomla! (Access Control Levels) и функциями управления контентом. Будучи отростком, он может иметь подкатегории ветви и даже может иметь соединение с другим компонентом. Но в значительной степени, существует минимальный контакт между различными компонентами.

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

Для реализации Hooking в архитектуре Drupal используется call_user_func () и другие методы динамического вызова функций. Это означает то, что отладка Drupal с использованием современных инструментов отладки - это кошмар. Если вы хотите узнать больше о инструментах отладки вы можете прочитать: Как настроить VIM и PhpStorm с xDebug для отладки.

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

4. Стандарты кодирования

PSR -  PHP Specification Request является стандартом кодирования, принятым в большинстве современных корпоративных фреймворках, таких как Symfony 2 и Zend.

Joomla является PSR-0 совместимой и скоро станет PSR-1 совместимой. Drupal не соответствует любому стандарту PSR.

5 Производительность и кэширование

Drupal в среднем составляет 100 запросов к базе данных на странице (для простых страниц). Из-за этого и других проблем с производительностью, связанных с Hooking архитектурой, все должно быть сильно абстрагированно и кэшироваться, что создает дополнительную сложность и требования к аппаратной составляющей ресурсов. Joomla является гораздо более легкой и оптимизированной. Она имеет намного более быстрее ядро. В Joomla рекомендованный лимит памяти составляет 512 МБ, а в Drupal - 2 ГБ.

Большинство тестов согласны, что без кэширования Joomla является более быстрой и менее ресурсоемкой, чем Drupal. Однако некоторые тесты считают Drupal быстрее, когда кэширование включено. Но если кэширование Joomla устанавливается экспертами и настроено она может превзойти Drupal даже когда кэширование включено. Также кэширование в Joomla намного проще и менее ресурсоемко, чем в Drupal, что делает Joomla проще в использовании, обновление, и настройке.

В то время как у вас есть Solr в Drupal, чтобы увеличить производительность для веб-сайтов с большими базами данных и большим количеством пользователей, в Joomla у вас есть Sphinx, который написан на родном C ++ и работает быстрее и проще, чем Solr. Нам просто не нужно устанавливать Sphinx на большинстве веб-сайтов, потому что Joomla быстра и достаточно мощна из коробки и имеет возможность работать с очень большими базами данных под интенсивным трафиком. Однако при необходимости Sphinx может обеспечить огромный прирост производительности на Joomla, делая ее во много раз быстрее, чем Drupal с Solr.

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

То, что эксперты делают

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

В защиту Drupal, в Linux Foundation, организации linux.com, также работает несколько небольших сайтов на Drupal (например video.linux.com). Но то, что они используют Joomla, а не Drupal для их основной функциональности на тяжелом сайте (linux.com), для меня большой плюс в пользу Joomla.

Также стоит отметить, что  контрибьюторы Linux Foundation дали Joomla рейтинг пять звезд, в то время как они-же дали Drupal только три звезды.

Если вы заинтересованы, вы можете прочитать интервью с Дэном Лопес, веб-архитектором linux.com о том, почему он выбрал Joomla.

Экономическое обоснование

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

С точки зрения сообществ, поддерживающих CMS, Joomla имеет гораздо большее сообщество разработчиков по сравнению с Drupal. Это признак того, что разработчики предпочитают работать на Joomla.

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

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

Drupal может улучшиться в будущем

Говорят, что новый Drupal 8, который будет выпущен в ближайшее время (пока нет официальной даты релиза) массивно усовершенствован и много проблем и ошибок исправлено. Ядро Drupal была полностью переработано и перестроено и, как предполагается, много позаимствовано из фреймворка Symfony 2.

Тем не менее, до тех пор, пока Drupal 8 не будет выпущен, даже не стоит рассматривать использование Drupal в реальных проектах.

После того, как Drupal 8 будет выпушен я готов вновь посетить мир Drupal и сделать проект на нем, но я почти уверен, что к этому времени Joomla улучшится еще больше. Мы, возможно, даже получим полную поддержку TDD на Joomla (TDD или Test Driven Development является лучшей методологией разработки в мире).

Заключение

В заключение, если вы все еще сомневаетесь по этому поводу, поверьте разработчику, который имеет опыт работы как с Joomla, так и с Drupal. Joomla лучше чем Drupal. И это верно независимо от размера и требований к сайту.

Если у вас нет не-технических причин (например, мои пользователи уже знают, как использовать Drupal) я всегда рекомендую создавать сайт на Joomla.

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

Я видел много раз, как люди говорят что Drupal лучше, потому что он более надежен и более эффективен. Это не аргумент для меня. Я бы спросить их, что делает Drupal более эффективным или надежным, и они всегда будут не в состоянии ответить, когда я цитирую пять технических превосходств Joomla, указано выше.

Аркадий Седельников

Аркадий Седельников

Россия, Новосибирск. http://argens.ru/

Статьи автора

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Логотип Joomla

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Свернуть

Коротко о главном в Joomla

Новости портала

Новое в блогах

Видео

Форум о Joomla