我们有一组执行特定功能的微服务。为了配置、操作和监控这些服务,我们只有一个web应用程序。
微服务部署在我们的客户,但不是每个客户都需要它们。这意味着web应用程序包含了很多客户不使用的功能,必须隐藏在视图之外。我们想要分解web应用程序,这样我们就可以只部署客户需要的或他有许可证的UI组件。
为此我们一直在研究微锋面。但是,到目前为止,我遇到的所有示例都没有涉及多租户和动态组件的主题。
我们的应用程序目前是用React编写的。我一直在寻找Next.js, System.JS, Piral和Single-SPA作为我们解决方案的选项,但不能弄清楚这些工具是否可以帮助我们实现我们想要的目标。
那么,有没有人知道如何创建一个容器应用程序,动态加载部署的微服务后端UI组件?
微服务最强大的情况之一是使用强隔离部署和更改它们,以便:
- 更容易动态部署新的微服务。
- 更容易改变现有的,没有副作用。
- 必要时更容易删除服务。
要在前端应用微服务,我认为看看这三点是否也适用,对于验证我们从这样的架构中受益是很重要的(因为它不像构建一个单体那么容易)。
我不认为"micro-frontends",但我有一些关于如何实现它们的想法:
- 多前端-应用程序分为多个前端,外观和感觉就像它们是相同的应用程序。为了确保它们看起来都一样,你需要某种所有前端都使用的库(或者更好-一个CDN,其中可以存储这些资源,如css,以允许动态更改样式)。
- 一个例子是AWS,每个"AWS服务"。有自己的前端(您可以通过查看地址找到这一点)。AWS看起来像一个统一的应用程序,但被划分为单独维护的微前端。
- 主前端-给客户端一个单独的应用程序,但是这个应用程序通过使用iframe嵌入微前端。同样,为了让每个微前端看起来都一样,你需要某种库。这种方法比其他方法更适合某些应用程序,因为它具有单一前端的巨大优点。然而,这是有代价的,因为框架并不完美(https://www.ostraining.com/blog/webdesign/against-using-iframes/)。
- 我想你可以实现一个主前端使用next.js没有iframes,但我担心它相当复杂的反对方法#1。