Ответить на вынесенный в заголовок вопрос не всегда просто и опытному веб-разработчику, т.к. выбор платформы, на которой планируется делать проект, зависит от множества нюансов. А потенциальному заказчику, который не имеет широкого технического кругозора, еще сложнее сориентироваться в огромном мире современной веб-разработки.
На сегодняшний момент существуют десятки различных платформ, инструментов и технологий, которые могут быть применены при создании сайта. Попробуем в этом зоопарке разобраться и понять, почему выбор одного над другим будет лучше или хуже. Данная статья будет сконцентрирована на выборе между Битриксом и Symfony.
Может показаться, что заказчику, по большому счету, совершенно не интересно, на какой платформе будет сделан его проект. Выполнял бы свою функцию, стоил бы дешево (или лучше — бесплатно) и ладно. Однако это далеко не всегда так.
Заказчик, который хочет реализовать новый проект исходит из определенных соображений:
Об этом обо всем, а также о других вещах попробуем и поговорить в этой статье.
На мой взгляд компетентность подрядчика является одним из главных факторов выбора. В России очень много некомпетентных разработчиков, к сожалению. WordPress, Drupal, Joomla — это все CMS, на которых пытаются делать сайты вчерашние школьники. Основной плюс этих CMS заключается в том, что можно сравнительно быстро запустить первую версию проекта с приложением минимума усилий без привлечения серьезных специалистов.
Есть и исключения. На WordPress и Drupal можно в действительности создавать очень и очень серьезные проекты. Но это настолько редкое явление, что его можно не брать в расчет.
Что до 1С-Битрикс, то это платная платформа. Разработчиков на этой CMS существенно меньше, чем на тот же Drupal или WordPress в мире (но не в России, вот парадокс). Однако, благодаря маркетологам, этот продукт крайне популярен в Российском сегменте, особенно ecommerce. Разработчики в этом сегменте есть, их много, но их компетенция в большинстве случаев оставляет желать лучшего. Есть, опять же, исключения. Хорошие студии и разработчики стоят «хороших» денег, и у них, как правило, всегда есть много работы на месяцы или даже годы вперед.
Symfony же — это opensource фреймворк, который развивается студией SensioLabs и сообществом разработчиков. В него более высокий порог вхождения, т.к. работа с этим фреймворком требует определенных знаний. Если ты не умеешь и не понимаешь определенных низкоуровневых концепций, то тебя не ждет успех в освоении Symfony.
При прочих равных, если взять трех случайных разработчиков, поднявшихся до звания среднего разработчика при изучении разных платформ — WordPress, Битрикс и Symfony, то последний будет обладать наибольшим багажом знаний и навыков, необходимых современному разработчику. Это делает его более конкурентоспособным и квалифицированным по отношению к другим его коллегам.
Если разработчик знаком с Symfony, то он обладает достаточным багажом знаний, чтобы оперативно адаптироваться к любой другой CMS платформе или фреймворку. Если же разработчик знаком только с WordPress или c 1C-Битрикс, то ему будет довольно сложно разобраться в Symfony. Такова реальность.
Также это является одной из причин, почему в РФ гораздо меньше потенциальных подрядчиков для разработки проектов на Symfony, чем на Битрикс. Symfony сложнее, а Битрикс — проще. Поэтому на Битриксе очень легко найти разработчика, их много (но очень много дилетантов), а на Symfony — наоборот, найти разработчиков сложнее, но шанс нарваться на дилетанта гораздо меньше.
Для заказчика это очень сомнительная метрика, но она имеет очень высокий вес для разработчика.
Если изучить российский сегмент интернета по тематике IT и web-технологий, и разработки в частности, можно быстро сформировать мнение о том, что Битрикс — это продукт принципы разработки и поддержки которого застряли где-то в середине двухтысячных. Современный мир не стоит на месте и постоянно порождает множество полезных и удобных практик, инструментов. Все это очень медленно внедряется разработчиками платформы, что приводит к усложнению или невозможности их использования. Из-за этого процесс разработки под 1С-Битрикс замедляется и усложняется, а репутация продукта в глазах разработчиков регулярно падает.
Если же рассматривать Symfony, то этот продукт стремительно развивается на протяжении многих лет (с 2007 года), он задает импульс для всех современных инструментов и технологий. Множество инструментов, разработанных в рамках проекта Symfony, перекочевывает и в другие проекты. Взять тот же WordPress, или Drupal, или даже phpBB — все эти проекты используют кусочки кода и принципы, которые впервые были разработаны для Symfony.
На 1С-Битрикс можно реализовать систему абсолютно любой сложности. Это же написано где-то в официальном руководстве разработчика Битрикс. По сути это означает, что никаких ограничений в Битриксе нет — делай что хочешь. Но есть одно «но» — можно делать только то, что входит в рамки поддерживаемых Битриксом технологий. Например, если хотите использовать 1С-Битрикс с Oracle — необходимо написать собственный драйвер для работы с этой СУБД. Хотите изменить состав какой-то из административных страниц — нужно действовать в рамках логики, задуманной разработчиками 1С-Битрикс (. Подобные рамки ограничений, перед которыми ставит 1С-Битрикс, присутствуют в продукте в большом количестве.
Symfony позволяет в действительности снять эти ограничения. Есть рекомендуемый путь решения задач, но каждый разработчик волен пойти своим путем. Это накладывает определенную ответственность на разработчика (возвращаясь к компетентности), но одновременно дает полную свободу. Фреймворк построен таким образом, что можно изменить если не все, то почти все. Единственный минус — это сторонние решения других разработчиков — там вы тоже должны действовать в рамках логики, заложенной разработчиком, но и опять же, разработчик тоже может дать вам возможности по стопроцентному изменению всех возможностей его решения.
У 1С-Битрикс в действительности очень много готового функционала идет из коробки. Еще больше готовых решений есть в его маркетплейсе. Казалось бы, что еще нужно. Однако на деле все снова упирается в гибкость. За все время я не сталкивался ни с одним проектом, где заказчика бы полностью устраивало то, что предлагает Битрикс. Такова реальность. Бизнес — он всегда разный. У каждого бизнеса есть свои, уникальные потребности, которые далеко не всегда можно удовлетворить с помощью Битрикса и его возможностей (или можно, но дорого).
Качество готовых решений тоже оставляет желать лучшего. Большинство решений — это на скорую руку слепленные модули, которые написаны вчерашним студентом и стоят денег. Они не обладают единой структурой и единым подходом к управлению, не протестированы с именно вашей версией продукта, скорее всего они будут медленными на больших нагрузках и при больших данных.
Что касается Symfony, то выбор готовых решений для него тоже достаточно велик. По большому счету, можно к Symfony присобачить абсолютно любой кусочек кода из интернета, написав небольшую обертку. Главное, чтобы он был совместим с нужной версией php. В Битриксе так сделать гораздо сложнее, а иногда и вообще невозможно.
Да, тут речь идет о готовых решениях разного уровня. Если в Битриксе готовые решения чаще всего решают конкретную задачу бизнеса в рамках логики, предоставляемой CMS платформой: компонент отзывов для товаров, модуль оплаты с помощью сбербанка и т.д. В Symfony же готовые решения имеют более низкий уровень: каркас для построения системы отзывов на сайте, комплект инструментов для интеграции с эквайрингом сбербанка.
Для типовых случаев будет выигрывать Битрикс. Если же случай нетиповой, то тут Symfony будет в выигрыше, т.к. дает больше свободы.
Symfony может проиграть на почве типовых решений для РФ, например, тот же обмен с 1С. Но это для случая типового обмена. Если же обмен нужен нетиповой, то доработка этого механизма в Битриксе несет в себе существенные сложности, что порой быстрее реализовать его с нуля, а в Symfony это будет сделать проще (а значит — дешевле).
Как уже говорилось выше, процесс разработки с использованием современных стандартов под Битрикс — это не сахар. Тут попробую раскрыть эту тему чуть более детально.
Современные проекты имеют склонность к высокому уровню автоматизации различных процессов — автотестирование, авторазвертывание, автобекапирование и т.д. Если очень грубо, то разработчик сразу же после внесения изменений в код может набрать одну команду (или нажать кнопку), которая автоматически отправит весь этот код на «тестовый» сервер, там проведет все автоматические тесты, после прохождения которых код будет залит на «боевой сервер» с выполнением предварительного бекапирования и возможностью легкого отката в случае неудачи.
Так вот с Битриксом построить такую систему — очень дорого. Это дорого, потому что Битрикс так устроен By Design, не продумано это от слова совсем.
Symfony же проектировался специально таким образом, чтобы все подобные процессы можно было выполнять в любом окружении, что позволяет гораздо дешевле выстроить процесс автоматизации задач разработки.
Битрикс всегда славился безопасностью своей CMS. Поговаривают, что это одна из самых безопасных CMS систем на российском рынке, и это похоже на правду. Но и здесь есть нюанс — разработчики. Битрикс очень слабо контролирует код, написанный разработчиками. А исходя из того, что разработчики под Битрикс у нас в стране довольно слабые, то они запросто могут написать много небезопасного кода. Кроме этого, Битрикс распространяет собственные вспомогательные инструменты (например, скрипт restore.php для восстановления дампа), которые написаны на коленке, и чаще всего причиной взлома того или иного продукта является один из этих инструментов.
В Symfony подход к безопасности — маниакальный. Платформа всячески сопротивляется небезопасному коду, и просто не дает шанса написать небезопасный код. Конечно, «обезьяна с гранатой» все равно может все испортить, но вероятность этого крайне мала.
Документация на 1С-Битрикс довольно объемна, она содержит много информации, которая структурирована по разделам. Доступны текстовые и видео-курсы, блоги разработчиков, форумы с сообществом. Есть документация на разные части платформы, API, компоненты, административный раздел. Но есть и недостатки: документация недостаточно хорошо структурирована, местами дублируется, а местами отсутствует, изменения в документации не отслеживаются.
В Symfony документация устроена довольно лаконично, имеет версионность, ведутся блоги с информацией об обновлениях. Сообщество строится вокруг кода, который открыт для внесения изменений — любой разработчик на планете может внести свой вклад в разработку Symfony. Документация отвечает на 99% возникающих по Symfony вопросов.
РФ является пока отстающей по части своего вклада в веб-разработку на php, хотя есть отдельные компании и личности, которые очень многое делают для этого. Разработчики Symfony — одни из лидеров в этом плане. На них ориентируются многие, они задают стандарты, они реализовывают популярные инструменты разработчиков, они их поддерживают и развивают, строят сообщества вокруг них. Symfony на 100% мировой продукт, т.к. отвечает всем критериям качественного продукта в современном мире php.
Про Битрикс, к сожалению, такого сказать нельзя. Он не вносит никакого вклада в opensource, придерживается устаревших подходов, плохих примеров кода, но свою нишу в пределах РФ и ближнего зарубежья занимает.
Есть у Битрикса и явные преимущества. Одним из них является возможность быстрого развертывания первого прототипа приложения. Если у вас очень много денег и есть идея очень крутого проекта, то можно попробовать собрать его на готовых стандартных компонентах Битрикса. Это будет довольно быстро, дешево и сердито, что при большом бюджете будет незаметно. Но это будет прототип. Если он взлетит, то вопрос на какой платформе все же делать проект останется открытым.
Благодаря своей заточенности под РФ, в Битриксе есть готовые решения, специфичные для российского бизнеса. Это и интеграции с российскими платежными системами, логистическими службами, учетными системами, соответствие российским федеральным законам. В Symfony этого ничего нет, т.е. разработка подобного функционала потребует дополнительных затрат
Если у вас очень мало денег и есть потребность в типовом интернет-проекте, то Битрикс — это хороший выбор. В маркетплейсе Битрикса есть очень много готовых решений для разных сфер бизнеса — бери и начинай, можно развернуть сайт за один вечер очень дешево.
Кроме того, Битрикс можно «пощупать» в демо-версии. Пощупать голый Symfony невозможно, т.к. под каждый проект собирается собственная сборка. Но можно пощупать какие-то готовые решения на основе Symfony, взять тот же магазин Sylius — вот.