Laravel多租户最佳做法

时间:2019-02-22 05:11:11

标签: laravel multi-tenant

因此,我们有一个Admin Portal网站应用程序,一个Client Portal网站应用程序和一个API应用程序。

Admin Portal是在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表用于身份验证(该表的登录电子邮件和密码为1,000 客户)

API:

  • 就像一个供外人与我们的2个数据库模式进行交互的API一样
  • 此应用位于自己的存储库“ api”上
  • 此应用拥有自己的子域api.company.com

几乎所有页面,用户界面,管理门户和客户端门户中的功能都是不同的。

但是,管理门户和客户端门户中有一些重复的代码:模型,助手功能(即,两个应用都需要与某些第三方API对话或需要生成相似的PDF)等等。

我们团队中的一位开发人员建议将Admin Portal,Client Portal和API组合到一个大型的多租户Laravel应用中,这样我们可以减少代码库并且更易于维护。

我们正在研究:

  • 我们是否应该这样做? (在哪种用例下实现多租户应用与单租户应用)
  • 优点和缺点(开发,部署,调试,安全性和维护)
  • Laravel是否可行,或者会有什么副作用。

我希望有一个社区向我们提供您的意见和经验。不过,请注意以下几点:

  • 我们可能最终希望仅将管理门户锁定到我们的办公室IP地址
  • API正在使用OAuth,而管理门户和客户端门户却未使用
  • 我们正在探索诸如Lambda函数之类的微服务,以从PHP卸载很多逻辑
  • 每个应用程序可能需要一组不同的PHP软件包/版本(在composer.json中定义)
  • 我们正在使用Bitbucket Pipelines和AWS CodeDeploy,监听每个存储库

高度赞赏和欢呼!

0 个答案:

没有答案