Laravel Multi-tenancy Best Practices - PullRequest
       8

Laravel Multi-tenancy Best Practices

0 голосов
/ 22 февраля 2019

Итак, у нас есть веб-приложение 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, слушая каждое репо

Высоко ценится и приветствует!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...