从LAMP+AngularJS迁移到更混合的东西



我们有一个web应用程序(CRM类型)在Linux (Debian)上工作,后端是Apache, MariaDb和PHP,前端是AngularJS (1.x)。

考虑重新设计,我需要关于我脑海中的解决方案的建议,但我不确定它是否相关…


一个新的网站(电子商务)将与CRM一起出现,并直接使用或不使用相同的数据库(API)。

所以我的第一个选择是将MariaDb放在专用VM上. 它现在占用了很多资源,如果另一个应用使用它,会占用更多资源。

那么CRM和网站可以直接远程连接(太危险了吗?)或者调用API. 我想第二个解决方案会更好,意味着我可以把后端PHP部分(已经作为AngularJS的API工作)和数据库一起,在新的VM上。我想Debian + Nginx将是一个很好的选择。我更喜欢用PHP来处理数据库,因为我已经习惯了。

另一方面,我仍然会单独使用AngularJS,一个废弃的JS框架。

关于AngularJS/PHP,很难处理的一件事是,有时我需要从PHP为Angular格式化数据,反之亦然。格式化的放在哪里不是很清楚,因为后端更多的是关于数据库而不是前端,而前端更多的是关于布局而不是PHP ORM和设计。

此外,我们希望将CRM保持为SPA(单页应用程序)。

我的看法是去一个MEAN堆栈,没有de M (MongoDB),从头开始,只要保持Debian和安装NodeJS, ExpressJS和Angular或其他JS框架(Vue, React…)。

一个漏洞JS堆栈具有相同的语言,并通过与服务器的许多小事务(资产,调用和从数据库检索数据的承诺)获得速度和性能。也可以学习更多关于JS和NodeJS的知识。

  • NodeJS创建环境和web服务器,代替Apache。
  • (或其他)将数据放入HTML中,并尽可能减少处理。
  • ExpressJS作为我正在谈论的中间部分,可以执行格式化的地方:从视图中检索数据,格式化它们,将它们发送给API,处理响应,在必要时格式化并返回给视图。

这意味着我将从一个VM使用:

AngularJS (frontend) -> PHP framework (backend) -> Database

两个虚拟机:

Angular (app frontend) -> Express (app backend) -> PHP API (database backend) -> Database.

你觉得我的用例和解决方案怎么样?

拆分服务有很多好处,但也有很多不同的解决方案,所以你需要问自己你的目标是什么。性能?高可用性/故障转移?你可能需要大量的虚拟机、地理冗余、负载均衡的vip等等。

你也可以考虑使用Docker创建容器化服务。

您谈到将数据库移动到单独的VM上,但这可能有风险。为什么?如果它们都在一个隔离的网络上,这应该不是问题。

如果你正在寻找堆栈建议,因为你正在谈论一个完整的重制,我会推荐一些既稳定又现代的东西,比如Laravel + VueJS的web/API部分。你已经熟悉PHP了,用Nginx安装可能会快得多。当然,现在有几乎无限的组合可供选择。

至于"直接还是不直接"数据库访问:拥有一个版本化的API总是有好处的。

服务SPA前端将需要很少的资源,所以你的瓶颈将在API后端和DB之间。你可以通过将API放在VIP后面,并使用HAProxy/Nginx之类的东西进行负载平衡,从而使其可扩展。

最新更新