Наболело: что выбрать — Битрикс или Laravel?

Наболело: что выбрать — Битрикс или Laravel?

Мы считаем, что выбор распространенной в России системы 1С-Битрикс — плохая идея для больших и нестандартных проектов. Но есть задачи, которые Битрикс решает хорошо. Я решил изложить свою позицию в одной статье.

Чаще всего нам поручают создание проектов с нестандартной логикой, стартапов, интегрированных решений и сайтов с высокой посещаемостью. Поэтому наша основная платформа для разработки — это связка из Vue.js на фронтенде и PHP-фреймворка Laravel на бэкенде. Наше «поэтому» часто оказывается неочевидным для заказчика. Значит, нужны подробные пояснения.

Моё мнение

1С-Битрикс (и CMS-концепция в целом) хорошо подходит для небольших проектов с типичной механикой и алгоритмами, которые более, чем на 75%, совпадают с возможностями 1С-Битрикс «из коробки».

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

Таблица сравнения 1С-Битрикс и Laravel

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

Здесь вы можете скачать таблицу в формате PDF (3,2 Мб)

Фундаментальные знания

Сразу признаюсь: я затеял сложное сравнение, «тёплого с мягким».

Два продукта — яркие представители двух совершенно разных классов, двух концепций.

  • 1С-Битрикс — это CMS.
  • Laravel — фреймворк.

Разберемся с фундаментальными определениями, они важны для понимания.

1. CMS

CMS — это сокращение от Content Management System (Система управления контентом).

Удачное определение подсказывает Википедия:

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

В этом определении заключена главная концепция:

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

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

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

2. Framework

И снова соглашусь с Википедией:

Фреймворк — это программная платформа, которая определяет структуру программной системы; иначе — программное обеспечение, которое облегчает разработку и объединение разных компонентов большого программного проекта.

Обратите внимание, здесь уже нет ни слова об удобстве работы с контентом.

Основное внимание во фреймворке уделено «структуре» и «архитектуре». А понятие «большого программного проекта» акцентировано даже в самом определении.

По моей аналогии, фреймворк — это станок по производству любых деталей для детских конструкторов. Это умный станок, он сам следит за тем, чтобы детали были совместимыми, надежными и безопасными (разумеется, при соблюдении правил эксплуатации).

3. Иерархическое представление

В основе практически любого фреймворка лежит тот или иной язык программирования.

В основе практически любой CMS-системы лежит тот или иной фреймворк.

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

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

Преимущества каждой концепции с точки зрения пользователя

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

1. Скорость разработки

Здесь CMS одерживает безоговорочную победу.

Из «кубиков LEGO» внутри 1С-Битрикс можно собрать за считанные дни (иногда и за один день) даже такой сложный сайт, как интернет-магазин.

При одной важной оговорке — если ничего не менять в бизнес-логике такого интернет-магазина и полностью согласиться с тем, как видит правильный интернет-магазин 1С-Битрикс.

Сборка такого же несложного e-commerce-решения с помощью фреймворка потребует значительно больше времени.

Да, для фреймворков существует огромное количество готовых библиотек, а опытный разработчик уже располагает достаточным числом «заготовок». Но при прочих равных фреймворк-разработка всё-таки займет больше времени.

2. Независимость от конкретного разработчика

Вспоминаем этот рекламный лозунг 1С-Битрикс :)

В каком-то смысле — это правда. С этой CMS работают тысячи компаний по всей стране.

Но всё же полная независимость — это миф и лукавство.

Во-первых, с фреймворком Laravel точно так же работают тысячи компаний, но уже не только в России, а по всему миру!

Приложив эквивалентные усилия, вы сможете найти преемника по разработке и в случае 1С-Битрикс, и в случае Laravel.

Во-вторых, основной рекламный довод 1С-Битрикс верен лишь частично.

Да, это «единая система», с которой знакомы все разработчики. Но это единство работает только в том случае, если сайт полностью собран на стандартных «инфоблоках» (так называются готовые модули в 1С-Битрикс), а заказчик не просил разработчика перестроить бизнес-логику под себя. Но такая ситуация — скорее исключение, чем правило.

Если же разработчик внес изменения в стандартные конструкции компонентов 1С-Битрикс, разобраться с таким измененным продуктом преемнику будет весьма непросто.

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

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

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

3. Панель администратора

Панель управления («админка») — еще одно серьезное конкурентное преимущество 1С-Битрикс.

Админка у 1С-Битрикс продуманная и удобная. В своё время за её интерфейс отвечала одна из лучших дизайн-команд страны (AIC). Но здесь ограничения для разработчика еще жёстче — изменять логику админки в 1С-Битрикс практически невозможно. Если вам будет неудобно, придется... привыкать.

Для Laravel админку придётся разработать.

У опытных команд уже есть наработки, и чаще всего их админки выглядят ненамного хуже 1С-Битрикс (а некоторые и гораздо лучше). При выборе команды попросите показать вам административные панели ранее выполненных проектов — поймете, что вы получите по итогам проекта.

Но разработка своей панели управления — однозначное преимущество Laravel!

Разработчики построят такую панель управления, которая нужна именно вам.

Иногда это критично. Например, в случае ведения текстовой онлайн-трансляции спортивного матча, когда скорость ввода данных (использования админки) чрезвычайно важна.

4. Скорость работы

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

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

И вот здесь сильнейшая сторона 1С-Битрикс — универсальность и множество функций, доступных «из коробки», становится его же ахиллесовой пятой.

При загрузке каждой страницы 1С-Битрикс опрашивает множество своих модулей, пытаясь понять, задействованы ли они в данном проекте или нет. Это многократно увеличивает время, нужное для обработки каждой страницы.

1С-Битрикс — медленная платформа.

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

При прочих равных, фреймворк Laravel по этому параметру безоговорочно выигрывает у 1С-Битрикс и по скорости обработки больших данных, и по скорости загрузки страниц.

5. Техническая поддержка

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

1С-Битрикс — это коммерческий продукт, стоимость которого, в зависимости от редакции, составляет от 5,4 тысяч рублей до 1,5 миллионов рублей. У компании есть служба поддержки, но оперативность и качество ответов является «притчей во языцех».

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

6. Требуемая квалификация разработчика

1С-Битрикс предъявляет «минимальные системные требования» к разработчикам.

Но работать на этом продукте талантливые специалисты не хотят.

Для разработки на Laravel нужны инженеры с высокой квалификацией. Но наиболее одаренные программисты предпочитают работать именно с фреймворками.

7. Доступное число разработчиков и уровень зарплат

По данным hh.ru на май 2021 года, в России в поиске работы находились 4500 1С-Битрикс-программистов и 500 Laravel-специалистов. Средний оклад первых оценивался в 120-150 тысяч рублей, вторых — в 150-300 тысяч рублей.

Таким образом, по ситуации на рынке труда, 1С-Битрикс-программистов значительно больше, и они гораздо дешевле Laravel-программистов.

Но по факту часто оказывается так: качество подавляющего числа найденных 1С-Битрикс-программистов окажется низким, а опыт — недостаточным.

Если для проекта нужны по-настоящему качественные инженеры, вы быстрее их найдете, если будете искать для работы с фреймворком, а не с CMS.

8. Требования к хостингу

1С-Битрикс, как я уже отметил, — медленная и неповоротливая система. Чтобы она работала приемлемо, при прочих равных ей нужно гораздо больше «аппаратных ресурсов», чем для проектов, реализованных на базе фреймворка.

Проще говоря, проекты на 1С-Битрикс прожорливы и требовательны к ресурсам. Поэтому на хостинг вы будете тратить больше. Гораздо больше.

Преимущества каждой концепции с точки зрения разработчика

1. Единая концепция разработки

1С-Битрикс поддерживает MVC-модель разработки.

MVC (Model-View-Controller) — это схема разделения данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо.

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

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

Но это заявление 1С-Битрикс очень формально.

На деле, разработчик 1С-Битрикс очень часто сталкивается с ситуацией, когда файлы проекта представляют собой свалку из HTML, JS- и PHP-кода. Разобраться в такой «вермишели» очень непросто. Работать с таким кодом неприятно и неудобно.

Laravel декларирует принципы «красивой разработки». Лучшие практики создания кода описаны как в самой документации по фреймворку, так и в сообществе разработчиков.

Безусловно, написать «свалку» можно и при помощи Laravel. Но если у Laravel-программиста есть выбор, у 1С-Битрикс-программиста такого выбора нет.

2. Качество кода и соблюдение принципов ООП

Фреймворк, на котором построен 1С-Битрикс, часто подвергается критике из-за устаревшей концепции использования массивов, в то время как все современные инструменты разработки уже давно перешли на модель ООП.

ООП (Объектно-ориентированное программирование) — методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования.

Формально, новое ядро 1С-Битрикс использует основные принципы ООП, но делает это скорее «для галочки», не предоставляя реальных преимуществ разработчику.

Laravel предоставляет все необходимые возможности для написания качественного структурированного кода (например, для внедрения зависимостей, то есть использования Dependency Injection).

Dependency injection (DI) — процесс предоставления внешней зависимости программному компоненту, когда объект отдаёт заботу о построении требуемых ему зависимостей внешнему, специально предназначенному для этого общему механизму.

Такой код легче тестировать и гораздо легче масштабировать.

В первую очередь, благодаря использованию статических анализаторов кода, применять которые на 1С-Битрикс невозможно.

3. Шаблонизатор

Шаблонизатор помогает отделить «шаблоны оформления» данных от исполняемого кода.

В чём практическая польза? — Это помогает ускорить разработку проекта, делая возможной параллельную работу фронтенд- и бэкенд-разработчика.

У 1С-Битрикс нет встроенного шаблонизатора. Разработчику необходимо самостоятельно его подключить. Чаще всего используют распространенные шаблонизаторы Twig или Smarty.

В экосистему Laravel уже встроен производительный шаблонизатор Blade.

4. Кастомизация готовых компонентов

Чаще всего бывает так, что готовый компонент 1C-Битрикс не соответствует бизнес-процессам заказчика и нужно изменить его стандартную логику.

У Laravel с этим нет проблем — он изначально создан для разработки проектов «с нуля», поэтому предоставляет максимальную свободу разработчику.

1С-Битрикс официально заявляет о такой возможности. На деле же, кастомизация типовых компонентов очень часто затруднена из-за избыточного кода и чрезмерной связности компонентов между собой. Всё это вынуждает разработчика писать «костыли», которые помогают обходить ограничения платформы.

Самое печальное: нередко совет написать такой «костыль» можно услышать даже из уст специалистов официальной техподдержки 1С-Битрикс.

5. Возможность построения микросервисной архитектуры

Микросервисная архитектура — относительно молодая и набирающая популярность концепция создания программных продуктов.

Цельный продукт («монолит») делится на множество независимых частей («микросервисов»), которые взаимодействуют между собой через API.

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

Теоретически, 1С-Битрикс не препятствует реализации микросервисной архитектуры. На деле же, большая часть его компонентов представляет собой «микро-монолиты». Чрезмерная зависимость компонентов друг от друга усложняет «распиливание» монолита на микросервисы.

В Laravel «из коробки» есть консольные команды для создания и выполнения тестов. Но самое главное, что с помощью DI-контейнера можно писать тестируемый код, делая заглушки на внешние сервисы.

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

6. Возможность использования unit-тестов

Почти все разработчики больших проектов сталкивались с ситуацией, когда «одно чиним, другое — ломаем». Это происходит, когда проект разрастается, и становится сложно уследить за тем, как поведёт себя вся конструкция при внесении изменений в какую-то часть.

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

Если написать юнит-тест для Laravel по силам любому хорошему разработчику, то покрыть тестами код компонентов 1С-Битрикс (а особенно код, использующий API 1C-Битрикса) — может стать нетривиальной задачей.

7. Возможность реализации концепции CI/CD

CI/CD (Continuous Integration, Continuous Delivery, то есть непрерывная интеграция и доставка) — это технология автоматизации тестирования и доставки новых модулей разрабатываемого проекта заинтересованным сторонам (разработчики, аналитики, инженеры качества, конечные пользователи).

Значимая часть концепции CI/CD — это автоматическое тестирование до выкладки кода и после нее. Про написание тестов с 1C-Битрикс приходится помучаться, а тесты обычно получаются не сильно качественными.На главное в CI/CD — это автоматическая публикация изменений.

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

В 1С-Битрикс приходится часто работать «мышкой», наращивая массив информации в базе данных: поля инфоблоков, соответствие шаблонов конкретным страницам, почтовые шаблоны и многое другое.

В «коробке» 1С-Битрикс нет инструментов для миграций изменений на все площадки. Разработчику приходится регулярно брать чужие решения или писать свои.

Прочие параметры

1. Популярность в своей категории

Я нашел несколько рейтингов CMS-систем. Данные в них разнятся, но в большинстве источников картина такая:

CMS: 1С-Битрикс уверенно занимает 2-е место в России, уступая только WordPress.

По данным исследований iTrack и builtwith.com, 1С-Битрикс отстаёт от нынешнего лидера, как минимум, в два раза.

Рейтинга исключительно backend-фреймворков я найти не сумел (если нашли, поделитесь, пожалуйста), но удалось обнаружить общие рейтинги популярности фреймворков (совокупно по фронтенду и бэкенду).

В них (раз и два) предсказуемо лидируют такие популярные фронтенд-фреймворки, как React и Vue. Если же очистить эти списки, то Laravel займет четвертую-пятую строчку по популярности, уступив ASP.NET, Ruby on Rails и Django.

PHP как язык программирования занимает лидирующую строчку в чартах популярности платформ для создания сайтов. Но... такое сравнение было бы некорректным, мы проводим сравнение внутри одной категории.

2. Популярность среди наиболее посещаемых проектов

С исследованием этого вопроса оказалось ещё сложнее, т.к. объективных источников информации ещё меньше. Здесь я опирался на статью 2017-го года и сайт builtwith.com.

«Как мы видим, всего 13 сайтов из 100 работают на коробочной CMS, т.е. всего 13% высоконагруженных проектов в рейтинге используют CMS. Кроме этого, 3 проекта используют студийные разработки, которые могут быть собраны специально под их потребности и, скорее всего, сильно отличаются от обычной коробочной CMS. В сухом остатке мы видим, что на коробочной CMS работают всего несколько проектов.» (Источник: статья Никиты Семёнова из SECL Group).

По сведениям builtwith.com, на 1С-Битрикс созданы такие сайты, как:

На Laravel разработаны такие сайты, как:

Обратите внимание: сайт ФК «Зенит» встречается в обоих списках.

Это пример подхода, при котором многие проекты используют «гибридную» схему организации: часть проекта реализована на коробочной CMS (в нашем случае — это 1С-Битрикс), а наиболее нагрузочная или нестандартная часть реализована на фреймворке (у нас — это Laravel).

3. Использование за рубежом

Laravel очень популярен в США. Этим объясняется его активное использование в крупнейших мировых проектах, например:

1C-Битрикс отдают предпочтение крупные международные компании с российскими корнями (например, www.kaspersky.com). В остальных случаях на этой CMS разрабатывается только локальный российский поддомен транснациональных корпораций (например, https://ru.levi.com и https://ru.benetton.com).

Долгое время компания «1С-Битрикс» отказывалась от международной экспансии, не уделяя внимания созданию англоязычного административного интерфейса и службы поддержки. Очевидно, неудачи компании за рубежом связаны, в первую очередь, именно с этой многолетней политикой. Сейчас, по моим данным, «Битрикс» прикладывает усилия для популяризации своего продукта вне рынка России и стран СНГ.

Заключение

Эта статья — структурирование опыта нашей команды и частное мнение по данной теме, которое может не совпадать не только с мнением редакции, но и с мнением других экспертов :-)

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

1С-Битрикс больше подходит для небольших проектов.

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

Правильное использование 1С-Битрикс — это максимальное использование существующих инфоблоков без их кастомизации (от слова «совсем»). Вам должно хватать функциональности «из коробки», которой у 1С-Битрикс предостаточно.

Фреймворк подойдет для амбициозного проекта с уникальными механиками и чудовищной посещаемостью.

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

Для всех этих задач правильнее будет с самого начала использовать фреймворк. Переписывать позже «с нуля» будет гораздо сложнее, болезненнее и дороже.



  • Digital-стратегия предприятия

    Digital-стратегия предприятия

    Сегодня интернет — ключевой инструмент достижения стратегических целей любого бизнеса. Именно интернет, а не сайт. Сайт перестал быть изолированным инструментом. Модернизация сайта без трансформации всей системы коммуникации с потребителем — бесполезна. Начинать эту работу сегодня нужно с проработки комплексной digital-стратегии предприятия.

  • PIM-системы — разбираемся с новой популярной аббревиатурой (сделали понятную инфографику)

    PIM-системы — разбираемся с новой популярной аббревиатурой (сделали понятную инфографику)

    PIM (Product Information Management) — класс систем, предназначенный для структурирования и упорядочивания процессов работы с каталогом товаров (продуктов).