我想使用应用程序引擎,但不幸的是他们不支持他们的数据库空间查询,所以我想知道是否有办法在一个云上创建我的数据库,无论是 AWS 还是 Azure,以及在应用程序引擎上创建我的后端
如果可能的话:
- 这样做的最佳做法是什么?
- 这会对性能产生什么影响?
- 将我的整个解决方案放在一个云上是否更好?
答案1
两个云基础设施可以连接吗
假设您对“连接”的定义是两个云可以相互路由 IP 流量,那么在绝大多数情况下,答案是:当然可以。
然而,仅有 IP 连接并不能构成稳定的基础设施。
这样做的最佳做法是什么?
制造汽车的“最佳实践”是什么?写书又如何?这些问题很难回答,不是吗?
“最佳实践”在这里并不适用,因为有无数种方式可以构建多云、分布式部署。简而言之,这完全取决于您的具体应用。
这会对性能产生什么影响?
那么数据库查询性能将会可怕。
将我的整个解决方案放在一个云上是否更好?
再次强调,这完全是主观的。取决于您的需求和应用程序架构。
一般来说(由于在提供商之间分割应用程序和数据库层会对性能产生影响),人们会选择一个提供商来托管应用程序——该提供商将提供与应用程序要求最匹配的功能。
您可能应该列出您的所有要求,然后评估几家不同的提供商。
答案2
我认为在跨多个云(或在云和本地之间)拆分应用程序时需要考虑以下几点:
- 潜伏。如果您的服务需要可预测(且低)延迟,您可能会发现这些类型的服务应该共置。一旦您离开一个云提供商的网络,您将通过公共互联网路由到另一个云(或本地设施)。这种延迟可能超出您的应用可以容忍的范围。
- 带宽成本。例如,使用 Azure 和 AWS,您可以免费获得入站数据,但需要为出站付费。您可能会看到一个方向的成本相当实惠(例如数据库请求),而另一个方向的带宽成本较高(数据有效负载)。
- 维护。每个云提供商都有自己的应用程序/虚拟机/数据库维护模型和 API。您的 DevOps 环境需要考虑这一点。备份方法也是如此。
- 安全。就像连接本地资源一样,您需要考虑云之间的连接(您可以创建安全隧道或使用 SSL 吗?)和访问控制(您可以保护后端服务端点,如数据库和缓存吗?)。
- 高可用性/灾难恢复。每个云提供商都会为其服务(以及您的服务)提供特定的 HA 和 DR 选项。您需要仔细考虑每一个。
我确信还有其他事情需要考虑——希望这份清单能有所帮助。
底线:如今存在混合架构(云<-->内部部署,云<-->云),您的特定要求将帮助您确定这是否适合您。