Битрикс или фреймворк?
Что не так со студиями, «прикипевшими» к популярным CMS, и так ли вам нужен чистый фреймворк
Владимир Завертайлов
Главный бармалей в Сибирикс
Замечали тенденцию: как только вы чего-то не знаете, не понимаете — бежите к гуглу с вопросом, даже не пытаясь подумать? Да ладно, дело не в вас, точнее, не полностью в вас, а только в вашем ленивом мозге, который старается экономить энергию и не делать лишних движений. Из-за этого, например, программисты разучиваются многому, что умели раньше, и комфортно «стряпают» типовые проекты на CMS-ках. Шаг влево, шаг вправо — и начинается «ой, это нестандартный функционал, тут так низя».
![](https://s29805.cdn.ngenix.net/upload/_tilda/project30911_1656063264/tild6463-6664-4932-b535-643636346134__-__empty___-_1.jpg)
Вообще-то можно, если не лениться и раскинуть мозгами — мы так не один модуль Битрикса переписали под нужды клиентов. Потому что надо. И потому что умеем думать и выходить за рамки. Сегодня поговорим о стандартных и нестандартных решениях и выборе между CMS и фреймворками: что и для какого случая выбрать.
Бесплатная CMS
Одна из самых популярных на западе бесплатных CMS — Wordpress, особенно для разработки простых корпоративных сайтов в компаниях средней руки. Популярна, в основном, по историческим причинам: изначально это блоговый движок, который стали использовать для чего только можно и нельзя. В России на коммерческих проектах встречается не часто (чаще ее можно увидеть на школьных сайтах или личных блогах). Хозяин-барин, но считаем нужным предупредить о главных минусах:
- потенциальная вредоносность за счёт огромного количества готовых модулей от непонятных разработчиков (открытый исходный код как-никак);
- ограниченный функционал (для сложных решений всё равно придётся готовить костыли или пропадать на форумах в поисках готовых).
Бесплатные CMS подходят для небольших проектов с ОЧЕНЬ стандартным функционалом: без многогородовости, учета остатков по складам, миллиардов пунктов выдачи по стране, хитрых бронирований и всего такого прочего.
Платная CMS
Который год в России де-факто монополист и № 1 — Битрикс. Потому что есть вездесущая 1С, потому что большое комьюнити, потому что какая-никакая техподдержка и потому что есть обучающие курсы для контент-менеджеров (и это далеко не полный список преимуществ).
Вокруг этой CMS много мифов и неконструктивного брюзжания, но в программировании всегда так: либо есть те, кто недоволен технологией и брюзжит, либо это мертвая технология. Если вы в их лагере, советуем прочесть эту статью.
Да, эта CMS на многое способна, её особенно любят владельцы e-commerce за богатые маркетинговые возможности и правила работы с корзиной, но всё-таки Битрикс не всесилен — в нашей практике полно случаев, когда интеграции с 1С-кой были болезненными, а готовые модули приходилось переписывать под конкретные нужды заказчика из-за ограничений самой CMS. То, что сделано у нас на проекте «Проаптека» — вообще невозможно воплотить «из коробки», например.
Вокруг этой CMS много мифов и неконструктивного брюзжания, но в программировании всегда так: либо есть те, кто недоволен технологией и брюзжит, либо это мертвая технология. Если вы в их лагере, советуем прочесть эту статью.
Да, эта CMS на многое способна, её особенно любят владельцы e-commerce за богатые маркетинговые возможности и правила работы с корзиной, но всё-таки Битрикс не всесилен — в нашей практике полно случаев, когда интеграции с 1С-кой были болезненными, а готовые модули приходилось переписывать под конкретные нужды заказчика из-за ограничений самой CMS. То, что сделано у нас на проекте «Проаптека» — вообще невозможно воплотить «из коробки», например.
На одном из проектов 1С была кастомной примерно на 80%. Разработчик проверил интеграцию с сайтом в эмуляторе — всё работало. Но когда дошло дело до реальной интеграции, случился коллапс: Битрикс плевался, и ничего не загружалось. Мы долго выясняли причину. В эмуляторе интеграция происходит поэтапно, запросами: сначала авторизация в системе, потом первый запрос, потом второй, потом третий…
Внутри Битрикса из-за кастомной 1С-ки всё было иначе: Битрикс каждый раз пытался авторизоваться заново и не запоминал первый запрос, считая предыдущий файл устаревшим и требуя его обновить. Чтобы отловить этот баг, пришлось вклиниваться в процесс real-time и отслеживать, что происходит.
Внутри Битрикса из-за кастомной 1С-ки всё было иначе: Битрикс каждый раз пытался авторизоваться заново и не запоминал первый запрос, считая предыдущий файл устаревшим и требуя его обновить. Чтобы отловить этот баг, пришлось вклиниваться в процесс real-time и отслеживать, что происходит.
На проекте для Орматек настраивали эквайринг от Сбербанка. Пришлось переписать официальный сберовский модуль (ай!), поскольку тот использовал старое API от старого ядра Битрикса, которое постепенно «умирает». Теперь пользуемся только своей версией модуля на проектах. Хотя, конечно, это проблема, скорее, Сбербанка, чем Битрикса :)
На сайте КДМ нужна была фильтрация по наличию — её реализовать штатными средствами Битрикса нельзя. Чтобы это условие выполнялось, мы написали кастомное решение. А вот учёт геопозиции при фильтрации по цене всё-таки сделали с помощью штатного фильтра, хотя и пришлось повозиться.
Код Битрикса иногда бывает нелогичным, хотя над ним трудились толпы специалистов, и с обратной связью у этих ребят проблем нет — клиентов тысячи. В одном из проектов мы раскопали очень странную логику импорта: вывод свойств элементов, которые позже будут использоваться при фильтрации, можно указывать только при их создании — а значит, их не получится обновить. Мы удивились, но поправили, ничего не нарушив :)
Из этих историй можно вывести лишь одно правило: Битрикс продуман под многие сложные задачки, но в какой-то момент вам этого не хватит. Можно ли будет вылезти за рамки стандартной коробки? Да, и дальше мы расскажем, как именно.
Из этих историй можно вывести лишь одно правило: Битрикс продуман под многие сложные задачки, но в какой-то момент вам этого не хватит. Можно ли будет вылезти за рамки стандартной коробки? Да, и дальше мы расскажем, как именно.
CMS + Framework
Большая часть наших проектов сделана на Битриксе — +100 к удобству клиента и +200 к скорости разработки. Но сложные штуки (множество форм, профили, личные кабинеты или непростая бизнес-логика) он всё-таки не тянет, поэтому почти всегда подключается популярный фреймворк. Данные при этом удобненько управляются из админки Битрикса (чтобы не писать новую с нуля, что удвоит сроки и стоимость).
Логика здесь простая: если нам нужны вещи, которые не умеет Битрикс — значит нам нужно в ЛЮБОМ СЛУЧАЕ писать код. Иногда — много кода. Так пусть уж он будет хорошо-структурированным, стандартизованным, в классическом MVC-стиле, с коллекциями, роутерами и легко читаться профессионалами.
У нас есть опыт «склейки» Bitrix+ZendFramework (Laminas) и Bitrix+Laravel. На текущий момент (2022) мы используем Laravel. Здесь намеренно не упоминаем Bitrix Framework, так как он, мягко говоря, недоделан. Технология «склейки» отработана нами очень давно.
Логика здесь простая: если нам нужны вещи, которые не умеет Битрикс — значит нам нужно в ЛЮБОМ СЛУЧАЕ писать код. Иногда — много кода. Так пусть уж он будет хорошо-структурированным, стандартизованным, в классическом MVC-стиле, с коллекциями, роутерами и легко читаться профессионалами.
У нас есть опыт «склейки» Bitrix+ZendFramework (Laminas) и Bitrix+Laravel. На текущий момент (2022) мы используем Laravel. Здесь намеренно не упоминаем Bitrix Framework, так как он, мягко говоря, недоделан. Технология «склейки» отработана нами очень давно.
Плюсы CMS + Framework
Минусы CMS + Framework
- гибкость системы — можно делать ВСЁ,
- структурированный, понятный и стандартный код на сложных проектах,
- скорость разработки (по сравнению с чистыми фреймворком).
- высокий порог входа — нужны кодеры с прямыми руками (фреймворк — это вам не стандартные элементы Битрикса местами переставлять),
- оверинжиниринг: порывы разработчиков все сделать на фреймворке — даже там, где есть стандартные компоненты.
Чистый фреймворк: большое делается по-взрослому!
Это предпочтение большинства программистов. А также большинства технических директоров на стороне клиента. Скорость, гибкость, власть над кодом — все это дает нам хороший фреймворк (такой, как Laravel). Однако разрабатывать на чистом фреймворке корпоративный сайтик или простой интернет-магазин — иррациональная по бюджетам затея.
Когда же нужен на самом деле фреймворк? На сайтах-сервисах, стартапах, личных кабинетах, при разработке API для сторонних ресурсов или мобильных приложений. И там, где технический директор на стороне клиента категорически против Битрикса ;)
Когда же нужен на самом деле фреймворк? На сайтах-сервисах, стартапах, личных кабинетах, при разработке API для сторонних ресурсов или мобильных приложений. И там, где технический директор на стороне клиента категорически против Битрикса ;)
Короче — что выбрать-то?!
Параметры | Бесплатная CMS | Платная CMS | CMS + Framework | Framework |
---|---|---|---|---|
Тип проекта | Блог, простейший сайт-визитка (который не жалко выкинуть, если что-то пойдёт не так) | Простейший сайт-визитка, простой корпоративный сайт, е-коммерс | Корпоративник, е-коммерс с не самой простой логикой, личными кабинетами и прочими сложными прелестями | API, личные кабинеты, сервисы, стартапы |
Квалификация кодера | Подойдёт и фрилансер, и студент, парень из Бангалора за бананы, и даже рукожоп | Фрилансер, студия | Адекватная команда с хорошими компетенциями прямыми руками | Толковая и опытная команда |
Плюсы | Бесплатно, много доступных готовых решений | Скорость разработки, управляемость, предсказуемость системы | Скорость разработки, управляемость, предсказуемость системы | Чёткий структурированный код, хорошая масштабируемость системы |
Минусы | Уязвимость, сомнительное качество кода, плохая масштабируемость | Ограничения по бизнес-логике, сомнительное качества кода | На поддержке нужны вменяемые разработчики | Большое делается по-взрослому |