如何设计几乎任何后端并将其部署到 AWS(无需代码)

2025-06-10

如何设计几乎任何后端并将其部署到 AWS(无需代码)

在本文中,我将向您展示如何设计四个不同的示例应用——一个 SimpleNote 克隆版、一个 Twitter 克隆版、一个 Slack 克隆版和一个电商商店。我们将使用 AWS re:Invent 2020 上发布的最酷炫新工具来实现。

介绍 Amplify Sandbox

Amplify Admin UI是一款全新的低代码界面,用于构建应用程序后端,无需任何 AWS 专业知识。然而,很多人可能忽略了 Amplify Admin 还包含一个很棒的全新沙盒,让您无需 AWS 账户即可开始使用。

此沙盒是 Amplify Admin UI 的公开共享版本,您甚至无需登录 AWS 账户即可创建和制作数据模型原型!

目前仅构建了数据沙盒,但随着时间的推移,其他 AWS Amplify 类别也将可用。

首次进入沙盒时,您会被带入一个可视化构建器,您可以在其中添加模型、枚举和自定义类型。大多数情况下,您只需创建模型即可。

您可以命名模型、添加字段并指定类型(包括它们是可选字段还是数组字段),甚至可以在模型之间添加一对一、一对多或多对多关系

此外,它甚至允许您共享您创建的数据模型!这意味着您不必每次创建项目时都从头开始,而且您可以像共享代码要点一样共享数据模式

我们的四个示例沙盒


我认为通过勾勒出四个可以使用的示例沙箱来展示它的强大功能是一个好主意:

  • 笔记应用程序(灵感来自免费笔记应用程序SimpleNote
  • 聊天应用程序(受 Slack 启发)
  • 社交媒体应用程序(受 Twitter 启发)
  • 电子商务后端(受每次购物体验的启发

如何创建实体关系图

Amplify Admin UI 使操作变得简单,但在开始之前值得做一些规划。

久经考验的方法是绘制实体关系图。我们选择使用 Lucidcharts,但您可以使用任何图表工具来完成此操作。

替代文本

笔记应用程序

这是一款我个人每天都会用到的极简应用,所以我很喜欢它的简洁。我们有两个模型:笔记和标签,它们之间只有一种多对多关系,方便查询。

您可以通过提供基于角色的协作编辑功能来扩展此功能,此功能在部署此模型后即可使用。您还应该使用客户端 DataStore 库来确保您的笔记可以离线使用。

您可以在此处查看沙盒:https://sandbox.amplifyapp.com/schema-design/1c782f02-1fe7-4785-9a02-22a27cc96d0d/clone。请注意,我们在此处使用模型之间的双向多对多关系,因为注释可以有零个或多个标签,反之亦然。

替代文本

Slack 克隆版

我们中的许多人使用聊天应用程序来工作,因此我们从用户角度熟悉此应用程序的用例。

这里的新细节是,每条消息都属于一个频道和一个用户,并且每个用户都可以创建频道并加入频道。因此,这三个主要模型之间存在着一种有趣的三​​向关系。

您可以在此处查看沙盒:https://sandbox.amplifyapp.com/schema-design/5f863684-fd1e-41b4-bca1-36c2271e21a1/clone。Channel是这里最复杂的模型——请注意我们如何充分利用 Sandbox 中可用的所有关系类型

  • 频道可以有多个用户,用户可以加入多个频道
  • 频道只能由一个用户创建,并且不需要跟踪任何特定用户创建的频道
  • Channels 可以包含多条Messages,但每条 Messages 只能属于一个Channel

替代文本

Twitter克隆版

社交媒体通常是最复杂的数据模型之一。我们实现了最小可行的社交媒体应用——我们只提供一条推文和一个用户模型。

然而,推文本身具有一组复杂的关系。它有一个作者用户,以及一组需要建模的点赞、回复和引用。

您可以考虑对此应用进行其他修改:提供其他类型的推文,包括民意调查、图片和视频,内置广告和私信。

您可以在此处查看沙盒:https://sandbox.amplifyapp.com/schema-design/ad5b5b7e-f207-42d1-92b1-0ccef056a26b/clone。请注意,这里通过将点赞、回复和引用建模为相应用户和推文 ID 的数组来实现递归。

替代文本

电子商务商店

涉及到金钱时,风险会更高。跟踪订单并确保良好的客户体验至关重要。

我们通过确保为供应商、产品、订单和客户分别建立模型来构建典型的电商后端。为了更好地理解典型的订购体验,我们还提供了指定单笔订单产品数量以及使用优惠券的功能。

由于电商体验千差万别,我们不可能对所有体验进行建模,但我希望这能成为一个足够好的起点。如果您对这个概念有任何想法,欢迎分享!

您可以在这里查看沙盒:https://sandbox.amplifyapp.com/schema-design/aa0e7a61-aa72-4b27-b6db-ea8e2031f95e/clone。请注意,沙盒的功能可以轻松处理此模型的复杂性。一个订单只能对应一个客户,但一个客户可以对应多个订单。

当你在 Customer 模型上设置此功能时,Sandbox 会非常智能地自动在 Order 模型上将相应的 customerID 字段设置为“关系源”。这对于以后的 GraphQL 查询非常方便。

替代文本

如何将模型部署到 AWS

完成模型后,沙盒会提示您使用Amplify CLI下载模型进行本地测试。如果您只想在 AWS 上线,可以跳过这一步,直接进入“部署到 AWS”阶段:

点击“登录以部署到 AWS”后,就大功告成了!想象一下——你无需编写任何代码,就创建了一个真实的后端数据模型,并将其直接部署到 AWS。🤯

从这里您可以设置进一步的自定义,包括添加身份验证、邀请用户和分配角色、在每个模型上添加授权规则、使用我们的所见即所得编辑器创建内容等等。

如果您想了解更多信息,Ali Spittel 发表了一篇很棒的博文,介绍了 Amplify Admin UI 在部署后变得多么强大,而本文则介绍了部署无需帐户的沙盒环境

Nader Dabit 还写了另外10 个您可能想尝试的功能

借助 Amplify Sandbox,您可以轻松建模和思考任何应用后端场景,希望这些示例能够激发您的创造力。如果您有任何请求或意见,请告诉我

继续阅读 https://dev.to/swyx/how-to-design-almost-any-backend-and-deploy-it-to-aws-with-no-code-45a9
PREV
从 Master 迁移到 Main 的备忘单
NEXT
错误不是异常