Итак, у нас есть веб-приложение Admin Portal, клиентское веб-приложение и приложение API.
Административный портал встроен в Laravel 5.x Клиентский портал встроен в Laravel 5.y API построенв Lumen 5.z
Портал администратора:
- Действует как CMS для наших 100 сотрудников для взаимодействия с данными клиентов
- Это приложение находится в своем собственном репо «admin_portal ”
- Это приложение имеет собственный поддомен admin.company.com
- Имеет схему базы данных
admin
, для аутентификации используется таблица employees
(в этой таблице есть адрес электронной почты для входа ипароль 100 наших сотрудников) - Имеет такие страницы, как отчеты, билеты и т. д.
Клиентский портал:
- Действует как портал для клиентов, где наш1000 клиентов входят в систему и выполняют действия, такие как отправка запрошенной информации и просмотр статуса их текущего дела
- Это приложение находится в собственном репо «client_portal»
- Это приложение имеет собственный поддомен client.company.com
- Имеет базу данных
customer
Чема, с таблицей clients
, используемой для аутентификации (в этой таблице есть логин и пароль для 1000 наших клиентов)
API:
- Действует как API для постороннихвзаимодействовать с нашими схемами 2 БД
- Это приложение находится в собственном репо «api»
- Это приложение имеет собственный поддомен api.company.com
Практически все страницы, пользовательские интерфейсы, функции в административном портале и клиентском портале различны.
Однако в административном портале и клиентском портале есть несколько повторяющихся кодов: модели, вспомогательные функции (т.е. оба приложения должны общаться с некоторымисторонний API или необходимость создания похожих PDF-файлов) и т. д.
Разработчик в нашей команде предложил объединить административный портал, клиентский портал и API в одно гигантское мультитенантное приложение Laravel, чтобы у нас было меньше кодаи eaier для поддержания.
Мы пытаемся исследовать:
- Должны ли мы сделать это?(в каком сценарии использования для реализации многопользовательского приложения по сравнению с однопользовательским)
- Какие преимущества и недостатки (разработка, развертывание, отладка, безопасность и обслуживание)
- это возможно с Laravel или с какими-либо побочными эффектами.
Мне бы хотелось, чтобы сообщество сообщило нам ваше мнение и опыт.Однако следует учесть несколько моментов:
- Возможно, мы в конечном итоге захотим заблокировать административный портал только для IP-адресов наших офисов
- API использует OAuth, в то время как административный портал и клиентский портал не
- Мы исследуем микросервисы, такие как функции Lambda, для выгрузки большой части логики из PHP
- Каждому приложению может потребоваться различный набор пакетов / версий PHP (определенных в composer.json)
- Мы используем Bitbucket Pipelines и AWS CodeDeploy, слушая каждое репо
Высоко ценится и приветствует!