Arquitete um app de várias camadas com o Gemini para receber assistência do Google Cloud

Neste tutorial, mostramos como usar o Gemini para o Google Cloud, um colaborador com tecnologia de IA no Google Cloud, para arquitetar um aplicativo da Web de várias camadas usando serviços totalmente gerenciados sempre que possível.

Objetivos

  • Conheça vários serviços do Google que podem ser usados para exibir tráfego pela Internet pública.
  • Explore vários serviços do Google que podem ser usados para armazenar dados em cache e ter uma recuperação mais rápida.
  • Explore vários serviços do Google que podem ser usados para manter dados com estado.
  • Explicar a interoperabilidade de vários serviços do Google.

Produtos do Google Cloud usados

  • Cloud Run: O Cloud Run é uma plataforma de computação gerenciada que permite executar contêineres diretamente na infraestrutura escalonável do Google. É possível implantar código escrito em qualquer linguagem de programação no Cloud Run. Basta criar uma imagem de contêiner a partir dele.
  • Cloud Memorystore: O Cloud Memorystore é um serviço de armazenamento de dados na memória totalmente gerenciado para Redis e Memcached. Crie caches de aplicativos que fornecem acesso a dados em menos de um milissegundo.
  • Cloud SQL: O Cloud SQL é um serviço que oferece bancos de dados relacionais totalmente gerenciados Ele tem mecanismos de banco de dados MySQL, PostgreSQL e SQL Server.

Antes de começar

  1. Verifique se o Gemini está configurado para sua conta de usuário e projeto do Google Cloud.

Conhecer a exibição na Web no Google Cloud

Para o exemplo a seguir, considere que você é um arquiteto que quer usar o Gemini para tomar decisões sobre um caminho dourado em toda a organização para desenvolvedores que buscam criar rapidamente um app da Web no Google Cloud. Seu objetivo é usar a assistência Genmini para entender as opções à sua disposição, suas características e interoperabilidade.

No console do Google Cloud, você pode conversar com o Gemini para receber ajuda. Usando o painel Gemini, você insere comandos, que são perguntas ou declarações que descrevem a ajuda que você quer, e o Gemini retorna respostas.

Para começar, peça ajuda ao Gemini para tomar uma decisão sobre o nível de computação em que a disponibilização da Web será executada. Siga estas etapas:

  1. Na barra de ferramentas do console do Google Cloud, clique em Abrir Gemini.

  2. No painel Gemini, insira o comando a seguir com base nos seus requisitos e preferências e clique em "Enviar":

    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 deve ser semelhante a esta:

    Existem algumas opções para executar um app e disponibilizar tráfego pela Internet pública no Google Cloud. É possível usar o Cloud Run, o App Engine ou o Compute Engine.
    O Cloud Run é uma plataforma sem servidor totalmente gerenciada que permite executar contêineres sem estado que podem ser invocados usando solicitações HTTP. App Engine é uma plataforma totalmente gerenciada que fornece um ambiente de programação para desenvolver e executar aplicativos da Web. O Compute Engine é um serviço de máquina virtual (VM) para criar e gerenciar máquinas virtuais.
    Para decidir qual é a melhor opção para você, considere os seguintes fatores:
    o tamanho e a complexidade do app;
    a quantidade de tráfego que você espera receber;
    o nível de controle necessário sobre o app;
    o custo;
    se você tem um app pequeno e simples que espera receber uma pequena quantidade de tráfego, o Cloud Run é uma boa opção. Se você tem um aplicativo maior e mais complexo que espera receber uma grande quantidade de tráfego, o App Engine ou o Compute Engine podem ser uma opção melhor. Se você precisa de muito controle sobre o app, o Compute Engine é uma boa opção. Se você estiver dentro do orçamento, o Cloud Run é uma boa opção.

  3. Como você está arquitetando o caminho mais rápido para executar apps da Web menores na sua organização, a descrição do Cloud Run feita pelo Gemini parece atender melhor aos seus requisitos. Mas, primeiro, você precisa confirmar algumas das características da plataforma. Digite o comando a seguir e clique em "Enviar":

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

    Gemini deve ser semelhante a esta:

    O Cloud Run usa o número de solicitações ou eventos recebidos para realizar o escalonamento automático. Por padrão, quando uma revisão não recebe nenhum tráfego, ela é escalonada para zero instância. Encontre mais informações para sua dúvida aqui: Sobre o escalonamento automático de instâncias.

  4. Com o escalonamento automático do Cloud Run com base nas solicitações recebidas, você quer entender como o tráfego entra nos aplicativos hospedados. Digite o seguinte comando:

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

    Gemini deve ser semelhante a esta:

    O Cloud Run aceita o tráfego de entrada das seguintes origens:
    Internet pública: as solicitações são roteadas diretamente de fontes públicas para os serviços do Cloud Run com a opção de rotear o tráfego por um balanceador de carga HTTP(S) externo.
    APIs e serviços do Google: as solicitações de APIs e serviços do Google são roteadas para os serviços do Cloud Run sem a necessidade de um balanceador de carga HTTP(S) externo.Redes VPC
    : as solicitações de redes VPC são roteadas para os serviços do Cloud Run por meio de um conector VPC.
    É possível controlar como o serviço do Cloud Run é exposto aos usuários usando as configurações de entrada.

  5. Embora um balanceador de carga público externo seja adequado para essa classe de aplicativos, o Gemini ajuda você a entender se a plataforma pode expor esse aplicativo apenas a usuários autenticados com as permissões corretas. Digite o seguinte comando:

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

    Gemini deve ser semelhante a esta:

    Sim, há um mecanismo para garantir que apenas usuários autenticados possam acessar um aplicativo do Cloud Run. Você pode fazer isso especificando a opção no-allow-unauthenticated ao implantar um serviço. Isso fará com que seu serviço rejeite solicitações não autenticadas com um erro HTTP 403 Forbidden. Encontre mais informações para sua pergunta aqui: Como permitir acesso público (não autenticado).

  6. Por fim, para os desenvolvedores na sua organização, a preferência é que eles não gravem nenhuma configuração relacionada à infraestrutura, como Dockerfiles.

    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 deve ser semelhante a esta:

    Sim, é possível implantar um app Python no Cloud Run diretamente do código-fonte. Use o buildpack do Cloud Run para Python para criar e implantar seu app em Python. Encontre mais informações para sua dúvida aqui: Como implantar usando o código-fonte.

Analisar o armazenamento em cache no Google Cloud

Agora você deseja prosseguir com a escolha de um serviço para o próximo nível: armazenamento em cache. Uma necessidade comum dessa camada dos membros da sua equipe faz com que você peça ao Gemini para ajudar a entender as ofertas que o Google Cloud tem nessa área. Siga estas etapas para pedir ajuda ao Gemini:

  1. Na barra de ferramentas do console do Google Cloud, clique em Abrir Gemini.

  2. Digite o seguinte comando e clique em "Enviar":

    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 deve ser semelhante a esta:

    Há algumas maneiras de introduzir uma camada de armazenamento em cache no seu app da Web. Uma opção é usar um serviço totalmente gerenciado como o Cloud Memorystore. O Cloud Memorystore é um serviço de armazenamento de dados na memória totalmente gerenciado para o Redis. Ele oferece uma solução de armazenamento em cache confiável, escalonável e de alto desempenho que pode ajudar a melhorar o desempenho do seu app da Web. Também é possível usar o Cloud Memorystore para armazenar conteúdo estático em cache, como imagens e arquivos JavaScript. Encontre mais informações para sua dúvida aqui: Apresentação do Memorystore: um serviço de armazenamento de dados na memória totalmente gerenciado para Redis.

  3. Antes de continuar usando o Cloud Memorystore para Redis, é importante garantir que a comunicação entre o Cloud Run e o Cloud Memorystore seja particular. Digite o seguinte comando:

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

    Gemini deve ser semelhante a esta:

    Para garantir que a comunicação entre o Cloud Run e o Cloud Memorystore seja particular, você precisa criar um conector de acesso VPC sem servidor. Isso permitirá a conectividade entre o Cloud Run e a VPC em que sua instância do Memorystore reside. Encontre mais informações para sua dúvida aqui: Como usar o Memorystore para Redis para armazenar aplicativos Django em cache.

Explorar bancos de dados relacionais no Google Cloud

Por fim, você quer estabelecer um armazenamento de banco de dados relacional. Você solicita ao Genmini para ajudá-lo a navegar pelas opções:

  1. Digite o seguinte comando:

    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 precisa responder com algo semelhante ao seguinte:

    Existem algumas opções para armazenar dados em um serviço totalmente gerenciado. Uma opção é usar o Cloud SQL. O Cloud SQL é um serviço de banco de dados relacional totalmente gerenciado que oferece uma plataforma simples, confiável e segura para executar cargas de trabalho do SQL Server, MySQL e PostgreSQL no Google Cloud. Ele foi projetado para ajudar você a começar rapidamente a migrações sem servidor usando o Database Migration Service. O Cloud SQL para SQL Server garante automaticamente que os bancos de dados do SQL Server sejam confiáveis, seguros e escalonáveis para que seus negócios continuem a funcionar sem interrupções. Encontre mais informações para sua dúvida aqui: visão geral do Cloud SQL.

Como implantar uma arquitetura de amostra

Por fim, você quer estabelecer um armazenamento de banco de dados relacional. Você solicita ao Genmini para ajudá-lo a navegar pelas opções:

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 precisa responder com algo semelhante ao seguinte:

Claro, esta é uma solução que usa o Cloud Run, o Cloud Memorystore e o Cloud SQL juntos para um aplicativo da Web:
Solução de início: app da Web de três camadas.
Esta solução é um aplicativo da Web de três camadas que usa o Cloud Run, o Cloud Memorystore para Redis e o Cloud SQL para PostgreSQL. O aplicativo usa o Cloud Memorystore para armazenar dados em cache e o Cloud SQL para armazenar dados permanentes.

Para testar a nova arquitetura, você decide seguir as instruções na página da Web fornecida e implantar essa solução de exemplo para testar e inspecionar a arquitetura do caminho dourado.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto do Google Cloud criado para este tutorial. A outra opção é excluir os recursos individuais.

  1. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir