RESTful APIs Cloud Architecture with MongoDB



我想和大家分享一个我在过去几周试图解决的架构问题。

我必须设计一个平台来公开一个 REST API,它将 由移动应用和网站使用

到目前为止,一切都很简单。现在来了我还没有设法组合在一起的复杂部分。目前,让我们忘记前端,专注于后端部分,考虑以下要求:

  1. 该平台将使用MongoDB(我已经测试了其他NoSQL数据库,但目前这是唯一一个拥有所有 我需要的功能(
  2. 必须具有超级可扩展性才能提供服务,可能面向数千名用户
  3. 必须至少允许 Facebook 和 Google 的oAUTH 身份验证

我已经使用各种技术进行了各种测试,但我尚未能够确定哪个是用于实现目标的最佳软件堆栈(或云提供商(:

第一次尝试
起初,我开始探索Firebase(满足了第2点和第3点(,但有以下限制:

  • Firestore 不提供地理空间功能
  • 有Firebase-CLI,但在我看来它不是很有用,而且 减慢开发速度,尽管它基于 NodeJs,因为它不允许在每次修改时重新启动应用程序,并且 调试很复杂,最多可以在 时间。此外,本地Firebase模拟器似乎无法复制云版本的某些功能

第二次尝试
然后我搬到了 Mongo Stitch,即使在这里,问题也大致相同:可以在本地开发,但是(如果我没有误解这个文档(要进行测试,有必要在云上部署代码。如果这是真的,这是一种无法使用的方法,因为它会大大减慢开发速度并且不允许在团队中工作。此外,MongoDB云平台不提供静态资源的托管。这不是一个严重的问题,但如果有,那就更好了

第三次尝试
我正在尝试使用NodeJS(与Express和Mongoose(来设置一个环境,使您可以在本地快速开发和测试。但是现在我必须了解如何将其带到云上。我想尝试一种混合方法,该方法允许将开发速度与云系统的功能和功能相结合(可能是Firebase,因为最终它是最完整的平台(:我想尝试在本地开发所有内容,将业务和数据访问组件隔离在单独的js库中。然后,当我在本地工作时,我会将一条快速路线映射到业务职能部门;相同的业务功能将映射到相关的 Firebase 功能上。 有人尝试过这种工作方式吗?

我正在考虑的另一件事是将运行时分别放在两个不同的云中。是否存在性能问题?或者这些云服务的性能如此之高,以至于可以忽略不计。请考虑此时将有 2 个级别的远程处理:

AppMobile ===> REST server (Firebase( ===> MongoDb (Mongo Atlas(

对此,你怎么看?每个意见或经验都将不胜感激。 如果您需要一些澄清,请告诉我 提前致谢

对于您对可扩展性,MongoDB依赖和OAuth的要求,最好的堆栈之一是使用Node.js和MongoDB。众所周知,Node.js具有超级可扩展性,并且具有与MongoDB通信的库。您可以在本地开发并将其推送到云中。另一种选择是使用Node.js(用于前端和OAuth(,并使用中层Java应用程序(例如Spring Boot(与MongoDB(作为数据库(一起为ReSTful调用提供服务。

最新更新