Hosting di siti web

Last reviewed 2024-06-11 UTC

Questo articolo spiega come ospitare un sito web su Google Cloud. Google Cloud offre una piattaforma robusta, flessibile, affidabile e scalabile per la pubblicazione di siti web. Google ha creato Google Cloud utilizzando la stessa infrastruttura utilizzata da Google per pubblicare contenuti da siti come Google.com, YouTube e Gmail. Puoi ospitare i contenuti del tuo sito web utilizzando il tipo e il design dell'infrastruttura più adatti alle tue esigenze.

Questo articolo potrebbe esserti utile se:

  • Conoscenza di come creare un sito web e aver già implementato ed eseguito alcune infrastrutture di hosting web.
  • Valutare se e come eseguire la migrazione del tuo sito a Google Cloud.

Se vuoi creare un sito web semplice, ti consigliamo di utilizzare Google Sites, uno strumento di creazione di pagine web e wiki strutturate. Per saperne di più, consulta la guida di Sites.

Scelta di un'opzione

Se non hai mai utilizzato Google Cloud, è ragionevole iniziare utilizzando il tipo di tecnologia che conosci già. Ad esempio, se al momento utilizzi server hardware o macchine virtuali (VM) per ospitare il tuo sito, magari con un altro provider cloud o sul tuo hardware, Compute Engine ti offre un paradigma familiare. Se utilizzi già un'offerta Platform as a Service (PaaS), come Heroku o Engine Yard, App Engine potrebbe essere la soluzione migliore per iniziare. Se preferisci il serverless computing, Cloud Run probabilmente è una buona opzione per te.

Dopo aver acquisito familiarità con Google Cloud, puoi esplorare la gamma di prodotti e servizi offerti da Google Cloud . Ad esempio, se hai iniziato a utilizzare Compute Engine, puoi aumentare le funzionalità del tuo sito utilizzando Google Kubernetes Engine (GKE) o eseguendo la migrazione di alcune o tutte le funzionalità ad App Engine e Cloud Run.

La tabella seguente riassume le opzioni di hosting su Google Cloud:

Opzione Prodotto Archiviazione dei dati Bilanciamento del carico Scalabilità Logging e monitoraggio
Sito web statico

Cloud Storage

Firebase Hosting

Bucket Cloud Storage

HTTP(S) facoltativo

Automaticamente

Cloud Logging

Cloud Monitoring

Macchine virtuali Compute Engine

Cloud SQL, Cloud Storage, Firestore e Bigtable oppure puoi utilizzare un altro provider di archiviazione esterno.

Dischi permanenti basati su hard disk, chiamati dischi permanenti standard, e dischi permanenti a stato solido (SSD).

HTTP(S)

Proxy TCP

Proxy SSL

Terminazione IPv6

Rete

Tra regioni

Interno

Automaticamente con i gruppi di istanze gestite

Cloud Logging

Cloud Monitoring

Console di monitoraggio

Container GKE Simile a Compute Engine, ma interagisce con i dischi permanenti in modo diverso

Rete

HTTP(S)

Gestore della scalabilità automatica dei cluster

Cloud Logging

Cloud Monitoring

Console di monitoraggio

Piattaforma gestita

App Engine

Servizi Google Cloud come Cloud SQL, Firestore, Cloud Storage e database di terze parti accessibili

HTTP(S)

Gestito da Google

Gestito da Google

Cloud Logging

Cloud Monitoring

Console di monitoraggio

Serverless

Cloud Run

Servizi Google Cloud come Cloud SQL, Firestore, Cloud Storage e database di terze parti accessibili

HTTP(S)

Gestito da Google

Gestito da Google

Cloud Logging

Cloud Monitoring

Console di monitoraggio

Questo articolo può aiutarti a comprendere le principali tecnologie che puoi utilizzare per l'hosting web su Google Cloud e darti un'idea di come funzionano le tecnologie. L'articolo fornisce link a documentazione completa, tutorial e articoli sulle soluzioni che possono aiutarti ad acquisire una conoscenza più approfondita, quando è tutto pronto.

Informazioni sui costi

Poiché esistono molte variabili e ogni implementazione è diversa, non rientra nell'ambito di questo articolo fornire consigli specifici sui costi. Per comprendere i principi di Google sul funzionamento dei prezzi su Google Cloud, consulta la pagina dei prezzi. Per conoscere i prezzi dei singoli servizi, consulta la sezione relativa ai prezzi dei prodotti. Puoi anche utilizzare il calcolatore dei prezzi per stimare il possibile utilizzo di Google Cloud . Puoi fornire dettagli sui servizi che vuoi utilizzare e visualizzare una stima del prezzo.

Configurazione dei servizi di nomi di dominio

In genere, ti consigliamo di registrare un nome di dominio per il tuo sito. Puoi utilizzare un registrar di nomi di dominio pubblico per registrare un nome univoco per il tuo sito. Se vuoi avere il controllo completo del tuo DNS (Domain Name System), puoi utilizzare Cloud DNS come provider DNS. La documentazione di Cloud DNS include una guida rapida per iniziare.

Se hai già un provider DNS che vuoi utilizzare, in genere devi creare un paio di record con quel provider. Per un nome di dominio come example.com, devi creare un record A con il tuo provider DNS. Per il sottodominio www.example.com, crea un record CNAME per www per indirizzarlo al dominio example.com. Il record A mappa un nome host a un indirizzo IP. Il record CNAME crea un alias per il record A.

Se il tuo registrar di nomi di dominio è anche il tuo provider DNS, probabilmente non devi fare altro. Se utilizzi provider separati per la registrazione e il DNS, assicurati che il tuo registrar di nomi di dominio abbia i server dei nomi corretti associati al tuo dominio.

Dopo aver apportato le modifiche al DNS, la propagazione degli aggiornamenti dei record può richiedere del tempo, a seconda dei valori TTL (Time To Live) nella tua zona. Se si tratta di un nuovo nome host, le modifiche vengono applicate rapidamente perché i resolver DNS non hanno memorizzato nella cache i valori precedenti e possono contattare il provider DNS per ottenere le informazioni necessarie per instradare le richieste.

Hosting di un sito web statico

Il modo più semplice per pubblicare i contenuti di un sito web tramite HTTP(S) è ospitare pagine web statiche. Le pagine web statiche vengono pubblicate senza modifiche, come sono state scritte, in genere utilizzando HTML. L'utilizzo di un sito web statico è una buona opzione se le pagine del tuo sito cambiano raramente dopo essere state pubblicate, ad esempio i post del blog o le pagine che fanno parte di un sito web di piccole imprese. Puoi fare molto con le pagine web statiche, ma se vuoi che il tuo sito abbia interazioni solide con gli utenti tramite codice lato server, ti consigliamo di prendere in considerazione le altre opzioni discusse in questo articolo.

Hosting di un sito web statico con Cloud Storage

Per ospitare un sito statico in Cloud Storage, devi creare un bucket Cloud Storage, caricare i contenuti e testare il nuovo sito. Puoi pubblicare i tuoi dati direttamente da storage.googleapis.com, oppure puoi verificare di essere il proprietario del tuo dominio e utilizzare il tuo nome di dominio.

Puoi creare le tue pagine web statiche come preferisci. Ad esempio, puoi scrivere manualmente le pagine utilizzando HTML e CSS. Puoi utilizzare un generatore di siti statici, come Jekyll, Ghost o Hugo, per creare i contenuti. Con i generatori di siti statici, puoi creare un sito web statico scrivendo in Markdown e fornendo modelli e strumenti. In genere, i generatori di siti forniscono un server web locale che puoi utilizzare per visualizzare l'anteprima dei tuoi contenuti.

Una volta che il sito statico è attivo, puoi aggiornare le pagine statiche utilizzando qualsiasi procedura che preferisci. Questa procedura può essere semplice come copiare manualmente una pagina aggiornata nel bucket. Puoi scegliere di utilizzare un approccio più automatizzato, come archiviare i contenuti su GitHub e poi utilizzare un webhook per eseguire uno script che aggiorna il bucket. Un sistema ancora più avanzato potrebbe utilizzare uno strumento di integrazione/distribuzione continua (CI/CD), come Jenkins, per aggiornare i contenuti nel bucket. Jenkins dispone di un plug-in Cloud Storage che fornisce un Google Cloud Storage Uploader passaggio post-build per pubblicare gli elementi delle build in Cloud Storage.

Se hai un'app web che deve fornire contenuti statici o media statici caricati dall'utente, l'utilizzo di Cloud Storage può essere un modo conveniente ed efficiente per ospitare e fornire questi contenuti, riducendo al contempo la quantità di richieste dinamiche della tua app web.

Inoltre, Cloud Storage può accettare direttamente i contenuti inviati dagli utenti. Questa funzionalità consente agli utenti di caricare file multimediali di grandi dimensioni in modo diretto e sicuro senza dover passare per i tuoi server.

Per ottenere il massimo rendimento dal tuo sito web statico, consulta le best practice per Cloud Storage.

Per ulteriori informazioni, consulta le seguenti pagine:

Hosting di un sito web statico con Firebase Hosting

Firebase Hosting fornisce un hosting statico rapido e sicuro per la tua app web. Con Firebase Hosting, puoi eseguire il deployment di app web e contenuti statici su una rete CDN (Content Delivery Network) globale utilizzando un unico comando.

Ecco alcuni vantaggi dell'utilizzo di Firebase Hosting:

  • La tecnologia SSL senza necessità di configurazione è integrata in Firebase Hosting. Esegue il provisioning di certificati SSL su domini personalizzati gratuitamente.
  • Tutti i tuoi contenuti vengono pubblicati tramite HTTPS.
  • I tuoi contenuti vengono distribuiti agli utenti dai server perimetrali della rete CDN in tutto il mondo.
  • Con l'interfaccia a riga di comando di Firebase, puoi avviare la tua app in pochi secondi. Utilizza gli strumenti a riga di comando per aggiungere le destinazioni di deployment al processo di compilazione.
  • Puoi usufruire di funzionalità di gestione delle release, come il deployment atomico di nuovi asset, il controllo completo delle versioni e i rollback con un solo clic.
  • L'hosting offre una configurazione utile per le app a pagina singola e altri siti più simili ad app.
  • L'hosting è progettato per essere utilizzato senza problemi con altre funzionalità di Firebase.

Per ulteriori informazioni, consulta le seguenti pagine:

Utilizzo delle macchine virtuali con Compute Engine

Per i casi d'uso Infrastructure as a Service (IaaS), Google Cloud fornisce Compute Engine. Compute Engine fornisce un'infrastruttura di calcolo solida, ma devi scegliere e configurare i componenti della piattaforma che vuoi utilizzare. Con Compute Engine, è tua responsabilità configurare, amministrare e monitorare i sistemi. Google si assicura che le risorse siano disponibili, affidabili e pronte per essere utilizzate, ma è tua responsabilità eseguirne il provisioning e la gestione. Il vantaggio è che hai il controllo completo dei sistemi e una flessibilità illimitata.

Utilizza Compute Engine per progettare ed eseguire il deployment di quasi qualsiasi sistema di hosting di siti web. Puoi utilizzare le VM, chiamate istanze, per creare la tua app, proprio come faresti se avessi la tua infrastruttura hardware. Compute Engine offre una serie di tipi di macchine per personalizzare la configurazione in base alle tue esigenze e al tuo budget. Puoi scegliere i sistemi operativi, gli stack di sviluppo, i linguaggi, i framework, i servizi e altre tecnologie software che preferisci.

Configurazione automatica con Google Cloud Marketplace

Il modo più semplice per eseguire il deployment di uno stack di hosting web completo è utilizzare Google Cloud Marketplace. Con pochi clic, puoi eseguire il deployment di una delle oltre 100 soluzioni completamente realizzate con Google Click to Deploy o Bitnami.

Cloud Marketplace

Ad esempio, puoi configurare uno stack LAMP o WordPress con Cloud Marketplace. Il sistema esegue il deployment di uno stack software completo e funzionante in pochi minuti su una singola istanza. Prima di eseguire il deployment, Cloud Marketplace mostra le stime dei costi per l'esecuzione del sito, fornisce informazioni chiare sulle versioni dei componenti software che vengono installati per te e ti consente di personalizzare la configurazione modificando i nomi delle istanze dei componenti, scegliendo il tipo di macchina e le dimensioni del disco. Dopo il deployment, hai il controllo completo sulle istanze Compute Engine, sulle relative configurazioni e sul software.

Configurazione manuale

Puoi anche creare l'infrastruttura su Compute Engine manualmente, creando la configurazione da zero o basandoti su un deployment di Google Cloud Marketplace. Ad esempio, potresti voler utilizzare una versione di un componente software non offerta da Cloud Marketplace o forse preferisci installare e configurare tutto autonomamente.

Fornire un framework completo e le best practice per la configurazione di un sito web esula dall'ambito di questo articolo. Tuttavia, da un punto di vista generale, l'aspetto tecnico della configurazione di un'infrastruttura di hosting web su Compute Engine richiede che tu:

  • Comprendi i requisiti. Se stai creando un nuovo sito web, assicurati di conoscere i componenti di cui hai bisogno, ad esempio istanze, esigenze di spazio di archiviazione e infrastruttura di rete. Se esegui la migrazione dell'app da una soluzione esistente, probabilmente conosci già questi requisiti, ma devi valutare come la configurazione esistente viene mappata ai servizi Google Cloud .
  • Pianifica il design. Pensa alla tua architettura e scrivi il design. Fornisci una descrizione il più dettagliata possibile.
  • Crea i componenti. I componenti che in genere potresti considerare come asset fisici, come computer e switch di rete, vengono forniti tramite i servizi in Compute Engine. Ad esempio, se vuoi un computer, devi creare un'istanza Compute Engine. Se vuoi anche un hard disk su disco permanente, puoi crearlo. Gli strumenti Infrastructure as Code, come Terraform, rendono questa procedura facile e ripetibile.
  • Configura e personalizza. Dopo aver ottenuto i componenti che ti interessano, devi configurarli, installare e configurare il software e scrivere e implementare qualsiasi codice di personalizzazione necessario. Puoi replicare la configurazione eseguendo script shell, il che contribuisce ad accelerare i deployment futuri. Anche in questo caso Terraform è utile, in quanto fornisce modelli di configurazione dichiarativi e flessibili per il deployment automatico delle risorse. Puoi anche utilizzare strumenti di automazione IT come Puppet e Chef.Chef
  • Esegui il deployment degli asset. Presumibilmente, hai pagine web e immagini.
  • Esegui il test. Verifica che tutto funzioni come previsto.
  • Esegui il deployment in produzione. Apri il tuo sito in modo che tutti possano vederlo e utilizzarlo.

Memorizzare i dati con Compute Engine

La maggior parte dei siti web ha bisogno di un qualche tipo di spazio di archiviazione. Potresti aver bisogno di spazio di archiviazione per una serie di motivi, ad esempio per salvare i file caricati dagli utenti e, naturalmente, gli asset utilizzati dal tuo sito.

Google Cloud offre una serie di servizi di archiviazione gestiti, tra cui:

  • Un database SQL in Cloud SQL, che è un servizio di database relazionale completamente gestito per MySQL, PostgreSQL e SQL Server.
  • Due opzioni per l'archiviazione dei dati NoSQL: Firestore e Bigtable.
  • Memorystore, un servizio di datastore in memoria completamente gestito per Redis e Memcached.
  • Archiviazione di oggetti coerente, scalabile e di grande capacità in Cloud Storage. Cloud Storage è disponibile in diverse classi:
    • Standard offre la massima disponibilità.
    • Nearline è una scelta a basso costo ideale per i dati a cui si accede meno di una volta al mese.
    • Coldline offre una scelta a basso costo ideale per i dati a cui si accede meno di una volta ogni trimestre.
    • La classe Archive offre la scelta più economica per l'archiviazione, il backup e ripristino di emergenza.
  • Dischi permanenti su Compute Engine da utilizzare come spazio di archiviazione principale per le tue istanze. Compute Engine offre sia dischi permanenti basati su hard disk, chiamati dischi permanenti standard, sia dischi permanenti a stato solido (SSD). Puoi anche scegliere di configurare la tecnologia di archiviazione che preferisci su Compute Engine utilizzando i dischi permanenti. Ad esempio, puoi configurare PostgreSQL come database SQL o MongoDB come spazio di archiviazione NoSQL. Per comprendere l'intera gamma e i vantaggi dei servizi di archiviazione su Google Cloud, consulta Scegliere un'opzione di archiviazione.

Bilanciamento del carico con Compute Engine

Per qualsiasi sito web che operi su larga scala, l'utilizzo di tecnologie di bilanciamento del carico per distribuire il carico di lavoro tra i server è spesso un requisito. Hai a disposizione una serie di opzioni per progettare l'architettura dei server web bilanciati in base al carico su Compute Engine, tra cui:

Il deployment del bilanciamento del carico è flessibile e puoi utilizzare Compute Engine con le tue soluzioni esistenti. Ad esempio, il bilanciamento del carico HTTP(S) mediante Nginx è una possibile soluzione che puoi utilizzare al posto del bilanciatore del carico Compute Engine.

Distribuzione dei contenuti con Compute Engine

Poiché il tempo di risposta è una metrica fondamentale per qualsiasi sito web, l'utilizzo di una CDN per ridurre la latenza e aumentare le prestazioni è spesso un requisito, soprattutto per un sito con traffico web globale.

Cloud CDN utilizza i punti di presenza perimetrali di Google, distribuiti in tutto il mondo, per fornire contenuti dalle posizioni della cache più vicine agli utenti. Cloud CDN funziona con il bilanciamento del carico HTTP(S). Per pubblicare contenuti da Compute Engine, Cloud Storage o da entrambi da un singolo indirizzo IP, abilita Cloud CDN per un bilanciatore del carico HTTP(S).

Scalabilità automatica con Compute Engine

Puoi configurare l'architettura in modo da aggiungere e rimuovere i server in base alle variazioni della domanda. Questo approccio può contribuire a garantire il buon funzionamento del tuo sito durante i picchi di carico, mantenendo al contempo i costi sotto controllo durante i periodi di domanda più tipici. Compute Engine fornisce un'automazione di scalabilità che puoi utilizzare per questo scopo.

La scalabilità automatica è una funzionalità dei gruppi di istanze gestite. Un gruppo di istanze gestite è un pool di istanze di macchine virtuali omogenee, creato da un modello di istanza comune. Un regolatore della scalabilità aggiunge o rimuove istanze in un gruppo di istanze gestite. Anche se Compute Engine dispone di gruppi di istanze gestite e non gestite, puoi utilizzare solo i gruppi di istanze gestite con un'autoscalabilità. Per ulteriori informazioni, consulta la pagina relativa alla scalabilità automatica su Compute Engine.

Per un'analisi approfondita di ciò che serve per creare una soluzione di app web scalabile e resiliente, consulta Creare app web scalabili e resilienti.

Logging e monitoraggio con Compute Engine

Google Cloud include funzionalità che puoi utilizzare per tenere d'occhio cosa accade sul tuo sito web.

Cloud Logging raccoglie e archivia i log di app e servizi su Google Cloud. Puoi visualizzare o esportare i log e integrare i log di terze parti utilizzando un agente di logging.

Logging

Cloud Monitoring fornisce dashboard e alert per il tuo sito. Configura il monitoraggio con la console . Puoi esaminare le metriche delle prestazioni dei servizi cloud, delle macchine virtuali e dei server open source più comuni come MongoDB, Apache, Nginx e Elasticsearch. Puoi utilizzare l'API Cloud Monitoring per recuperare i dati di monitoraggio e creare metriche personalizzate.

Cloud Monitoring fornisce anche controlli di uptime, che inviano richieste ai tuoi siti web per verificare se rispondono. Puoi monitorare la disponibilità di un sito web implementando un criterio di avviso che crei un incidente se il controllo di uptime non va a buon fine.

Gestione di DevOps con Compute Engine

Per informazioni sulla gestione di DevOps con Compute Engine, consulta Test di carico distribuito mediante Kubernetes.

Utilizzo dei container con GKE

Potresti già utilizzare i container, ad esempio quelli di Docker. Per l'hosting web, i container offrono diversi vantaggi, tra cui:

  • Componentizzazione. Puoi utilizzare i contenitori per separare i vari componenti della tua app web. Ad esempio, supponiamo che il tuo sito esegua un web server e un database. Puoi eseguire questi componenti in contenitori separati, modificando e aggiornando un componente senza influire sull'altro. Man mano che il design della tua app diventa più complesso, i container sono una buona scelta per un'architettura orientata ai servizi, inclusi i microservizi. Questo tipo di progettazione supporta la scalabilità, tra gli altri obiettivi.
  • Portabilità. Un contenitore contiene tutto ciò che serve per l'esecuzione: l'app e le sue dipendenze sono raggruppate. Puoi eseguire i container su una varietà di piattaforme, senza preoccuparti dei dettagli del sistema sottostante.
  • Deployment rapido. Quando è il momento di eseguire il deployment, il sistema viene creato da un insieme di definizioni e immagini, in modo che le parti possano essere implementate in modo rapido, affidabile e automatico. I container sono in genere piccoli e vengono dispiacciati molto più rapidamente rispetto, ad esempio, alle macchine virtuali.

Il calcolo dei contenitori su Google Cloud offre ancora più vantaggi per l'hosting web, tra cui:

  • Orchestrazione. GKE è un servizio gestito basato su Kubernetes, il sistema di orchestrazione dei container open source introdotto da Google. Con GKE, il codice viene eseguito in container che fanno parte di un cluster composto da istanze Compute Engine. Anziché gestire i singoli contenitori o creare e arrestare manualmente ogni contenitore, puoi gestire automaticamente il cluster tramite GKE, che utilizza la configurazione che definisci.
  • Registrazione delle immagini. Artifact Registry fornisce spazio di archiviazione privato per le immagini Docker su Google Cloud. Puoi accedere al registry tramite un endpoint HTTPS, in modo da poter estrarre le immagini da qualsiasi macchina, che si tratti di un'istanza Compute Engine o del tuo hardware. Il servizio di registry ospita le tue immagini personalizzate in Cloud Storage nel tuo progettoGoogle Cloud . Questo approccio garantisce per impostazione predefinita che le immagini personalizzate siano accessibili solo dall'entità con accesso al tuo progetto.
  • Mobilità. Ciò significa che hai la flessibilità di spostare e combinare i carichi di lavoro con altri provider cloud o di combinare i carichi di lavoro di cloud computing con le implementazioni on-premise per creare una soluzione ibrida.

Archiviazione dei dati con GKE

Poiché GKE viene eseguito su Google Cloud e utilizza le istanze Compute Engine come nodi, le opzioni di archiviazione hanno molto in comune con lo spazio di archiviazione su Compute Engine. Puoi accedere a Cloud SQL, Cloud Storage, Firestore e Bigtable tramite le relative API oppure, se vuoi, puoi utilizzare un altro provider di archiviazione esterno. Tuttavia, GKE interagisce con i dischi permanenti di Compute Engine in modo diverso rispetto a una normale istanza Compute Engine.

Un'istanza Compute Engine include un disco collegato. Quando utilizzi Compute Engine, il volume del disco rimane associato all'istanza finché esiste. Puoi anche scollegare il disco e utilizzarlo con un'altra istanza. Tuttavia, in un contenitore, i file sul disco sono temporanei. Quando un container viene riavviato, ad esempio dopo un arresto anomalo, i file sul disco vengono persi. Kubernetes risolve questo problema utilizzando le astrazioni volume e Classe di archiviazione. Un tipo di classe di archiviazione è GCE PD. Ciò significa che puoi utilizzare i dischi permanenti di Compute Engine con i contenitori per impedire l'eliminazione dei file di dati quando utilizzi GKE.

Per comprendere le funzionalità e i vantaggi di un volume, devi prima conoscere un po' di informazioni sui pod. Puoi considerare un pod come un host logico specifico per l'app per uno o più container. Un pod viene eseguito su un'istanza di nodo. Quando i container fanno parte di un pod, possono condividere diverse risorse, tra cui un insieme di volumi di archiviazione condivisi. Questi volumi consentono ai dati di sopravvivere ai riavvii dei container e di essere condivisi tra i container all'interno del pod. Naturalmente, puoi utilizzare anche un singolo contenitore e un volume in un pod, ma il pod è un'astrazione necessaria per collegare logicamente queste risorse tra loro.

Per un esempio, consulta il tutorial Utilizzo di dischi permanenti con WordPress e MySQL.

Bilanciamento del carico con GKE

Molte architetture di hosting web di grandi dimensioni devono avere più server in esecuzione che possono condividere le richieste di traffico. Poiché puoi creare e gestire più contenitori, nodi e pod con GKE, è la soluzione ideale per un sistema di hosting web con bilanciamento del carico.

Utilizzo del bilanciamento del carico di rete

Il modo più semplice per creare un bilanciatore del carico in GKE è utilizzare il bilanciamento del carico di rete di Compute Engine. Il bilanciamento del carico di rete può bilanciare il carico dei sistemi in base ai dati del protocollo internet in entrata, come indirizzo, porta e tipo di protocollo. Il bilanciamento del carico di rete utilizza le regole di inoltro. Queste regole rimandano ai pool di destinazione che elencano le istanze disponibili per il bilanciamento del carico.

Con il bilanciamento del carico di rete, puoi bilanciare il carico di altri protocolli basati su TCP/UDP, come il traffico SMTP, e la tua app può ispezionare direttamente i pacchetti.

Puoi eseguire il deployment del bilanciamento del carico di rete semplicemente aggiungendo il campo type: LoadBalancer al file di configurazione del servizio.

Utilizzo del bilanciamento del carico HTTP(S)

Se hai bisogno di funzionalità di bilanciamento del carico più avanzate, come il bilanciamento del carico HTTPS, il bilanciamento del carico in base ai contenuti o il bilanciamento del carico tra regioni, puoi integrare il tuo servizio GKE con la funzionalità di bilanciamento del carico HTTP/HTTPS di Compute Engine. Kubernetes fornisce la risorsa Ingress che incapsula una raccolta di regole per il routing del traffico esterno agli endpoint Kubernetes. In GKE, una risorsa Ingress gestisce il provisioning e la configurazione del bilanciatore del carico HTTP/HTTPS di Compute Engine.

Per ulteriori informazioni sull'utilizzo del bilanciamento del carico HTTP/HTTPS in GKE, consulta Configurazione del bilanciamento del carico HTTP con Ingress.

Scalabilità con GKE

Per il ridimensionamento automatico dei cluster, puoi utilizzare il gestore della scalabilità automatica del cluster. Questa funzionalità controlla periodicamente se sono presenti pod in attesa di un nodo con risorse libere, ma che non sono pianificati. Se esistono pod di questo tipo, il gestore della scalabilità automatica ridimensiona il pool di nodi se il ridimensionamento consente di pianificare i pod in attesa.

Il gestore della scalabilità automatica dei cluster monitora anche l'utilizzo di tutti i nodi. Se un nodo non è necessario per un periodo di tempo prolungato e tutti i relativi pod possono essere pianificati altrove, il nodo viene eliminato.

Per ulteriori informazioni su Cluster Autoscaler, sulle sue limitazioni e sulle best practice, consulta la documentazione di Cluster Autoscaler.

Logging e monitoraggio con GKE

Come su Compute Engine, Logging e Monitoring forniscono i servizi di logging e monitoraggio. Logging raccoglie e archivia i log di app e servizi. Puoi visualizzare o esportare i log e integrare i log di terze parti utilizzando un agente di logging.

Il monitoraggio fornisce dashboard e avvisi per il tuo sito. Configura il monitoraggio con la console . Puoi esaminare le metriche delle prestazioni dei servizi cloud, delle macchine virtuali e dei server open source più comuni come MongoDB, Apache, Nginx ed Elasticsearch. Puoi utilizzare l'API Monitoring per recuperare i dati di monitoraggio e creare metriche personalizzate.

Gestione di DevOps con GKE

Quando utilizzi GKE, ottieni già molti dei vantaggi che la maggior parte delle persone associa a DevOps. Questo è particolarmente vero per quanto riguarda la facilità di packaging, deployment e gestione. Per le tue esigenze di flusso di lavoro CI/CD, puoi utilizzare gli strumenti creati per il cloud, come Cloud Build e Cloud Deploy, o strumenti comuni come Jenkins. Per ulteriori informazioni, consulta i seguenti articoli:

Sviluppo su una piattaforma gestita con App Engine

Su Google Cloud, la piattaforma PaaS (Platform as a Service) gestita si chiama App Engine. Quando crei il tuo sito web su App Engine, puoi concentrarti sulla codifica delle funzionalità e lasciare che sia Google a occuparsi della gestione dell'infrastruttura di supporto. App Engine offre una vasta gamma di funzionalità che semplificano notevolmente la scalabilità, il bilanciamento del carico, il logging, il monitoraggio e la sicurezza rispetto a quanto faresti se dovessi crearli e gestirli autonomamente. App Engine ti consente di scrivere codice in diversi linguaggi di programmazione e può utilizzare una serie di altri servizi Google Cloud .

App Engine fornisce l'ambiente standard, che ti consente di eseguire le app in un ambiente sicuro e con limitazioni tramite sandbox. L'ambiente standard di App Engine distribuisce le richieste su più server e scala i server per soddisfare la domanda di traffico. L'app viene eseguita in un proprio ambiente sicuro e affidabile indipendente dall'hardware, dal sistema operativo o dalla posizione fisica del server.

L'app web utilizza App Engine e altri componenti

Per offrirti più opzioni, App Engine offre l'ambiente flessibile. Quando utilizzi l'ambiente flessibile, l'app viene eseguita su istanze di Compute Engine configurabili, ma App Engine gestisce l'ambiente di hosting per te. Ciò significa che puoi utilizzare altri runtime, inclusi quelli personalizzati, per avere a disposizione più linguaggi di programmazione. Puoi anche usufruire di alcune delle flessibilità offerte da Compute Engine, ad esempio scegliere tra una serie di opzioni di CPU e memoria.

Linguaggi di programmazione

L'ambiente standard App Engine fornisce runtime predefiniti e puoi scrivere codice sorgente in versioni specifiche dei linguaggi di programmazione supportati.

Con l'ambiente flessibile, puoi scrivere il codice sorgente in una versione di uno qualsiasi dei linguaggi di programmazione supportati. Puoi personalizzare questi runtime o fornire il tuo runtime con un'immagine Docker o un Dockerfile personalizzati.

Se il linguaggio di programmazione che utilizzi è una priorità, devi decidere se i runtime forniti dall'ambiente standard di App Engine soddisfano i tuoi requisiti. In caso contrario, ti consigliamo di utilizzare l'ambiente flessibile.

Per determinare quale ambiente soddisfa al meglio le esigenze della tua app, consulta Scegliere un ambiente App Engine.

Tutorial introduttivi per lingua

I seguenti tutorial possono aiutarti a iniziare a utilizzare l'ambiente standard di App Engine:

I seguenti tutorial possono aiutarti a iniziare a utilizzare l'ambiente flessibile:

Archiviazione dei dati con App Engine

App Engine offre opzioni per archiviare i dati:

Nome Strutturazione Coerenza
Firestore Senza schema Coerenza elevata.
Cloud SQL Relazionale Coerenza elevata.
Cloud Storage File e metadati associati Molto coerente, tranne quando vengono eseguite operazioni di elenco che recuperano un elenco di bucket o oggetti.

Puoi anche utilizzare diversi database di terze parti con l'ambiente standard.

Per ulteriori dettagli sullo spazio di archiviazione in App Engine, consulta la sezione Scegliere un'opzione di archiviazione e poi seleziona il linguaggio di programmazione che preferisci.

Quando utilizzi l'ambiente flessibile, puoi utilizzare tutte le opzioni di archiviazione disponibili nell'ambiente standard, nonché una gamma più ampia di database di terze parti. Per ulteriori informazioni sui database di terze parti nell'ambiente flessibile, consulta Utilizzare database di terze parti.

Bilanciamento del carico e scalabilità automatica con App Engine

Per impostazione predefinita, App Engine inoltra automaticamente le richieste in arrivo alle istanze di backend appropriate e esegue il bilanciamento del carico per te. Tuttavia, se vuoi sfruttare le funzionalità complete del bilanciamento del carico HTTP(S) di livello enterprise di Google Cloud, puoi utilizzare i gruppi di endpoint di rete serverless.

Per la scalabilità, App Engine può creare e arrestare automaticamente le istanze in base alle fluttuazioni del traffico oppure puoi specificare un numero di istanze da eseguire indipendentemente dall'entità del traffico.

Logging e monitoraggio con App Engine

In App Engine, le richieste vengono registrate automaticamente e puoi visualizzarle nella console Google Cloud . App Engine funziona anche con librerie standard specifiche per il linguaggio che forniscono funzionalità di logging e inoltrano le voci di log ai log nella console Google Cloud . Ad esempio, in Python puoi utilizzare il modulo di logging Python standard e in Java puoi integrare l'appender logback o java.util.logging con Cloud Logging. Questo approccio consente di utilizzare tutte le funzionalità di Cloud Logging e richiede solo alcune righe di codice specifico per Google Cloud.

Cloud Monitoring fornisce funzionalità per il monitoraggio delle tue app App Engine. Tramite la console Google Cloud , puoi monitorare incidenti, controlli di uptime e altri dettagli.

Sviluppo su una piattaforma serverless con Cloud Run

La piattaforma serverless diGoogle Cloudti consente di scrivere il codice nel modo che preferisci, senza preoccuparti dell'infrastruttura sottostante. Puoi creare applicazioni serverless complete con lo spazio di archiviazione, i database, il machine learning e altri servizi diGoogle Cloud.

Per i siti web containerizzati, puoi eseguirne il deployment anche su Cloud Run oltre che utilizzando GKE. Cloud Run è una piattaforma serverless completamente gestita che ti consente di eseguire applicazioni containerizzate altamente scalabili su Google Cloud. Paghi solo per il tempo di esecuzione del codice.

Utilizzando i container con Cloud Run, puoi sfruttare tecnologie consolidate come Nginx, Express.js e Django per creare i tuoi siti web, accedere al tuo database SQL su Cloud SQL ed eseguire il rendering di pagine HTML dinamiche.

La documentazione di Cloud Run include una guida rapida per iniziare.

Archiviazione dei dati con Cloud Run

I container Cloud Run sono effimeri e devi conoscere le relative quote e i limiti per i tuoi casi d'uso. I file possono essere archiviati temporaneamente per l'elaborazione in un'istanza del contenitore, ma questo spazio di archiviazione viene utilizzato dalla memoria disponibile per il servizio come descritto nel contratto di runtime.

Per l'archiviazione permanente, in modo simile ad App Engine, puoi scegliere i servizi di Google Cloud, come Cloud Storage, Firestore o Cloud SQL. In alternativa, puoi anche utilizzare una soluzione di archiviazione di terze parti.

Bilanciamento del carico e scalabilità automatica con Cloud Run

Per impostazione predefinita, quando esegui il build su Cloud Run, le richieste in arrivo vengono indirizzate automaticamente ai container di backend appropriati e il bilanciamento del carico viene eseguito automaticamente. Tuttavia, se vuoi sfruttare le funzionalità complete del bilanciamento del carico HTTP(S) di livello enterprise di Google Cloud, puoi utilizzare i gruppi di endpoint di rete serverless.

Con il bilanciamento del carico HTTP(S), puoi attivare Cloud CDN o pubblicare il traffico da più regioni. Inoltre, puoi utilizzare il middleware, ad esempio API Gateway, per migliorare il tuo servizio.

Per Cloud Run, Google Cloud gestisce per te l'autoscaling delle istanze container. Ogni revision viene scalata automaticamente in base al numero di istanze container necessarie per gestire tutte le richieste in entrata. Quando una revisione non riceve traffico, per impostazione predefinita viene eseguita la scalabilità fino a zero istanze del contenitore. Tuttavia, se vuoi, puoi modificare questa impostazione predefinita per specificare un'istanza da mantenere inattiva o in uso utilizzando l'impostazione Istanze minime.

Logging e monitoraggio con Cloud Run

Cloud Run ha due tipi di log, che vengono inviati automaticamente a Cloud Logging:

  • Log delle richieste: log delle richieste inviate ai servizi Cloud Run. Questi log vengono creati automaticamente.
  • Log dei container: i log emessi dalle istanze dei container, in genere dal tuo codice, scritti nelle posizioni supportate come descritto in Scrivere log dei container.

Puoi visualizzare i log del tuo servizio in due modi:

  • Utilizza la pagina Cloud Run nella console Google Cloud .
  • Utilizza Esplora log di Cloud Logging nella console Google Cloud .

Entrambi questi metodi di visualizzazione esaminano gli stessi log archiviati in Cloud Logging, ma Esplora log fornisce più dettagli e più funzionalità di filtro.

Cloud Monitoring fornisce monitoraggio del rendimento di Cloud Run, metriche e controlli di uptime, nonché avvisi per inviare notifiche quando vengono superate determinate soglie di metriche. Si applicano i prezzi di Google Cloud Observability, il che significa che non viene addebitato alcun costo per le metriche nella versione completamente gestita di Cloud Run. Tieni presente che puoi anche utilizzare le metriche personalizzate di Cloud Monitoring.

Cloud Run è integrato con Cloud Monitoring senza alcuna configurazione o configurazione richiesta. Ciò significa che le metriche dei tuoi servizi Cloud Run vengono acquisite automaticamente quando sono in esecuzione.

Creazione di sistemi di gestione dei contenuti

L'hosting di un sito web significa gestire gli asset del sito web. Cloud Storage offre un repository globale per questi asset. Un'architettura comune esegue il deployment di contenuti statici in Cloud Storage e poi esegue la sincronizzazione con Compute Engine per eseguire il rendering di pagine dinamiche. Cloud Storage è compatibile con molti sistemi di gestione dei contenuti di terze parti, come WordPress, Drupal e Joomla. Cloud Storage offre anche un'API compatibile con Amazon S3, pertanto qualsiasi sistema compatibile con Amazon S3 può essere utilizzato con Cloud Storage.

Il diagramma seguente è un'architettura di esempio per un sistema di gestione dei contenuti. Sistema di gestione dei contenuti su Google Cloud

Passaggi successivi

  • Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.