单体应用与微服务

7

我现在需要知道如何在需要时立即部署基于微服务的后端?我可以自己管理所有技术集成,但是当涉及到在AWS上托管时,对我来说很难获得那么多实例,并且目前根本无法承担这样的费用。

我正在考虑从单体后端开始,同时有可能在业务启动时立即部署微服务后端。

但我不确定如何实现这个想法,是否可能。

请帮忙,谢谢。


不,也许可以通过2个分开的项目来实现相同的目标,但是单体项目将首先被使用,当成功较好时我可以切换到微服务。我不知道这是否可行或有任何意义。 - user11368857
4个回答

3
这是使用AWS EBS的常见问题,我也遇到了同样的问题,并采用以下方法解决:
1)将设计视为单块,然后进一步决定边界上下文,每个边界上下文将成为一个微服务。
2)现在设计您的数据库,并尝试将每个微服务数据库保持在单独的模式中。
3)现在在maven模块中创建父子模块。
4)在父模块中保留您的Spring Boot主方法、Swagger和通用模块,如安全等。
5)在子模块中禁用Spring Boot特性。
6)将所有子模块微服务添加到父模块中并进行maven构建安装。
7)在AWS EBS上部署。
8)使用AWS Api网关公开所有微服务。
好处:将来只需移动模块和数据库架构即可支持基础设施成本,无需进行其他更改。
不同意“错误的看法是部署单块比微服务更便宜”的说法,请检查AWS成本估算,单块比微服务更便宜,微服务需要多语言持久性和独立托管。

4
我不了解“Spring Boot”。我将使用GoLang、Node.js、Cassandra、Mysql、Redis、HAProxy和NGinX。请详细说明一下。 - user11368857

2
首先,认为在基础设施方面,部署单块系统比微服务更便宜是一个错误的观念。如果你确定要走微服务的道路,现在就最好构建它。
可以构建多个微服务并在同一虚拟机上部署。此外,现在有很多轻量级技术(比Spring Boot更轻)具有较小的内存占用和更快的启动时间,如Micronaut。
此外,除非你在Amazon这样的大规模运行,认为单块系统不能扩展是错误的观念。即使单块系统也可以处理相当数量的请求。

2
不同意“错误的看法是部署单体应用比微服务更便宜”的说法,请查看AWS成本估算,单体应用比微服务更便宜,微服务需要多语言持久性和独立托管。 - vaquar khan
2
@vaquarkhan 这取决于具体情况。如果您在同一台虚拟机上部署两个微服务,则基础设施成本相同。为什么您不同意? - Deepak Singhal
4
“但即使使用微服务,您仍然需要运行多个JVM,这可能需要更大的机器……” ----- 因此,结论是为每个微服务获取多个实例,或者放弃该项目,因为这两种方法的成本几乎相同? - user11368857
5
结论是对于每个微服务需要获取多个实例或者放弃该项目,因为两种方法的代价几乎相同。即使使用微服务,您仍然需要运行多个JVM,可能需要更大的机器来支持。 - user11368857
4
如果你在我的位置,你会怎么做? - user11368857
显示剩余13条评论

2

我认为从一开始构建微服务是现在最好的方法,没有人知道哪个服务会走红。当每个人都想连接到您的服务时,您不能承受停机。


1
我同意Ekatarina的观点,从一开始就构建微服务非常明智,以避免以后需要从头开始重建所有内容。 - user11382382

0

非常可能构建多个微服务并在同一台服务器 / VPS上运行,当您的项目 / 服务在一夜之间变得流行时,您可以轻松地为每个服务专门分配一个单独的实例 / 服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接