Архитектура Laravel с админкой, CRM и клиентом

145
17 августа 2018, 13:40

Всем привет. Сейчас есть приложение на Laravel, где есть админка и клиентская часть. Вход в админку идет через обычный /admin, для нее сделано отдельное пространство имен App\Controllers\Admin. Авторизации на клиентской части нет, поэтому админка работает через дефолтную авторизацию.

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

Скажите, каким образом лучше всего построить архитектуру в данном случае, правильно ли я делаю? Не будет ли лучше разбить это на 3 независимые части, а CRM-систему вовсе вынести на отдельный сервер? Если да, то как брать данные с сервера, где лежит информация о товарах и т.д.? Если это делать через API, то это довольно большая нагрузка, поскольку каждый заказ автоматически связывается с ID товара через таблицу order_products, из-за этого мне придется делать 1 запрос на каждый из товаров заказа?

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

Answer 1

По такому простому описанию однозначно сказать как лучше — сложно. Но есть ряд советов:

Авторизации на клиентской части нет, поэтому админка работает через дефолтную авторизацию.

Если смотреть о том, как безопаснее — прежде всего не следует использовать популярные пути для админки /admin и авторизации. Это первое куда лезут недоброжелатели при поиске уязвимостей. Поэтому лучше что-то нетривиальное, типа того же /sitecontrol, или вообще какого-нибудь имени собственного.

Не будет ли лучше разбить это на 3 независимые части, а CRM-систему вовсе вынести на отдельный сервер?

CRM, на мой взгляд, можно было бы вынести в субдомен (а лучше домен, закрытый от индексации), и на отдельный хостинг. Чтобы немного сэкономить ресурсы и фукционал — можно было бы сделать два подключения с БД из CRM: одно для нужд CRM с её собственной БД, другое для работы с моделями основного сайта (например, с заказами и товарами, чтобы полностью не дублировать информацию).

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

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

READ ALSO
Сделать PDF файл из блока html

Сделать PDF файл из блока html

Есть блок в html, его значения меняются, каким способом можно сохранить в pdf и сразу сделать доступным для скачивания? Смотрел много разных библиотек,...

96
Сконвертировать строку байт в массив float PHP

Сконвертировать строку байт в массив float PHP

Получаю строку байт длиной, например, в 88 байт в big-endianИзвестно что каждые 4 байта это число типа float

93
меню категорий, ошибка

меню категорий, ошибка

В коде ошибка, почему то не понимается функцияМожет я использую устаревший PHP или наоборот слишком новую версию

147
Регистрация на AJAX

Регистрация на AJAX

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

119