借助 Gemini 来协助 Google Cloud 设计多层应用架构

本教程将介绍如何使用 Google Cloud 专用 Gemini, Google Cloud 中依托 AI 技术的协作工具,用于构建多层 Web 应用 尽可能使用全代管式服务来部署您的应用

目标

  • 探索可用于处理经由 公共互联网。
  • 探索可用于缓存数据以提高速度的各种 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 服务器数据库引擎。

准备工作

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

探索 Google Cloud 中的 Web 服务

在以下示例中,假设您是一位架构师,希望使用 Gemini 可帮助您在组织内的黄金之路上做出决策, 想要在 Google Cloud 中快速构建 Web 应用的开发者。您的目标是使用 Gemini 会协助您了解您可支配的选项、 特征及其互操作性。

在 Google Cloud 控制台中,您可以与 Gemini 对话, 帮助。在 Gemini 窗格中,你可以输入问题,即问题或 描述所需帮助的内容,Gemini 会返回 响应。

首先,让 Gemini 帮助您做出有关计算层级的决策 您的 Web 服务将在何处运行请执行以下步骤:

  1. 在 Google Cloud 控制台工具栏中,点击打开 Gemini

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

    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.
    

    Gemini 的回答应该类似于以下内容:

    您可以通过多种方式运行应用,以便通过 Google Cloud 上的公共互联网您可以使用 Cloud Run App Engine 或 Compute Engine
    Cloud Run 一个代管式无服务器平台,让您可以运行无状态容器, 可使用 HTTP 请求调用。App Engine 是一个全代管式平台 它提供了一种编程环境,用于开发和运行 应用。Compute Engine 是一种虚拟机 (VM)服务 您需要创建和管理虚拟机
    确定哪个选项最合适 您需要考虑以下因素:
    应用的大小和 应用的复杂程度
    您希望获得的流量
    您对应用所需的控制级别
    费用
    如果您有 您希望接收少量流量的小型、简单的应用程序 那么 Cloud Run 是一个不错的选择如果你的设备更大 预计会获得大量流量的复杂应用, App Engine 或 Compute Engine 可能是更好的选择。如果您需要大量 那么 Compute Engine 是一个不错的选择如果您 但 Cloud Run 是一个不错的选择。

  3. 鉴于您正在构建运行较小 Web 应用的最快途径 Gemini 对 Cloud Run 的说明似乎 最符合您的要求但首先,您需要确认 平台特性。 输入以下提示,然后点击“发送”:

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

    Gemini 的回答应该类似于以下内容:

    Cloud Run 会根据传入请求或事件的数量 执行自动扩缩如果修订版本未收到任何流量 默认扩缩为零个实例查找更多与您的 问题: 实例自动扩缩简介。

  4. Cloud Run 可以根据传入请求自动扩缩,现在,您需要 了解流量如何进入其托管的应用。输入 以下提示:

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

    Gemini 的回答应该类似于以下内容:

    Cloud Run 接受来自以下产品/服务的传入入站流量 来源:
    公共互联网:请求直接从公共互联网 通过 Cloud Run 服务 允许通过外部 HTTP(S) 负载均衡器发送流量。
    个 Google API 和 服务:来自 Google API 和服务的请求 无需外部 HTTP(S) 负载的 Cloud Run 服务 进行负载均衡。
    VPC 网络:来自 VPC 网络的请求会路由到您的 通过 VPC 连接器使用 Cloud Run 服务。
    您可以控制 如何使用 入站流量设置。

  5. 虽然外部的公共负载均衡器可以用于 您需要 Gemini 帮助您了解该平台能否 仅向经过身份验证的用户公开此应用, 权限。输入以下提示:

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

    Gemini 的回答应该类似于以下内容:

    是的,我们提供了一种机制来确保只有经过身份验证的用户 访问 Cloud Run 应用。为此,您可以指定 no-allow-unauthenticated 选项。这会导致 您的服务拒绝未经身份验证的请求,并显示“HTTP 403 Forbidden”(HTTP 403 禁止访问) 错误。您可以访问以下链接,详细了解您的问题: 允许公开(未经身份验证)访问。

  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?
    

    Gemini 的回答应该类似于以下内容:

    是的,您可以直接将 Python 应用部署到 Cloud Run 源代码。您可以使用 Cloud Run Python Buildpack 并部署 Python 应用您可以访问以下链接,详细了解您的问题: 通过源代码部署。

探索 Google Cloud 中的缓存

现在,您想继续为下一层级选择一项服务:缓存。答 根据团队对这一层的共同需求,您需要提示 Gemini 帮忙 您需要了解 Google Cloud 在此领域的产品/服务。采取以下措施 向 Gemini 寻求帮助的步骤:

  1. 在 Google Cloud 控制台工具栏中,点击打开 Gemini

  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.
    

    Gemini 的回答应该类似于以下内容:

    您可以通过多种方式向 Web 应用引入缓存层。一个 是使用 Cloud Memorystore 等全代管式服务。 Cloud Memorystore 是一种全代管式内存中数据存储区服务, Redis。它提供高性能、可伸缩且可靠的缓存 可帮助您提升 Web 应用性能的解决方案。您 还可以使用 Cloud Memorystore 来缓存静态内容,例如 和 JavaScript 文件您可以访问以下链接,详细了解您的问题: Memorystore 简介:适用于 Redis 的全代管式内存中数据存储区服务。

  3. 在继续使用 Cloud Memorystore for Redis 之前, 确保 Cloud Run 和 Cloud Memorystore 是私有的。输入以下提示:

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

    Gemini 的回答应该类似于以下内容:

    为了确保 Cloud Run 与 Cloud Memorystore 是私有的,您需要创建一个 无服务器 VPC 访问通道连接器。这样就可以连接 您的 Memorystore 实例。您可以访问以下链接,详细了解您的问题: 使用 Memorystore for Redis 缓存 Django 应用。

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

最后,您现在想确定关系型数据库存储空间。您提示 Google Cloud 专用 Gemini 可帮助您从众多方案中做出选择:

  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.
    

    Gemini 的回复应该与下面的示例类似:

    有几个选项可用于在全代管式服务中保留数据。 您可以选择使用 Cloud SQL。Cloud SQL 是一个全代管式服务 它提供了一种简单、可靠且安全的 用于运行 SQL Server、MySQL 和 PostgreSQL 工作负载的平台, Google Cloud旨在帮助您快速开始使用无服务器 使用 Database Migration Service 迁移数据。Cloud SQL for SQL Server 可自动确保您的 SQL Server 数据库可靠、安全 可伸缩,确保您的业务持续运营而不会出现中断。查找 请访问以下网址,了解有关您的问题的更多信息: Cloud SQL 概览。

部署示例架构

最后,您现在想确定关系型数据库存储空间。您提示 Google Cloud 专用 Gemini 助您一臂之力 浏览各个选项:

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?

Gemini 的回复应该与下面的示例类似:

没问题,下面这个解决方案使用 Cloud Run 将 Memorystore 和 Cloud SQL 搭配使用,构建 Web 应用:
快速起步解决方案:三层式 Web 应用。
此解决方案是一个三层式 Web 应用,使用 Cloud Run、Cloud Memorystore for Redis 以及 Cloud SQL for PostgreSQL。应用使用 Cloud Memorystore 缓存 和 Cloud SQL 来存储永久性数据。

要测试新架构,您决定要遵循 并部署此示例解决方案,以便您可以 测试和检查您的黄金路线架构!

清理

为避免因使用的资源导致您的 Google Cloud 账号产生费用 则可以删除为 Cloud Storage 存储分区创建的 Google Cloud 项目, 本教程。或者,您也可以删除各个资源。

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

后续步骤