Architettare un'app multi-livello con Gemini per l'assistenza Google Cloud

Questo tutorial mostra come utilizzare Gemini per Google Cloud, un collaboratore basato sull'AI di Google Cloud, per progettare un'applicazione web multilivello utilizzando, ove possibile, servizi completamente gestiti.

Obiettivi

  • Esplora i vari servizi Google che puoi utilizzare per gestire il traffico sulla rete internet pubblica.
  • Esplora i vari servizi Google che puoi utilizzare per memorizzare i dati nella cache per recuperarli più rapidamente.
  • Esplora i vari servizi Google che puoi utilizzare per rendere persistenti i dati stateful.
  • Architetto del modo in cui i vari servizi Google interagiscono.

Prodotti Google Cloud utilizzati

  • Cloud Run. Cloud Run è una piattaforma di computing gestita che consente di eseguire i container direttamente sull'infrastruttura scalabile di Google. Puoi eseguire il deployment di codice scritto in qualsiasi linguaggio di programmazione in Cloud Run, a patto che tu possa creare un'immagine container.
  • Cloud Memorystore Cloud Memorystore è un servizio di datastore in memoria completamente gestito per Redis e Memcached. Crea cache delle applicazioni che consentono di accedere ai dati in meno di un millisecondo.
  • Cloud SQL. Cloud SQL è un servizio che fornisce database relazionali completamente gestiti nel cloud. Offre motori di database MySQL, PostgreSQL e SQL Server.

Prima di iniziare

  1. Assicurati che Gemini sia configurato per il tuo account utente e il tuo progetto Google Cloud.

Esplorare la pubblicazione web in Google Cloud

Nell'esempio seguente, supponiamo che tu sia un architetto che vuole utilizzare Gemini per prendere decisioni sul percorso d'oro a livello di organizzazione per gli sviluppatori che vogliono creare rapidamente un'app web su Google Cloud. Il tuo obiettivo è utilizzare l'assistenza di Gemini per comprendere le opzioni a tua disposizione, le loro caratteristiche e la loro interoperabilità.

Nella console Google Cloud, puoi chattare con Gemini per ricevere assistenza. Utilizzando il riquadro Gemini, inserisci i prompt, ovvero domande o affermazioni che descrivono l'aiuto che ti serve, e Gemini restituisce le risposte.

Inizi chiedendo a Gemini di aiutarti a prendere una decisione sul livello di computing su cui verrà eseguita la pubblicazione web. Procedi nel seguente modo:

  1. Nella barra degli strumenti della console Google Cloud, fai clic su Apri Gemini.

  2. Nel riquadro Gemini, inserisci il seguente prompt in base ai tuoi requisiti e alle tue preferenze, quindi fai clic su Invia:

    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.
    

    La risposta di Gemini dovrebbe essere simile alla seguente:

    Esistono alcune opzioni per eseguire un'app per gestire il traffico sulla rete internet pubblica su Google Cloud. Puoi usare Cloud Run, App Engine o Compute Engine.
    Cloud Run è una piattaforma serverless completamente gestita che consente di eseguire container stateless richiamabili tramite richieste HTTP. App Engine è una piattaforma completamente gestita che fornisce un ambiente di programmazione per lo sviluppo e l'esecuzione di applicazioni web. Compute Engine è un servizio di macchine virtuali (VM) che ti consente di creare e gestire macchine virtuali.
    Per decidere quale opzione è più adatta per te, devi considerare i seguenti fattori:
    Le dimensioni e la complessità della tua app
    La quantità di traffico che ti aspetti di ricevere
    Il livello di controllo necessario sulla tua app
    Il costo
    Se hai un'app semplice e piccola che prevedi di ricevere una piccola quantità di traffico, Cloud Run è una buona opzione. Se hai un'app più grande e più complessa che prevedi di ricevere una grande quantità di traffico, App Engine o Compute Engine potrebbero essere un'opzione migliore. Se hai bisogno di molto controllo sulla tua app, Compute Engine è una buona scelta. Se non hai un budget elevato, Cloud Run è una buona opzione.

  3. Dato che stai creando l'architettura del percorso più veloce per l'esecuzione di app web più piccole nella tua organizzazione, la descrizione di Cloud Run di Gemini sembra soddisfare meglio i tuoi requisiti. Prima però devi confermare alcune caratteristiche della piattaforma. Inserisci il seguente prompt e fai clic su Invia:

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

    La risposta di Gemini dovrebbe essere simile alla seguente:

    Cloud Run usa il numero di richieste o eventi in entrata per eseguire la scalabilità automatica. Quando una revisione non riceve traffico, per impostazione predefinita viene scalata a zero istanze. Ulteriori informazioni sulla scalabilità automatica delle istanze sono disponibili qui.

  4. Grazie alla scalabilità automatica di Cloud Run basata sulle richieste in entrata, ora vuoi comprendere in che modo il traffico entra nelle applicazioni ospitate. Inserisci il seguente prompt:

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

    La risposta di Gemini dovrebbe essere simile alla seguente:

    Cloud Run accetta il traffico in entrata in entrata dalle seguenti origini:
    Rete internet pubblica: le richieste vengono instradate direttamente da origini pubbliche ai tuoi servizi Cloud Run con la possibilità di instradare il traffico attraverso un bilanciatore del carico HTTP(S) esterno.
    API e servizi Google: le richieste provenienti dalle API e dai servizi Google vengono instradate ai servizi Cloud Run senza bisogno di un bilanciatore del carico HTTP(S) esterno.
    Reti VPC: le richieste dalle reti VPC vengono instradate ai servizi Cloud Run tramite un connettore VPC.
    Puoi controllare la modalità di esposizione del servizio Cloud Run agli utenti utilizzando le impostazioni in entrata.

  5. Sebbene un bilanciatore del carico pubblico esterno sia adatto per questa classe di applicazioni, vuoi che Gemini ti aiuti a capire se la piattaforma può esporre l'applicazione solo a utenti autenticati con le autorizzazioni corrette. Digita il seguente prompt:

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

    La risposta di Gemini dovrebbe essere simile alla seguente:

    Sì, esiste un meccanismo per garantire che solo gli utenti autenticati possano accedere a un'applicazione Cloud Run. Puoi farlo specificando l'opzione no-allow-unauthenticated quando esegui il deployment di un servizio. Ciò farà sì che il tuo servizio rifiuterà le richieste non autenticate con un errore HTTP 403 Forbidden. Puoi trovare ulteriori informazioni sulla tua domanda qui: Consentire l'accesso pubblico (non autenticato).

  6. Infine, per impostare questa funzionalità per gli sviluppatori della tua organizzazione, la tua preferenza è che non scrivano configurazioni relative all'infrastruttura, ad esempio 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?
    

    La risposta di Gemini dovrebbe essere simile alla seguente:

    Sì, puoi eseguire il deployment di un'app Python in Cloud Run direttamente dal codice sorgente. Puoi utilizzare il buildpack Python di Cloud Run per creare ed eseguire il deployment della tua app Python. Per ulteriori informazioni in merito, consulta questa pagina: Deployment da codice sorgente.

Esplora la memorizzazione nella cache in Google Cloud

Ora devi procedere con la scelta di un servizio per il livello successivo: la memorizzazione nella cache. Un bisogno comune di questo livello da parte dei tuoi team ti porta a chiedere a Gemini di aiutarti a capire le offerte di Google Cloud in questo ambito. Segui questi passaggi per chiedere assistenza a Gemini:

  1. Nella barra degli strumenti della console Google Cloud, fai clic su Apri Gemini.

  2. Inserisci il seguente prompt e fai clic su Invia:

    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.
    

    La risposta di Gemini dovrebbe essere simile alla seguente:

    Esistono alcuni modi per introdurre un livello di memorizzazione nella cache nella tua app web. Una opzione è utilizzare un servizio completamente gestito come Cloud Memorystore. Cloud Memorystore è un servizio di datastore in memoria completamente gestito per Redis. Fornisce una soluzione di memorizzazione nella cache scalabile, affidabile e ad alte prestazioni che può aiutarti a migliorare le prestazioni della tua app web. Puoi anche utilizzare Cloud Memorystore per memorizzare nella cache contenuti statici come immagini e file JavaScript. Puoi trovare ulteriori informazioni sulla tua domanda qui: Memorystore, un servizio di datastore in memoria completamente gestito per Redis.

  3. Prima di procedere all'utilizzo di Cloud Memorystore for Redis, devi assicurarti che la comunicazione tra Cloud Run e CloudMemorystore sia privata. Digita il seguente prompt:

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

    La risposta di Gemini dovrebbe essere simile alla seguente:

    Per garantire che la comunicazione tra Cloud Run e Cloud Memorystore sia privata, devi creare un connettore di accesso VPC serverless. Ciò consentirà la connettività tra Cloud Run e il VPC in cui si trova l'istanza Memorystore. Puoi trovare ulteriori informazioni sulla tua domanda qui: utilizzo di Memorystore for Redis per memorizzare nella cache le tue applicazioni Django.

Esplora i database relazionali in Google Cloud

Infine, ora devi stabilirti su un archivio di database relazionale. Chiedi a Gemini per Google Cloud di aiutarti a esplorare le opzioni:

  1. Digita il seguente prompt:

    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 dovrebbe rispondere con qualcosa di simile a quanto segue:

    Esistono alcune opzioni per mantenere i dati in un servizio completamente gestito. Un'opzione è utilizzare Cloud SQL. Cloud SQL è un servizio di database relazionale completamente gestito che offre una piattaforma semplice, affidabile e sicura per l'esecuzione di carichi di lavoro SQL Server, MySQL e PostgreSQL su Google Cloud. È progettato per aiutarti a iniziare rapidamente con le migrazioni serverless utilizzando Database Migration Service. Cloud SQL per SQL Server garantisce automaticamente l'affidabilità, la sicurezza e la scalabilità dei tuoi database SQL Server, in modo che la tua attività prosegua senza interruzioni. Puoi trovare ulteriori informazioni sulla tua domanda qui: Panoramica di Cloud SQL.

Deployment di un'architettura di esempio

Infine, ora devi stabilirti su un archivio di database relazionale. Chiedi a Gemini per Google Cloud di aiutarti a esplorare le opzioni:

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 dovrebbe rispondere con qualcosa di simile a quanto segue:

Certo, ecco una soluzione che utilizza Cloud Run, Cloud Memorystore e Cloud SQL insieme per un'applicazione web:
Soluzione di avvio rapido: app web a tre livelli.
Questa soluzione è un'applicazione web a tre livelli che utilizza Cloud Run, Cloud Memorystore for Redis e Cloud SQL per PostgreSQL. L'applicazione usa Cloud Memorystore per memorizzare i dati nella cache e Cloud SQL per archiviare i dati permanenti.

Per testare la nuova architettura, decidi di seguire le istruzioni riportate nella pagina web fornita ed eseguire il deployment di questa soluzione di esempio per testare e ispezionare l'architettura del percorso aureo.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, puoi eliminare il progetto Google Cloud che hai creato per questo tutorial. In alternativa, puoi eliminare le singole risorse.

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi