因此,我们有一个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,监听每个存储库
高度赞赏和欢呼!