Когда оправдана разработка на фреймворке, чего в Laravel боятся заказчики и стоит ли этого опасаться на самом деле — разбираем по полочкам
Проект на Laravel: все точки над i
Сибирикс

Проект на Laravel: все точки над i

Когда оправдана разработка на фреймворке, чего в Laravel боятся заказчики и стоит ли этого опасаться на самом деле — разбираем по полочкам

Редкий заказчик приходит к нам с четким пожеланием «Хочу проект на Laravel!» — как правило, в запросах на разработку чаще фигурируют возможности будущего сайта, а не конкретный стек технологий.

Для фронтэнда мы обычно используем Vue. js, который отлично подходит для разработки быстрых и мощных пользовательских интерфейсов. Бэкенд для e-commerce делаем на Laravel либо на 1С-Битрикс — и тут всё сильно зависит от нужной функциональности:

  • Если функциональность сайта плюс-минус стандартная — справится Битрикс: он отлично коннектится с 1С и ускоряет разработку.

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

  • Когда проект нетиповой, с миллионом личных кабинетов, ролей, акций, скидок, умных корзин и прочих сложностей — рекомендуем делать проект на чистом фреймворке.
Да, на месте Laravel мог бы быть любой другой фреймворк — но этот мы выбрали за хорошую документацию, качественную реализацию и большое дружное сообщество. А ещё за то, что у нас на нем написан уже не один проект, который радует заказчиков го-да-ми. А это дорогого стоит в век молниеносно меняющихся технологий.

Иван
Технический директор
— В студии не стоит вопроса о поиске какого-то другого фреймворка для разработки: мы используем Laravel, потому что он понятный и удобный. Чтобы найти альтернативу — если вот так вот взять и захотеть это сделать — понадобится максимально фундаментальный рисёч. А это сотни часов времени — не только на поиск другого фреймворка, но и проверку всех кейсов кода, которые могут возникнуть. Плюс еще сотни часов переучивания программистов. Напрашивается резонный вопрос: «А зачем?!».

Коротко о Laravel

Laravel — фреймворк с открытым исходным кодом для создания веб-приложений на языке PHP.
Фреймворк переводится с английского как «каркас», и по факту это каркас для разработки — то есть программный продукт, который упрощает создание сложных по функциональности и высоко нагруженных проектов.

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

Разработчикам Laravel нравится по нескольким причинам:

  • простой и понятный синтаксис, с которым легко разобраться;
  • мощные функции: есть роутинг (маршрутизация данных), проверка прав доступа, работа с базой данных, работа с пользователями, настройка очередей и запланированных заданий (например, при импорте данных из ERP на сайт), а также модульное и интеграционное тестирование;
  • развитое комьюнити, с которым легко найти ответы на любые вопросы, плюс есть своя конференция — Laracon;
  • возможность кэширования (хранения копии данных) на стороне сервера плюс широкие возможности и инструменты для отладки и оптимизации скорости работы;
  • пачка библиотек и пакетов, с которыми можно писать код быстро, просто и удобно;
  • быстрая настройка мультиязычности — особенно важно для проектов с международной локализацией;
  • возможность выбрать админ-панель — для Laravel есть сразу несколько.

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

Главный минус при этом — скорость, цена и требования к разработчикам. Скорость за счет полной кастомизации под задачи заказчика будет ниже, чем при разработке на CMS, цена из-за бОльших временных затрат — выше. Ну и не каждый студент, работающий за еду, сможет справиться с фреймворком — а вот с Битриксом на несложных проектах такой номер может прокатить.

Страхи заказчиков

  • «Никогда о нем не слышал»: многие заказчики признаются, что Laravel для них — что-то неизведанное, и поэтому опасаются проектов на этом фреймворке. Между тем, Laravel остается одним из самых популярных фреймворков в мире.
  • «Проект зарубежный, не доверяю»: в условиях санкций, в которых Россия живет с февраля 2022, многие зарубежные сервисы действительно перестали работать на российском рынке. Но поскольку Laravel — проект с открытым исходным кодом, доступный для всех и бесплатно, санкции ему не страшны.

Нататья
Аккаунт-менеджер
— Сейчас проекты на родном Битриксе кажутся даже более уязвимыми, чем на зарубежных фреймворках — хакеры постоянно ищут дыры в защите и порой их находят, взламывая сайты. Со взломом Битрикса мы встречались на практике не один раз, Laravel в подобном пока замечен не был.

Владимир
CEO&Founder
— В последнее время Битрикс развивается крайне медленно, и, возможно, не туда. В системе полно устаревшего легаси-кода. А недавние события показали, что с безопасностью там всё не очень хорошо: весной были массовые атаки, и сотни сайтов были взломаны. Жаль, потому что в систему очень много чего заложено.

Иван
Технический директор
— Битрикс — популярная CMS, содержит огромное количество модулей, зачастую достаточно старых, с очень разным качеством кода, поэтому в нём относительно легко найти уязвимости. И их находят.

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

Битрикс устанавливается сразу с пачкой модулей: их внутри по несколько десятков штук. Даже если в проекте какой-то из них не используется, но его не удалили, и в нём нашлась уязвимость — проект могут взломать через неё. В Laravel и во фреймворках в принципе таких модулей нет. Здесь устанавливается только то, что нужно.
  • «Где потом искать специалистов?»: PHP — достаточно популярный язык программирования, который по прежнему входит в пятерку самых распространенных. Поэтому и кодеры, умеющие писать на нём (а Laravel — это как раз PHP-фреймворк) вряд ли переведутся в ближайшее время. Даже простой срез по резюме в России находит тысячи предложений от разработчиков на Laravel — вы и подавно справитесь с поиском.
  • «Долго и дорого»: ну тут, смотря с чем сравнивать, конечно. Понятно, что для сайта-визитки или небольшого корпоративного проекта фреймворк — явно лишнее: это выйдет действительно дороже и дольше, чем собрать его на одной из популярных CMS или вообще — на конструкторе.

Но когда дело доходит до действительно сложных функций вроде зависимостей скидок и акций от миллиона параметров или необходимости собрать 40+ сайтов франчайзи под одной крышей — фреймворк куда оправданнее и в итоге — дешевле. Особенно, если вы попытаетесь сначала сделать «как-нибудь», из этого ничего не выйдет, и вы — один черт — поймете, что без фреймворка не получится. Делать сразу на нём в этот случае выйдет даже выгоднее :)

Нататья
Аккаунт-менеджер
— Если сравнивать, разработка интернет-магазина на Laravel получится дольше чем на Битриксе процентов на 12 (а это всего неделя-две), а по стоимости — дороже в среднем на 20%.

Если проект небольшой (корпоративный сайт, к примеру), то за счет меньшей кастомизации админ-панели времени уйдет еще меньше — поэтому разница в соотношении Laravel/Битрикс получится ещё менее ощутимой.

Преимущества Laravel

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

Масштабируемость

Легко развивать и растить проект — здесь сложнее упереться в потолок по функциональности, как с Битриксом: ни при растущей на сайт нагрузке, ни по функциям. Касается это не только Laravel, но вообще любых фреймворков (при условии, что проект разрабатывали грамотные специалисты). Сейчас расскажем.

Например, у вас всё начиналось с простого интернет-магазина: каталог, карточки, страница заказа, скромный личный кабинет — проект-мечта, для него даже лицензии «Малый бизнес» на Битриксе вполне хватило бы. Разработали, запустили — ходим довольные, собираем заказы, получаем денежку от покупателей.

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

Код при нанизывании функций обрастал все новыми строками и постепенно превращался во Франкенштейна: там заплатка, там костыль, тут дописано, здесь переписано, а при черной пятнице у пользователей то и дело мелькает ошибка «504 (Gateway Time Out)» — прощай, всякая сверхприбыль. Каждое новое добавление функций происходит со всё большим скрипом: нужно как-то «дружить» новый код с текущим и поддерживать тот, что уже есть. А ограничения исходной CMS этого уже не дают.

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

Так вот, c проектами на фреймворках вероятность подобного сценария куда ниже. Особенно, если у тех, кто писал код, изначально были прямые руки. Тут никаких тебе ни блоков готовых, ни ограничений по их возможностям, как у Битрикса — поэтому есть полная свобода дописывать новое и нанизывать функции одна за одной, как только те понадобятся. Но это не значит, что вы когда-то написали код и можете расслабиться — если его никак не поддерживать, года через 4 сайт можно будет просто выкинуть. Даже если он сделан на самом прекрасном фреймворке.

Кастомизируемость

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

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

С фреймворками легко кастомизировать функционал на сайте, если это нужно заказчику. Под его запрос на Laravel можно сделать что угодно:

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

Стабильное развитие

Laravel постоянно развивается — версии обновляются часто, а развитое комьюнити постоянно следит за ошибками, которые оперативно устраняются.
Laravel: свежие действия на GitHub на начало ноября 2023

Когда Laravel на проекте оправдан

Если у вас есть в запасе чемодан денег на любой каприз и сроки вообще не жмут — Laravel априори оправдан. На нем действительно можно создать проект любой сложности: от сайта-визитки до маркетплейса.

Но в реальности мы все сталкиваемся с ограничениями: как правило, и по деньгам, и по времени, и по техническим параметрам. Тогда приходится лавировать и выбирать.

Иван
Технический директор
— Если проект предполагает интеграцию с «1С» — в 9 случаях из 10 предпочтительнее взять Битрикс, чтобы не изобретать этот обмен с «1С» с нуля и не писать его вручную. Если заказчику не нужна админка в принципе — зачем ему тогда Битрикс: лучше взять Laravel. Выбор здесь зависит от запросов заказчика, требований по функциональности и условий работы будущего проекта.
По опыту скажем, что разработка на фреймворке точно оправдана в нескольких случаях:

1. Маркетплейсы с нуля

У маркетплейсов всегда много переменных на старте. Как правило, неясно, как и откуда товары будут загружаться в каталог (а еще неизвестны их категории и потенциальный объем загрузок товаров от будущих поставщиков), как они будут храниться и как всё это модерировать. Очень часто заказчики будущих маркетплейсов смутно представляют механизм оплат и возвратов, способы привлечения поставщиков на площадку и бухгалтерские и налоговые нюансы.

На проекте SOLOMATech мы тоже столкнулись с подобными неизвестными. Хотелок заказчика и потенциальных фич было много, поэтому на первом этапе мы определились с составом MVP: разобрались со структурой каталога и местом хранения товаров, вывели эти данные в каталоге и занялись личным кабинетом поставщика.

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

Полина
Руководитель проекта
— Уже на старте было понятно, что проект технически непростой. Мы с заказчиком сразу проговорили, что нужна админка, которая будет служить рабочим местом менеджеров, где те смогут работать с документами и заказами, подтверждениями от поставщиков и оплатами — и всё это должно быть на стороне сайта. Поэтому сайт решили делать на фреймворке.

Ещё один аргумент «за» — админ-панель. Мы выбрали для проекта Orchid, её можно закастомить так, как нужно: сгруппировать сущности, визуально выделить необходимые элементы — фактически, создать своего рода CRM на сайте.

2. Франшизы

Если открыть сайты дилеров авто в двух разных регионах — скорее всего, они будут похожими, но чуточку разными. И это — частая проблема для головной компании. Сложно задавать единые стандарты, сложно наследовать дизайн, а ещё сложнее — управлять таким бизнесом. Особенно, если у тебя не просто сайт с модельками машин, а настоящий интернет-магазин, растиражированный на N-ное количество франшиз. Со своими скидками, акциями и системами лояльности для пользователей.

Похожую задачу нам пришлось решать на проекте Fitness Formula: у заказчика было 40+ почти одинаковых сайтов в разных регионах, которые нужно было как-то собрать под одной крышей и обновить так, чтобы не порушить то, что уже настроено у разных франчайзи:

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

Полина
Руководитель проекта
— На проекте важно было настроить доступ к заказам по регионам, но Битрикс не умеет запрещать региональным админам смотреть чужие заказы и чужих пользователей. Упершись в это непреодолимое противоречие, мы решили разрабатывать сайт на Laravel.

3. Нетривиальные скидки и акции

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

Именно так мы и поступили, когда создавали интернет-магазин для BeeColor. У заказчика непростая бизнес-логика, где есть торговые представители, контрагенты и обычные пользователи, зашедшие на сайт. У торговых представителей — свои контрагенты, с которыми нужно постоянно контактировать и формировать заказы. А еще есть скидки и акции — сложные и разные, — которые дают львиную долю продаж и которыми нужно как-то управлять.

Полина
Руководитель проекта
— Ключевых задач было три: автоматизировать бизнес-процесс (а он был непростой и не слишком удобный для менеджеров и В2В-клиентов BeeColor), создать удобный личный кабинет для торговых представителей и учесть интересы новой целевой аудитории — B2C-пользователей.
Учитывая комплекс задач, мы сразу поняли — с такой бизнес-логикой справится только фреймворк.

4. Интерактивы пользователей, конструкторы и гибкие фильтры

На сайте для тюменского застройщика ГК «ТИС» главная фишка — умный подборщик квартир.

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

Если фильтр не помог определиться с выбором, в дело вступает интерактивный подборщик на странице конкретного жилого комплекса: с помощью 3D-моделей за 4 шага можно найти квартиру мечты. Все шаги подборщика можно настраивать через админ-панель.
Для продающих страниц жилых комплексов и для простых текстовых мы разработали конструкторы: с ними заказчик сам может создавать какие угодно страницы на своё усмотрение.

Елена
Исполнительный директор и руководитель проекта
— Да, можно было извернуться и реализовать нечто подобное и на CMS, но заказчик пришел к нам с четким пожеланием: «Никакого Битрикса!». В прошлом у них были проблемы с техподдержкой, поэтому мы выбрали совсем другой стек технологий и ни разу не пожалели об этом.

5. Ограничения по функциональности

Бывает так, что проект растет и развивается годами, всё время добавляя новый функционал по мере роста и масштабирования. Например, интернет-магазин Ormatek однажды стал маркетплейсом. Но не остановился на этом и пошел дальше.

Иван
Технический директор
— Из недавнего и нетривиального — мы делали на Laravel систему обмена заказами между сразу несколькими «1С» и сторонними маркетплейсами (Озон, Сбермаркет, Яндекс).
Подобные импорты не получится реализовать силами Битрикса, на котором написан сайт проекта. Но функциональность можно расширить, используя мощные возможности фреймворка. Подробнее об этом — расскажем в следующих постах блога. А пока — итоги.

Итоги

1
Laravel — популярный PHP-фреймворк, который быстро развивается и внушает доверие с точки зрения безопасности.
2
Разработка на Laravel обычно выходит чуть дольше и дороже, чем на Битриксе, но обычно эта цена всегда оправдана: или граблями, на которые до этого вы уже наступили, или ограничениями CMS.
3
Главные плюсы Laravel и вообще всех фреймворков: масштабируемость и кастомизируемость. Проекты могут расти и развиваться без ограничений, а внутри можно заточить всё так, как нужно именно вам и вашему бизнесу.
4
Если проект предполагает интеграцию с «1С» — скорее всего, лучше взять Битрикс: это проще, быстрее и дешевле.
5
Если на проекте предполагается сложная бизнес-логика, хитрые интерактивы с пользователями или планируется развернуть собственный маркетплейс — выбирайте Laravel.
6
Иногда проект можно сделать на фреймворке не полностью — там, где не хватает функциональности CMS, хорошо работает связка Битрикса и Laravel.