在 Duet AI 协助下构建多层应用

本教程介绍了如何使用 Google Cloud 中依托 AI 技术的协作工具 Duet AI,尽可能使用全代管式服务构建多层 Web 应用。

目标

  • 探索可用于通过公共互联网处理流量的各种 Google 服务。
  • 探索可用于缓存数据以加快检索速度的各种 Google 服务。
  • 探索可用于保留有状态数据的各种 Google 服务。
  • 架构各项 Google 服务如何互操作。

使用的 Google Cloud 产品

  • Cloud Run:Cloud Run 是一个代管式计算平台,可让您直接在 Google 可伸缩的基础架构上运行容器。如果您可以从中构建容器映像,则可以在 Cloud Run 上部署以任何编程语言编写的代码。
  • Cloud Memorystore。Cloud Memorystore 是一种适用于 Redis 和 Memcached 的全代管式内存中数据存储区服务。构建可实现亚毫秒级数据访问的应用缓存。
  • Cloud SQL。Cloud SQL 是一项在云端提供全代管式关系型数据库的服务。它提供 MySQL、PostgreSQL 和 SQL Server 数据库引擎。

准备工作

  1. 确保已为您的 Google Cloud 用户账号和项目设置 Duet AI。

探索 Google Cloud 中的 Web 服务

在以下示例中,假设您是一名架构师,希望使用 Duet AI 帮助希望在 Google Cloud 中快速构建 Web 应用的开发者在组织范围的黄金路径上做出决策。您的目标是使用 Duet AI 助手,了解您可以随意使用的选项、其特征和互操作性。

在 Google Cloud 控制台中,您可以通过与 Duet AI 聊天来获取帮助。使用 Duet AI 窗格,您可以输入提示(即描述您所需要的帮助的问题或语句),Duet AI 会返回回复。

首先,让 Duet AI 帮助您决定 Web 服务将运行的计算层级。请按以下步骤操作:

  1. 在 Google Cloud 控制台工具栏中,点击“打开 Duet AI”。

  2. 在“Duet AI”窗格中,根据您的要求和偏好输入以下提示,然后点击“发送”:

    I am designing a multi-tier web app in Google Cloud. First, I would
    like help on deciding what to use for the compute tier. What are my
    options for running an app to serve traffic over the public internet?
    I would like to prioritize fully-managed services.
    

    Duet AI 的响应应如下所示:

    您可以通过多种方式运行应用,以在 Google Cloud 上通过公共互联网处理流量。您可以使用 Cloud Run、App Engine 或 Compute Engine。
    Cloud Run 是一个全代管式无服务器平台,可让您运行可使用 HTTP 请求调用的无状态容器。App Engine 是一个全代管式平台,为开发和运行 Web 应用提供编程环境。Compute Engine 是一种虚拟机 (VM) 服务,可用于创建和管理虚拟机。
    要确定哪个方案最适合您,您需要考虑以下因素:
    应用的大小和复杂性
    您预计将获得的流量
    您需要对应用的控制级别
    费用
    如果您预计自己会获得少量流量,Cloud Run 是一个不错的选择。如果您具有预计会收到大量流量的大型、更复杂的应用,那么 App Engine 或 Compute Engine 可能是更好的选择。如果您需要对应用进行大量控制,那么 Compute Engine 是一个不错的选择。如果您的预算有限,Cloud Run 是一个不错的选择。

  3. 鉴于您正在设计在组织中运行小型 Web 应用的最快路径,Duet AI 的 Cloud Run 说明似乎最符合您的要求。但首先,您需要确认平台的一些特征。输入以下提示,然后点击“发送”:

    Okay, I think I will move forward with Cloud Run. What metric does
    Cloud Run use to perform autoscaling?
    

    Duet AI 的响应应如下所示:

    Cloud Run 使用传入请求或事件的数量执行自动扩缩。当修订版本未收到任何流量时,默认情况下会缩减到零个实例。在此处查找与您的问题相关的更多信息:实例自动扩缩简介。

  4. 借助基于传入请求的 Cloud Run 自动扩缩功能,您现在想要了解流量如何进入其托管的应用。输入以下提示:

    How is a Cloud Run application exposed to users over the internet?
    

    Duet AI 的响应应如下所示:

    Cloud Run 接受来自以下来源的入站流量:
    公共互联网:请求直接从公共来源路由到您的 Cloud Run 服务,可以选择通过外部 HTTP(S) 负载均衡器路由流量。
    Google API 和服务:来自 Google API 和服务的请求会路由到您的 Cloud Run 服务,而无需外部 HTTP(S) 负载平衡器。
    VPC 网络:来自 VPC 网络的请求会通过 VPC 连接器路由到您的 Cloud Run 服务。
    您可以使用入站流量设置来控制如何向用户公开 Cloud Run 服务。

  5. 虽然此类应用可以使用外部公共负载均衡器,但您希望 Duet AI 帮助您了解平台能否仅向具有适当权限的经过身份验证的用户公开此应用。输入以下提示:

    Is there an easy mechanism in Cloud Run that allows only
    authenticated users to access an application?
    

    Duet AI 的响应应如下所示:

    是的,有一种机制可确保只有经过身份验证的用户才能访问 Cloud Run 应用。为此,您可以在部署服务时指定 no-allow-unauthenticated 选项。这会导致您的服务拒绝未经身份验证的请求,并显示“HTTP 403 Forbidden”错误。如需查找与您的问题相关的更多信息,请点击此处: 允许公开(未经身份验证)访问。

  6. 最后,如果要为组织中的开发者进行此设置,最好不要让他们编写任何与基础架构相关的配置,例如 Dockerfile。

    We have standardized on using Django as a web framework. Can I deploy
    a Python app to Cloud Run directly from source code? Or do we need to
    implement a way to containerize this ourselves?
    

    Duet AI 的响应应如下所示:

    可以,您可以直接从源代码将 Python 应用部署到 Cloud Run。您可以使用 Cloud Run Python buildpack 构建和部署 Python 应用。如需详细了解您的问题,请参阅此处:从源代码部署。

探索 Google Cloud 中的缓存

现在,您想继续为下一层级选择服务:缓存。您的团队对此层的一个共同需求是,您需要提示 Duet AI 帮助您了解 Google Cloud 在这一领域的产品。请按照以下步骤向 Duet AI 寻求帮助:

  1. 在 Google Cloud 控制台工具栏中,点击“打开 Duet AI”。

  2. 输入以下提示,然后点击“发送”:

    Okay! Thank you. Now let's move on to the caching tier. How can I
    introduce a caching layer to my web app? I would like to prioritize
    fully-managed services.
    

    Duet AI 的响应应如下所示:

    您可以通过多种方式为 Web 应用引入缓存层。一种方法是使用 Cloud Memorystore 等全代管式服务。Cloud Memorystore 是 Redis 的全代管式内存中数据存储区服务。它提供高性能、可伸缩且可靠的缓存解决方案,可以帮助您提升 Web 应用的性能。您还可以使用 Cloud Memorystore 缓存静态内容,例如图片和 JavaScript 文件。如需进一步了解您的问题,请参阅:Memorystore 简介:一项适用于 Redis 的全代管式内存中数据存储区服务。

  3. 在继续使用 Cloud Memorystore for Redis 之前,您希望确保 Cloud Run 与 Cloud Memorystorestore 之间的通信是私密的。输入以下提示:

    If I were to use Cloud Memorystore, how do I ensure the communication
    between Cloud Run and Cloud Memorystore is private?
    

    Duet AI 的响应应如下所示:

    为确保 Cloud Run 与 Cloud Memorystore 之间的通信是私密通信,您需要创建无服务器 VPC 访问通道连接器。这样,Cloud Run 与您的 Memorystore 实例所在的 VPC 之间就可以建立连接。如需进一步了解您的问题,请参阅:使用 Memorystore for Redis 缓存 Django 应用。

探索 Google Cloud 中的关系型数据库

最后,您现在需要确定关系型数据库存储区。您将提示 Duet AI 帮您浏览选项:

  1. 输入以下提示:

    And for the relational database tier, where do you recommend I
    persist data? Please keep in mind that I would like to continue to
    prioritize fully-managed services.
    

    Duet AI 应返回类似如下内容的响应:

    您可以通过多种方式将数据保留在全代管式服务中。您可以选择使用 Cloud SQL。Cloud SQL 是一种全代管式关系型数据库服务,为在 Google Cloud 上运行 SQL Server、MySQL 和 PostgreSQL 工作负载提供了一个简单、可靠且安全的平台。它旨在帮助您使用 Database Migration Service 快速开始无服务器迁移。Cloud SQL for SQL Server 会自动确保您的 SQL Server 数据库可靠、安全且可伸缩,以确保您的业务继续运行而不会中断。如需详细了解您的问题,请参阅 Cloud SQL 概览。

部署示例架构

最后,您现在需要确定关系型数据库存储区。您将提示 Duet AI 帮您浏览选项:

Okay, we have landed on using Cloud Run, Cloud Memorystore, and Cloud
SQL together. Is there a solution I can use that is available from
Google that uses these three technologies for a web application?

Duet AI 应返回类似如下内容的响应:

没问题,下面提供了将 Cloud Run、Cloud Memorystore for Redis 和 Cloud SQL 用于 Web 应用的解决方案:
快速起步解决方案:三层式 Web 应用。
此解决方案是一个三层式 Web 应用,使用 Cloud Run、Cloud Memorystore for Redis 和 Cloud SQL for PostgreSQL。该应用使用 Cloud Memorystore 缓存数据,并使用 Cloud SQL 存储永久性数据。

为了测试新架构,您决定按照所提供网页上的说明进行操作并部署此示例解决方案,以便测试和检查您的黄金路径架构!

清理

为避免系统因本教程中使用的资源向您的 Google Cloud 帐号收取费用,您可以删除为本教程创建的 Google Cloud 项目。或者,您也可以删除各个资源。

  1. 在 Google Cloud 控制台中,进入管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

后续步骤