借助 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. 在 Google Cloud 控制台中,进入管理资源页面。

    转到“管理资源”

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

后续步骤