具有微应用程序的完全可扩展的网站

时间:2016-06-25 01:48:37

标签: rest reactjs redux react-router scalability

我正在为我公司希望提供的新解决方案设计云部署网站。我一直试图回答几个问题并没有运气,所以在罗马时。

首先,我不希望网站被卡在任何一个特定的框架上。我知道没有办法完全证明一个网站的未来证明,但我宁愿不把所有的鸡蛋放在一个篮子里。

其次,我想完全分开前端和后端。我列出了为什么要这样做的原因列表,不一定要进入他们所谓的对话。服务器端渲染大部分是不可能的。

那么这让我离开了什么?

我对设计的初步想法是拥有一个可以访问任何API调用的REST API(将来可能会转向GraphQL)。

我主要想要的设计决策是针对前端的。该网站将是一个仪表板类型系统,租户可以登录并查看它们的屏幕。

我在想我会有一种shell,它挂在index.html上。这将拥有它自己的路由,这将呈现与shell逻辑完全分离的微应用程序。

例如,如果我加载index.html,路径为“/”

它有一些它负责的路线,比方说 “/待办事项” “/帐户”

如果我访问/ todos路由,我的shell应用程序将呈现该微应用程序。除了可能通过窗口加载的一些数据外,此应用程序将与shell完全分离。一旦通过shell应用程序呈现此应用程序。

因此,我的todos路线可能是一个独立的redux应用程序。它可以拥有自己的路由等。

这是一个常见的架构吗?这有什么例子吗?有没有更好的方法来解决这个问题?

感谢您的任何见解!

1 个答案:

答案 0 :(得分:1)

听起来像你的好,真正超过了这个野兽的工程。

你可以采用这样一个架构进行巨大的构建,许多开发团队都是分开工作的。小型敏捷团队,上面会在每个" app"之间的上下文切换中产生如此大量的样板和脑痛的开销。

微服务架构非常棒。只是不要将它分解得太小,请仔细阅读您的用例并相应地破坏您的服务。

例如:我们是一个由3人组成的团队。我们设计了一个非常大的应用程序:

  1. Php API
  2. 后端管理界面(redux)
  3. 前端网站(html,react,php)
  4. 搜索服务(弹性搜索)
  5. 缓存(redis)
  6. 数据存储(mysql)
  7. 全部在多个主机上的多个docker容器中运行。拉下后端..好的前端网站仍在运行!