Проект на Laravel: все точки над i
Редкий заказчик приходит к нам с четким пожеланием «Хочу проект на Laravel!» — как правило, в запросах на разработку чаще фигурируют возможности будущего сайта, а не конкретный стек технологий.
Для фронтэнда мы обычно используем Vue. js, который отлично подходит для разработки быстрых и мощных пользовательских интерфейсов. Бэкенд для e-commerce делаем на Laravel либо на 1С-Битрикс — и тут всё сильно зависит от нужной функциональности:
- Если функциональность сайта плюс-минус стандартная — справится Битрикс: он отлично коннектится с 1С и ускоряет разработку.
- Если нужно добавить нетривиальных интеграций — это может быть связка Битрикс и Laravel, потому что так проще и удобнее интегрироваться с той же 1С и выйдет дешевле, чем на чистом фреймворке.
- Когда проект нетиповой, с миллионом личных кабинетов, ролей, акций, скидок, умных корзин и прочих сложностей — рекомендуем делать проект на чистом фреймворке.
Коротко о Laravel
Фреймворки, как правило, имеют хорошую и продуманную базовую архитектуру и готовый код для наиболее типовых действий, требуемых на каждом проекте: например, проверка прав доступа или работа с базой данных. На основе такого фундамента программисты могут построить высоконагруженный проект практически любой сложности.
Разработчикам Laravel нравится по нескольким причинам:
- простой и понятный синтаксис, с которым легко разобраться;
- мощные функции: есть роутинг (маршрутизация данных), проверка прав доступа, работа с базой данных, работа с пользователями, настройка очередей и запланированных заданий (например, при импорте данных из ERP на сайт), а также модульное и интеграционное тестирование;
- развитое комьюнити, с которым легко найти ответы на любые вопросы, плюс есть своя конференция — Laracon;
- возможность кэширования (хранения копии данных) на стороне сервера плюс широкие возможности и инструменты для отладки и оптимизации скорости работы;
- пачка библиотек и пакетов, с которыми можно писать код быстро, просто и удобно;
- быстрая настройка мультиязычности — особенно важно для проектов с международной локализацией;
- возможность выбрать админ-панель — для Laravel есть сразу несколько.
Главный минус при этом — скорость, цена и требования к разработчикам. Скорость за счет полной кастомизации под задачи заказчика будет ниже, чем при разработке на CMS, цена из-за бОльших временных затрат — выше. Ну и не каждый студент, работающий за еду, сможет справиться с фреймворком — а вот с Битриксом на несложных проектах такой номер может прокатить.
Страхи заказчиков
- «Никогда о нем не слышал»: многие заказчики признаются, что Laravel для них — что-то неизведанное, и поэтому опасаются проектов на этом фреймворке. Между тем, Laravel остается одним из самых популярных фреймворков в мире.
- «Проект зарубежный, не доверяю»: в условиях санкций, в которых Россия живет с февраля 2022, многие зарубежные сервисы действительно перестали работать на российском рынке. Но поскольку Laravel — проект с открытым исходным кодом, доступный для всех и бесплатно, санкции ему не страшны.
Уязвимости закрывают с обновлениями, и если вовремя не обновлять ядро Битрикса, вы значительно облегчаете задачу хакерам.
Битрикс устанавливается сразу с пачкой модулей: их внутри по несколько десятков штук. Даже если в проекте какой-то из них не используется, но его не удалили, и в нём нашлась уязвимость — проект могут взломать через неё. В Laravel и во фреймворках в принципе таких модулей нет. Здесь устанавливается только то, что нужно.
- «Где потом искать специалистов?»: PHP — достаточно популярный язык программирования, который по прежнему входит в пятерку самых распространенных. Поэтому и кодеры, умеющие писать на нём (а Laravel — это как раз PHP-фреймворк) вряд ли переведутся в ближайшее время. Даже простой срез по резюме в России находит тысячи предложений от разработчиков на Laravel — вы и подавно справитесь с поиском.
- «Долго и дорого»: ну тут, смотря с чем сравнивать, конечно. Понятно, что для сайта-визитки или небольшого корпоративного проекта фреймворк — явно лишнее: это выйдет действительно дороже и дольше, чем собрать его на одной из популярных CMS или вообще — на конструкторе.
Но когда дело доходит до действительно сложных функций вроде зависимостей скидок и акций от миллиона параметров или необходимости собрать 40+ сайтов франчайзи под одной крышей — фреймворк куда оправданнее и в итоге — дешевле. Особенно, если вы попытаетесь сначала сделать «как-нибудь», из этого ничего не выйдет, и вы — один черт — поймете, что без фреймворка не получится. Делать сразу на нём в этот случае выйдет даже выгоднее :)
Если проект небольшой (корпоративный сайт, к примеру), то за счет меньшей кастомизации админ-панели времени уйдет еще меньше — поэтому разница в соотношении Laravel/Битрикс получится ещё менее ощутимой.
Преимущества Laravel
Масштабируемость
Например, у вас всё начиналось с простого интернет-магазина: каталог, карточки, страница заказа, скромный личный кабинет — проект-мечта, для него даже лицензии «Малый бизнес» на Битриксе вполне хватило бы. Разработали, запустили — ходим довольные, собираем заказы, получаем денежку от покупателей.
Бизнес начинает расти, функции сайта — усложняются и дорабатываются: появился личный кабинет дилера или торговой точки, добавились скидки и акции, умный расчет доставки, усложнилась складская политика и потребовались интеграции со складами по всей стране, а еще — интеграции с другими сервисами вроде кредитной рассрочки. А потом в какой-то момент вы — вжух — и стали маркетплейсом, и количество посещений в месяц стало просто зашкаливать.
Код при нанизывании функций обрастал все новыми строками и постепенно превращался во Франкенштейна: там заплатка, там костыль, тут дописано, здесь переписано, а при черной пятнице у пользователей то и дело мелькает ошибка «504 (Gateway Time Out)» — прощай, всякая сверхприбыль. Каждое новое добавление функций происходит со всё большим скрипом: нужно как-то «дружить» новый код с текущим и поддерживать тот, что уже есть. А ограничения исходной CMS этого уже не дают.
Рано или поздно в такой ситуации останется всего два варианта: бросить эту умирающую лошадь и написать проект заново либо затеять большой и страшный рефакторинг (в умелых руках, на самом деле, не такой уж страшный).
Так вот, c проектами на фреймворках вероятность подобного сценария куда ниже. Особенно, если у тех, кто писал код, изначально были прямые руки. Тут никаких тебе ни блоков готовых, ни ограничений по их возможностям, как у Битрикса — поэтому есть полная свобода дописывать новое и нанизывать функции одна за одной, как только те понадобятся. Но это не значит, что вы когда-то написали код и можете расслабиться — если его никак не поддерживать, года через 4 сайт можно будет просто выкинуть. Даже если он сделан на самом прекрасном фреймворке.
Кастомизируемость
Типовые проекты хороши тем, что вполне предсказуемы: вот тут у тебя главная страница с минимумом изысков, тут — простенький каталог с фильтром и поиском «из коробки» Битрикса, а здесь — вполне типовая корзина.
Но по правде, проекты со стандартным набором функций к нам приходят довольно редко. Как правило, всегда нужна какая-то хитрая функциональность вроде навороченных личных кабинетов, лютых механик со скидками или многослойных конструкторов, которые одним Битриксом не воплотишь.
С фреймворками легко кастомизировать функционал на сайте, если это нужно заказчику. Под его запрос на Laravel можно сделать что угодно:
- гибко настроить админ-панель: внутри будет только то, что нужно;
- создать конструкторы чего угодно: от типовых текстовых страниц до продающих лендингов;
- собрать нафаршированный личный кабинет, с которым легко автоматизировать обработку заявок и влёт сэкономить несколько сотен тысяч рублей на зарплате менеджерам;
- настроить доступ к заказам по регионам через админ-панель;
- интегрировать проект с разными службами доставки в разных регионах;
- гибко настроить систему лояльности;
- и много чего еще.
Стабильное развитие
Когда Laravel на проекте оправдан
Но в реальности мы все сталкиваемся с ограничениями: как правило, и по деньгам, и по времени, и по техническим параметрам. Тогда приходится лавировать и выбирать.
1. Маркетплейсы с нуля
На проекте SOLOMATech мы тоже столкнулись с подобными неизвестными. Хотелок заказчика и потенциальных фич было много, поэтому на первом этапе мы определились с составом MVP: разобрались со структурой каталога и местом хранения товаров, вывели эти данные в каталоге и занялись личным кабинетом поставщика.
Каталог получился удобнее, чем на больших маркетплейсах: внутри есть мастер-товары, для которых поставщики создают торговые предложения, не заполняя вручную характеристики и описания и не загружая фотографии. Пользователям такой каталог тоже понравится: вместо пачки одинаковых на вид товаров в выдаче все варианты предложений от поставщиков собраны в одной карточке.
Ещё один аргумент «за» — админ-панель. Мы выбрали для проекта Orchid, её можно закастомить так, как нужно: сгруппировать сущности, визуально выделить необходимые элементы — фактически, создать своего рода CRM на сайте.
2. Франшизы
Если открыть сайты дилеров авто в двух разных регионах — скорее всего, они будут похожими, но чуточку разными. И это — частая проблема для головной компании. Сложно задавать единые стандарты, сложно наследовать дизайн, а ещё сложнее — управлять таким бизнесом. Особенно, если у тебя не просто сайт с модельками машин, а настоящий интернет-магазин, растиражированный на N-ное количество франшиз. Со своими скидками, акциями и системами лояльности для пользователей.
Похожую задачу нам пришлось решать на проекте Fitness Formula: у заказчика было 40+ почти одинаковых сайтов в разных регионах, которые нужно было как-то собрать под одной крышей и обновить так, чтобы не порушить то, что уже настроено у разных франчайзи:
- интеграции со своими ERP, платежными системами, службами фискализации и доставки, сервисами sms-уведомлений;
- скидки и механизм работы бонусной системы;
- новости, акции, блоки на главной, видимость товаров в каталоге и прочие штуки, которые они могут редактировать из админки;
- просмотр заказов (да так, чтобы случайно не получить доступ к данным другого франчайзи);
- и десятки других нюансов.
3. Нетривиальные скидки и акции
Именно так мы и поступили, когда создавали интернет-магазин для BeeColor. У заказчика непростая бизнес-логика, где есть торговые представители, контрагенты и обычные пользователи, зашедшие на сайт. У торговых представителей — свои контрагенты, с которыми нужно постоянно контактировать и формировать заказы. А еще есть скидки и акции — сложные и разные, — которые дают львиную долю продаж и которыми нужно как-то управлять.
Учитывая комплекс задач, мы сразу поняли — с такой бизнес-логикой справится только фреймворк.
4. Интерактивы пользователей, конструкторы и гибкие фильтры
Сначала в дело вступает фильтр: он ищет квартиры в базе застройщика по количеству комнат, площади, стоимости и специфическим требованиям вроде акций, скидок и маткапитала. Дальше пользователь может уточнять запрос по другим параметрам вроде типа планировки и этажа, вида из окон и даже наличию панорамного остекления.
Если фильтр не помог определиться с выбором, в дело вступает интерактивный подборщик на странице конкретного жилого комплекса: с помощью 3D-моделей за 4 шага можно найти квартиру мечты. Все шаги подборщика можно настраивать через админ-панель.