Creare un'applicazione Node.js è solo la prima fase del ciclo di vita dello sviluppo software; è nel renderla accessibile, performante e resiliente in un ambiente di produzione che la distribuzione delle applicazioni diventa fondamentale. Il deployment di applicazioni web moderne comporta la selezione di un'architettura che corrisponda al profilo di traffico, alla fase del ciclo di vita e al budget delle risorse.
Che tu stia lanciando un prototipo full stack assistito dall'AI o facendo il deployment di un servizio di backend di produzione, gli ambienti cloud moderni offrono sia percorsi automatizzati che containerizzati. Questa guida illustra i concetti fondamentali dell'architettura web di Node.js, esplora le principali considerazioni sul deployment e spiega passo passo come creare un'app Node.js e farne il deployment su un'infrastruttura gestita utilizzando le quote del livello senza costi.
Node.js è un ambiente di runtime JavaScript open source e multipiattaforma basato sul motore JavaScript Chrome V8. Consente a JavaScript di essere eseguito lato server al di fuori del browser web, permettendo ai tecnici di scrivere codebase full stack unificati utilizzando un singolo linguaggio di programmazione.
A differenza dei tradizionali server web multithread che generano un thread isolato del sistema operativo per ogni connessione simultanea, Node.js opera su un modello I/O non bloccante, single-thread e basato su eventi. Questa architettura rende Node.js una soluzione agile ed efficiente per la gestione di migliaia di connessioni simultanee, come API RESTful, messaggistica in tempo reale, servizi di streaming e orchestratori di agenti AI.
Quando ci si prepara a fare il deployment di un backend Node.js, selezionare l'ambiente di computing più adatto influisce direttamente sull'overhead di manutenzione, sulla velocità della scalabilità e sull'efficienza dei costi.
Funzionalità | Macchine virtuali (IaaS/VPS) | Hosting PaaS/buildpack | Container serverless moderni |
Gestione dell'infrastruttura | Applicazione manuale di patch al sistema operativo, gestione del firewall e aggiornamenti del runtime | Livello di piattaforma completamente gestito con vincoli di runtime del fornitore | Infrastruttura completamente gestita; zero gestione del sistema operativo |
Meccanismo di scalabilità | Scalabilità automatica delle VM basata su metriche (l'avvio delle istanze richiede alcuni minuti) | Scalabilità automatica in base al numero di istanze o ai limiti dei worker | Scalabilità automatica istantanea basata sulle richieste, inclusa la scalabilità fino a zero |
Formato della pacchettizzazione | File sorgente non elaborati, servizi systemd o gestori di processi PM2 | Integrazione del repository tramite git push con buildpack automatizzati. | Immagini container OCI/Docker standard |
Profilo dei costi di inattività | Fatturazione 24 ore su 24, 7 giorni su 7, indipendentemente dal traffico HTTP in entrata | Spesso richiede un prezzo minimo per l'istanza di base. | Fatturazione rigorosamente al secondo durante l'elaborazione delle richieste attive |
Portabilità | Elevata portabilità, ma alto rischio di deriva dell'ambiente | Bassa portabilità; vincolo alle convenzioni della piattaforma | Elevata portabilità; esegue container identici in qualsiasi ambiente |
Funzionalità
Macchine virtuali (IaaS/VPS)
Hosting PaaS/buildpack
Container serverless moderni
Gestione dell'infrastruttura
Applicazione manuale di patch al sistema operativo, gestione del firewall e aggiornamenti del runtime
Livello di piattaforma completamente gestito con vincoli di runtime del fornitore
Infrastruttura completamente gestita; zero gestione del sistema operativo
Meccanismo di scalabilità
Scalabilità automatica delle VM basata su metriche (l'avvio delle istanze richiede alcuni minuti)
Scalabilità automatica in base al numero di istanze o ai limiti dei worker
Scalabilità automatica istantanea basata sulle richieste, inclusa la scalabilità fino a zero
Formato della pacchettizzazione
File sorgente non elaborati, servizi systemd o gestori di processi PM2
Integrazione del repository tramite git push con buildpack automatizzati.
Immagini container OCI/Docker standard
Profilo dei costi di inattività
Fatturazione 24 ore su 24, 7 giorni su 7, indipendentemente dal traffico HTTP in entrata
Spesso richiede un prezzo minimo per l'istanza di base.
Fatturazione rigorosamente al secondo durante l'elaborazione delle richieste attive
Portabilità
Elevata portabilità, ma alto rischio di deriva dell'ambiente
Bassa portabilità; vincolo alle convenzioni della piattaforma
Elevata portabilità; esegue container identici in qualsiasi ambiente
Lo sviluppo di un'applicazione Node.js pronta per la produzione richiede l'adozione di pattern architetturali che prevengano i colli di bottiglia e garantiscano l'uptime:
Puoi creare ed eseguire il deployment di un'applicazione Node.js utilizzando due workflow principali: Prototipazione rapida assistita dall'AI (non è richiesta la configurazione locale) o Deployment standard basato su container (per codebase esistenti).
Per la prototipazione rapida e le applicazioni di AI, la modalità di creazione di Google AI Studio consente agli sviluppatori di descrivere architetture Node.js full stack in linguaggio naturale e di eseguirne il deployment su Cloud Run senza strumenti a riga di comando locali o configurazioni di fatturazione obbligatorie.
Passaggio 1: inizializza l'applicazione in modalità di creazione
Passaggio 2: configura i dati e l'autenticazione integrati
Passaggio 3: pubblica su Cloud Run gestito
Per codebase preesistenti e microservizi personalizzati, pacchettizza la tua applicazione Node.js in un container conforme a OCI ed esegui il deployment direttamente in Cloud Run.
Passaggio 1: struttura il codice del server Node.js
Crea un server HTTP minimo utilizzando Express, Fastify o librerie Node.js standard (index.js):
Nota: Cloud Run inserisce automaticamente la variabile di ambiente PORT in fase di runtime. Il fallback || 8080 nel codice riportato sopra è incluso principalmente per facilitare i test locali sulla tua macchina prima del deployment.
Passaggio 2: crea un Dockerfile multifase sicuro
Pacchettizza la tua applicazione utilizzando una build multifase per garantire un'immagine di produzione minima e sicura.
Best practice: crea un file .dockerignore nella directory root e aggiungi node_modules e .env. In questo modo, i file di sviluppo locali non vengono raggruppati accidentalmente nell'immagine container, mantenendola pulita e sicura.
Crea un file denominato Dockerfile nella directory root:
Passaggio 3: esegui il deployment in Cloud Run
Esegui il deployment utilizzando Google Cloud CLI dalla cartella principale locale. Se vuoi, puoi anche creare un URL personalizzato nel formato <user-defined>.cloud.run per la tua applicazione:
Comprendere il funzionamento delle allocazioni senza costi ti consente di creare prototipi e scalare la tua applicazione Node.js in modo prevedibile:
Tipo di livello | Quote di computing e risorse | Requisiti / limiti |
Starter Tier Google Cloud (prototipazione) | • Cloud Run: fino a due applicazioni web attive • Cloud Firestore: 1 GiB di spazio di archiviazione, 50.000 letture al giorno, 40.000 scritture al giorno • Cloud SQL: PostgreSQL Developer Edition (scalabilità fino a zero) • Firebase Auth: Accedi con Google incluso | • Account Google valido • Non è necessaria una carta di credito o un account di fatturazione • Blocco di una singola regione di deployment |
Livello senza costi standard di Google Cloud (account standard) | • Cloud Run: 2 milioni di richieste al mese, 180.000 vCPU al secondo al mese, 360.000 GiB al secondo al mese, 1 GB di traffico di rete in uscita dal Nord America al mese • Accesso a un credito di benvenuto di 300 $ per i primi 90 giorni | • Account di fatturazione Cloud collegato • Accesso completo alle API della piattaforma in tutte le regioni |
Tipo di livello
Quote di computing e risorse
Requisiti / limiti
Starter Tier Google Cloud (prototipazione)
• Cloud Run: fino a due applicazioni web attive
• Cloud Firestore: 1 GiB di spazio di archiviazione, 50.000 letture al giorno, 40.000 scritture al giorno
• Cloud SQL: PostgreSQL Developer Edition (scalabilità fino a zero)
• Firebase Auth: Accedi con Google incluso
• Account Google valido
• Non è necessaria una carta di credito o un account di fatturazione
• Blocco di una singola regione di deployment
Livello senza costi standard di Google Cloud (account standard)
• Cloud Run: 2 milioni di richieste al mese, 180.000 vCPU al secondo al mese, 360.000 GiB al secondo al mese, 1 GB di traffico di rete in uscita dal Nord America al mese
• Accesso a un credito di benvenuto di 300 $ per i primi 90 giorni
• Account di fatturazione Cloud collegato
• Accesso completo alle API della piattaforma in tutte le regioni
Inizia a creare su Google Cloud con 300 $ di crediti senza costi e oltre 20 prodotti sempre senza costi.