公告隆重推出MongoDB 8.0,史上最快的MongoDB!了解更多 >>隆重推出MongoDB 8.0,史上最快的MongoDB!>>

云架构:全面指南

每个开发者都希望编写尽可能优秀的应用程序。但是,当你花费宝贵的时间管理IT基础设施时,这很难实现。通过云计算和云架构,你可以将这些任务外包给专家,确保你在需要的时候拥有安全、可用、弹性的计算和存储。通过云计算,你的基础设施只需正常工作,你就可以回到编写优秀的代码。

本文将介绍云架构的基础知识,并展示MongoDB的MongoDB Atlas,MongoDB的数据服务平台如何利用云架构来提高生产力、可用性和可靠性。我们还将解释Atlas App Services如何成为此类架构的关键部分。

目录

什么是云架构?

云架构是指各种组件结合在一起形成云环境的方式。云环境提供各种服务和基础设施,具有近乎无限的可扩展性。主要元素包括

  • 计算:虚拟服务器、无服务器功能(AWS Lambda等)、机器学习等。
  • 服务:单点登录、后端即服务、托管等。
  • 数据:数据库、存储、数据湖等。

云架构分为两种类型:前端和后端。

MongoDB Example of Cloud Architecture

前端架构包括

  • 具有网络路由的安全托管基础设施
  • 客户端或代码与后端交互

后端架构包括

  • 应用程序:无服务器功能、触发器、数据访问(MongoDB模式规则、数据湖连接)
  • 服务:Webhook、外部API(AWS、Twilio、Http等)
  • 存储:存储层是我们Atlas操作数据库(CRUD和搜索),以及我们的长期存储形式S3和数据湖。

管理与安全支撑所有上述组件

我们将这些组件连接起来的方式被视为我们的云原生架构。

云架构基础知识

你的云架构可能基于一种云类型;更常见的是,你可能构建一个使用四种主要云类型中的几种的架构。

  • 公有云:资源部署在安全的、公开提供的AWS、Azure或Google Cloud Platform等公共平台上。
  • 私有云:云的基础设施由本地数据中心管理,例如Pivotal Cloud Foundry架构。
  • 混合云:组件部署在公有云和私有云上,协同工作。
  • 多云:组件部署在多个不同的公共云上。

初步问题

在设计我们的云架构时,我们应该问自己以下问题:

  • 我们试图构建什么,我们希望如何提供给最终用户?我们是构建一个Web应用、移动应用、服务还是集成组件?这将决定我们选择组件的方式。例如,对于一个Web应用,我们可能需要托管前端和DNS服务以将流量路由到我们的站点地址,一个计算层来提供后端API,以及一个数据库来存储数据。

  • 我们希望我们的应用程序如何在未来进行扩展和增长?增长可能是快速的或不可预测的,或者可能遍布多个地理区域;在这些情况下,我们可能需要弹性基础设施和可扩展的API端点。

  • 最后,我们需要考虑我们开发团队的成本和生产率。开发者不应该花费大量时间管理基础设施——这是供应商可以更高效和更经济地做的事情。

使用MongoDB Atlas和Atlas App Services,您可以从公共云、多云和混合解决方案的强大功能中受益

  • 数据库和后端层部署在您选择的公共云上,允许您使用不同的区域和多云集群
  • 您私有云中的传统系统和连接器可以连接到MongoDB公共云环境。通过互联网或私有端点访问部署。有关更多信息,请参阅Atlas安全

云架构是什么样的?

MongoDB示例

让我们考虑一个提供Web界面和UI的Web应用——例如,一个有用户帖子的社交网络。前端将托管在App Services Hosting上,代码将使用JavaScript Realm来执行使用MongoDB Atlas和Realm服务的身份验证和后端任务。

Example of Web App using MongoDB Cloud

前端架构

  • 客户端应用程序:将使用SDK与云服务交互的Web应用。
  • 基础设施:Web应用的托管设施。

Atlas App Services提供了一个客户端SDK和一个托管服务。您可以托管前端代码,并通过API请求从app.example.com访问后端。

后端架构

  • 应用程序:这是您定义后端逻辑并通过对客户端应用程序公开API来暴露它的地方,以便实现对应用程序内容的CRUD操作。
  • 服务
    • Atlas App Services提供了一个完全弹性且可伸缩的Backend-as-a-Service,包括数据访问治理和应用程序身份验证提供者(电子邮件/密码、Google、Facebook、JWT等)。
    • 在这一层中,将执行数据规则治理,例如验证用户是否有适当的角色来访问某些API(函数、Webhooks等)。
    • 我们需要定义后端逻辑并通过API将其公开给前端,允许身份验证和数据规则治理,并根据事件对数据更改做出反应。我们可以使用
      • MongoDB App Services身份验证提供者来构建用户身份和与第三方(如Google和Facebook)的身份验证路径。
      • Atlas App Services函数或第三方服务的HTTP Webhooks来公开API。例如
POST https://webhooks.mongodb-realm.com/api/client/v2.0/app/app-abcd/service/test/incoming_webhook/processTask
  • 存储
    • 操作数据将存储在MongoDB Atlas集群中。归档和审计数据存储在MongoDB Data Lake中。这允许我们将历史数据卸载到更便宜的存储层,但我们仍然可以通过联合查询访问整个数据集。
  • 管理与安全
    • Atlas MongoDB云安全和管理服务(集群资源管理、升级等)

云架构设计模式

尽管每个应用程序和商业努力都是独特的,但在设计您的云架构时,仍需考虑一系列云架构模式。

可伸缩性基础

在构建应用程序时,无论是否在云中,我们都需要将扩展性作为设计的关键方面。Atlas可伸缩性是开发人员喜爱MongoDB平台的主要原因之一。

自动伸缩模式

Atlas允许您无缝地伸缩您的数据库(Atlas 自动伸缩),同时我们的主动监控工具和建议突出显示任何有利于您的模式设计或提高数据库性能的改进。

数据库分片模式

您只需点击几下即可启动一个多分片环境,并且您可以随时提高计算能力,让您心情舒畅。

节点故障模式

现代云架构考虑了软件和硬件可能发生故障的事实。为了适应这些故障,我们需要构建容错组件,这些组件可以轻松替换或自动故障转移到健康的组件。

在云环境中,设计上即可通过替换或重建组件。MongoDB集群使用复制和副本集来确保可用性。MongoDB Atlas集群默认情况下为每个副本集使用三个节点的部署。

多租户模式

云组件的弹性和灵活性使它们成为托管多租户应用程序的非常好的选择。话虽如此,存在已知的多租户风险

  1. 某个租户导致服务饥饿 - 我们的设计应规范租户资源分配,以允许大型消费者有专用资源。
  2. 安全性。租户之间应共享哪些信息或凭据?我们如何控制身份管理?

MongoDB Atlas在管理多个租户时提供了灵活性。您可以:

  • 为每个租户或一组租户部署单独的应用程序和/或Atlas集群。
  • 使用不同的数据库和集合在单个应用程序中隔离数据。
  • 使用应用程序逻辑和规则系统从多租户集合中过滤数据。

多站点部署模式

用户期望完美的正常运行时间和可用性,这使得灾难恢复和高可用性成为我们实现过程的关键部分。最好将应用程序部署在多个区域站点,以确保在单个站点或整个云不可用或关闭时保持可用性。

MongoDB Atlas和Atlas App Services允许在多个区域部署应用程序和数据库集群,并具有自动故障转移和修复过程。

云架构和MongoDB

云架构的世界很大,而且越来越大,然而,MongoDB Atlas和Atlas App Services提供了丰富的功能来构建以云为中心的应用程序

  • 可伸缩的MongoDB集群,具有工作负载隔离的云无关性
  • 数据湖,以低成本存储大量数据
  • 无服务器平台
  • 具有离线优先同步到云的Realm移动数据库
  • 图表、API等

准备好开始了吗?

您可以从免费层集群开始,并将您的应用程序和业务扩展到多PB的跨区域/云集群。

常见问题解答

什么是云架构?

云架构是在云中部署的组件的拓扑结构,并通过网络访问以构建您的系统。

云架构是如何工作的?

部署的组件集通过使用云基础,如计算、网络和存储层进行集成和连接。云架构允许您按需扩展并使您的系统暴露于外部世界。

基于云的服务和云架构的用例有哪些?

  • 基础设施即服务(IaaS)
    • 在基本基础设施构建块上构建您的云计算堆栈,例如虚拟服务器、存储、网络和安全。
  • 平台即服务(PaaS)
    • 本架构的构建块提供了一整套托管平台,作为您应用程序堆栈的资源。例如:Atlas App Services Cloud。
  • 软件即服务(SaaS)
    • 使用如MongoDB Atlas和Atlas App Services功能(同步、身份验证等)提供的软件作为服务来构建您的云计算堆栈。
  • 前端即服务(FaaS)
    • 允许您托管并提供应用程序前端托管和运行时服务的服务。例如:App Services Hosting,Netlify等。
  • 开发即服务(DaaS)
    • 开发即服务允许您的架构在云中完全开发/测试和部署。借助GitHub和Atlas App Services自动部署等工具,您可以直接在云中构建您的CI/CD。此外,MongoDB Atlas和Realm内置了IDE、版本控制和数据探索器,可以直接在您的云部署上编码。

什么是PaaS与SaaS的区别?

PaaS(平台即服务)允许您使用完整平台(包括硬件、软件和基础设施)来构建、部署和维护您的应用程序。而SaaS(软件即服务)则提供了您所需的软件服务,包括托管、安装、许可和维护、升级等。

云计算架构有哪些层级?

  • 网络:DNS、互联网网关、内部网络

  • 计算层

  • 数据层

    • 数据库
    • 数据湖
    • 存储

云计算的架构类型是什么?

云计算架构是在云上托管的服务导向架构、事件驱动架构和数据驱动架构的组合。

云计算中有哪四种云类型?

  • 公有云
  • 私有云
  • 混合云
  • 多云

如何设计云计算架构?

您可以通过应用云计算最佳实践和与您的业务需求相关的相关云设计模式来设计云计算架构。从小型模型开始,并在未来进行扩展是一种推荐的方法。

云计算基础设施的主要组件有哪些?

  • 虚拟主机
  • 虚拟网络
  • 虚拟存储

云是基础设施吗?

是的。云计算服务的一种类型是提供基础设施即服务。

参考文献