Cómo crear y desplegar una aplicación de Node.js

Crear una aplicación de Node.js es solo la primera parte del ciclo de vida de desarrollo de software; hacer que sea accesible, eficiente y resiliente en un entorno activo es donde la entrega de aplicaciones cobra importancia. Para desplegar aplicaciones web modernas, debes seleccionar una arquitectura que se ajuste a tu perfil de tráfico, a la fase del ciclo de vida y al presupuesto de recursos.

Tanto si vas a lanzar un prototipo full stack asistido por IA como si vas a desplegar un servicio de backend de nivel de producción, los entornos modernos en la nube ofrecen vías automatizadas y en contenedores. En esta guía se explican los conceptos básicos de la arquitectura web de Node.js, se analizan las consideraciones clave para el despliegue y se describe paso a paso cómo crear y desplegar una aplicación de Node.js en una infraestructura gestionada mediante las asignaciones del nivel sin coste económico.

¿Qué es el entorno de ejecución de Node.js?

Node.js es un entorno de ejecución de JavaScript de código abierto y multiplataforma que se basa en el motor de JavaScript Chrome V8. Permite que JavaScript se ejecute en el lado del servidor fuera del navegador web, lo que permite a los ingenieros escribir bases de código full-stack unificadas con un único lenguaje de programación.

A diferencia de los servidores web multihilo tradicionales, que generan un hilo de sistema operativo aislado para cada conexión simultánea, Node.js funciona con un modelo de E/S sin bloqueo, de un solo hilo y basado en eventos. Esta arquitectura hace que Node.js sea ligero y eficiente para gestionar miles de conexiones simultáneas, como APIs RESTful, mensajería en tiempo real, servicios de streaming y orquestadores de agentes de IA.

Despliegue tradicional de Node.js frente a plataformas de contenedores sin servidor

A la hora de preparar el despliegue de un backend de Node.js, elegir el entorno de computación adecuado influye directamente en la sobrecarga de mantenimiento, la velocidad de escalado y la rentabilidad.

Característica

Máquinas virtuales (IaaS/VPS)

Alojamiento de PaaS o paquete de compilación

Contenedores modernos sin servidor

Gestión de infraestructuras

Aplicación manual de parches del SO, gestión de cortafuegos y actualizaciones del entorno de ejecución

Capa de plataforma totalmente gestionada con bloqueos de tiempo de ejecución del proveedor

Infraestructura totalmente gestionada sin mantenimiento del sistema operativo

Mecanismo de escalado

Autoescalado de máquinas virtuales basado en métricas (las instancias se activan en cuestión de minutos)

Autoescalado por número de instancias o límites de trabajadores

Autoescalado instantáneo basado en solicitudes, incluido el escalado a cero

Formato de empaquetado

Archivos de origen sin procesar, servicios systemd o gestores de procesos PM2

Integración de repositorios de Git push con buildpacks automatizados.

Imágenes de contenedor estándar de OCI y Docker

Perfil de costes de inactividad

Se factura las 24 horas, independientemente del tráfico entrante HTTP

Suele requerir un precio mínimo de instancia base.

Facturación estricta por segundo durante el procesamiento de solicitudes activas

Portabilidad

Alta portabilidad, pero alto riesgo de desviación del entorno

Poca portabilidad; se limita a las convenciones de la plataforma

Alta portabilidad; ejecuta contenedores idénticos en cualquier entorno

Característica

Máquinas virtuales (IaaS/VPS)

Alojamiento de PaaS o paquete de compilación

Contenedores modernos sin servidor

Gestión de infraestructuras

Aplicación manual de parches del SO, gestión de cortafuegos y actualizaciones del entorno de ejecución

Capa de plataforma totalmente gestionada con bloqueos de tiempo de ejecución del proveedor

Infraestructura totalmente gestionada sin mantenimiento del sistema operativo

Mecanismo de escalado

Autoescalado de máquinas virtuales basado en métricas (las instancias se activan en cuestión de minutos)

Autoescalado por número de instancias o límites de trabajadores

Autoescalado instantáneo basado en solicitudes, incluido el escalado a cero

Formato de empaquetado

Archivos de origen sin procesar, servicios systemd o gestores de procesos PM2

Integración de repositorios de Git push con buildpacks automatizados.

Imágenes de contenedor estándar de OCI y Docker

Perfil de costes de inactividad

Se factura las 24 horas, independientemente del tráfico entrante HTTP

Suele requerir un precio mínimo de instancia base.

Facturación estricta por segundo durante el procesamiento de solicitudes activas

Portabilidad

Alta portabilidad, pero alto riesgo de desviación del entorno

Poca portabilidad; se limita a las convenciones de la plataforma

Alta portabilidad; ejecuta contenedores idénticos en cualquier entorno

Consideraciones clave al crear una aplicación de Node.js

Para desarrollar una aplicación de Node.js lista para producción, es necesario abordar patrones de arquitectura que eviten cuellos de botella y garanticen el tiempo de funcionamiento:

  • Estado de las aplicaciones sin reconocimiento del estado: las plataformas modernas sin servidor activan y desactivan instancias de contenedores de forma dinámica en respuesta al tráfico entrante. Evita guardar el estado de la sesión de usuario, los archivos multimedia subidos o las colas en segundo plano en la memoria del contenedor local o en las rutas del disco local, ya que los archivos escritos en discos de contenedores temporales desaparecen al volver a desplegar o reducir verticalmente. Usa servicios gestionados específicos, como Cloud Firestore, Cloud SQL para PostgreSQL o Cloud Storage, para el estado persistente.
  • Aislamiento de variables de entorno y secretos: codificar claves de API, credenciales de bases de datos o claves secretas en el control de fuentes crea vulnerabilidades de seguridad críticas. Aísla siempre las configuraciones de tiempo de ejecución en variables de entorno (process.env) e inyéctalas de forma segura en el nivel de tiempo de ejecución del contenedor.
  • Vinculación de puertos y sondeos de estado: los entornos de contenedores sin servidor enrutan el tráfico HTTP inyectando un puerto de destino predeterminado, como la variable de entorno PORT (normalmente, el puerto 8080). Tu servidor de Node.js debe escuchar de forma dinámica en process.env.PORT || 8080 para superar las comprobaciones de estado y de preparación.
  • Cierre ordenado y captura de señales: las aplicaciones de Node.js deben interceptar las señales SIGTERM y SIGINT del sistema operativo. Cuando una herramienta de adaptación dinámica de infraestructura inicia una reducción vertical, gestionar estas señales asegura que las solicitudes HTTP existentes terminen de procesarse antes de que se cierren las conexiones de la base de datos y se termine el contenedor.

Cómo crear y desplegar una aplicación de Node.js

Puedes crear y desplegar una aplicación de Node.js mediante dos flujos de trabajo principales: creación rápida de prototipos asistida por IA (no se necesita configurar la CLI local) o despliegue estándar basado en contenedores (para bases de código personalizadas).

Itinerario A: Prototipado rápido, como el modo Creación de AI Studio y el nivel Starter (aprovisionamiento sin coste económico)

Para crear prototipos y aplicaciones de IA rápidamente, el modo de compilación de Google AI Studio permite a los desarrolladores describir arquitecturas full stack de Node.js en lenguaje natural y desplegarlas en Cloud Run sin herramientas de línea de comandos locales ni configuraciones de facturación obligatorias.

Paso 1: Inicializar la aplicación en el modo Desarrollo

  1. Ve a Google AI Studio y cambia al modo Desarrollo.
  2. Introduce la petición de tu aplicación describiendo la lógica empresarial y la interfaz de frontend que necesitas (por ejemplo, "Crea un panel de control de seguimiento de inventario con un backend de Node.js y gestión de tareas persistente").
  3. El agente integrado generará los archivos de la aplicación, configurará las rutas de tu servidor, instalará las dependencias de npm pertinentes y lanzará una vista previa interactiva.

Paso 2: Configurar los datos y la autenticación integrados

  • Para el almacenamiento persistente: cuando tu petición requiera almacenamiento de datos, habilita Cloud Firestore o Cloud SQL para PostgreSQL (Developer Edition). AI Studio redacta automáticamente tu esquema, tus modelos y tus archivos de conexión de clientes.
  • Para la identidad de usuario: activa Firebase Authentication para habilitar los flujos de inicio de sesión de Google preconfigurados sin tener que configurar manualmente controladores de redirección de OAuth independientes.

Paso 3: Publicar en Cloud Run gestionado

  1. Haz clic en Publish > Get Started > Publish App (Publicar > Empezar > Publicar aplicación) en la interfaz superior.
  2. Selecciona la región de despliegue que prefieras.
  3. Proporciona una URL personalizada <user-defined>.ai.studio para tu aplicación y publícala.
  4. La plataforma empaqueta tu contenedor, aprovisiona la computación subyacente y genera una URL de producción HTTPS <user-defined>.ai.studio activa en cuestión de segundos.

Itinerario B: Desplegar una aplicación de Node.js personalizada, como Docker y Cloud Run

En el caso de los códigos base preexistentes y los microservicios personalizados, empaqueta tu aplicación de Node.js en un contenedor que cumpla con la OCI y despliégala directamente en Cloud Run.

Paso 1: Estructura el código del servidor de Node.js

Crea un servidor HTTP mínimo con Express, Fastify o bibliotecas estándar de Node.js (index.js):

  • JavaScript
Cargando...

 Nota: Cloud Run inserta la variable de entorno PORT automáticamente en el tiempo de ejecución. El respaldo || 8080 del código anterior se incluye principalmente para facilitar las pruebas locales en tu máquina antes del despliegue.

Paso 2: Crea un Dockerfile seguro de varias etapas

Empaqueta tu aplicación con una compilación de varias etapas para asegurar una imagen de producción mínima y segura.

Práctica recomendada: Crea un archivo .dockerignore en tu directorio raíz y añádele node_modules y .env. De esta forma, te aseguras de que los archivos de desarrollo locales no se incluyan accidentalmente en tu imagen de contenedor, lo que la mantiene limpia y segura.

Crea un archivo llamado Dockerfile en tu directorio raíz:

  • Dockerfile
Cargando...

Paso 3: Desplegar en Cloud Run

Ejecuta el despliegue con la Google Cloud CLI desde tu carpeta raíz local. También puedes crear una URL personalizada con el formato <user-defined>.cloud.run para tu aplicación:

  • Bash
Cargando...

Para asignar un dominio personalizado más adelante, usa:

  • Bash
Cargando...

Mecanismos de precios del nivel sin coste económico y Starter Tier

Si sabes cómo funcionan las asignaciones sin coste económico, podrás crear prototipos y escalar tu aplicación de Node.js de forma predecible:

Tipo de nivel

Asignaciones de computación y recursos

Requisitos y límites

Starter Tier de Google Cloud (Prototipado)

• Cloud Run: hasta dos aplicaciones web activas

• Cloud Firestore: 1 GiB de almacenamiento, 50.000 lecturas al día y 40.000 escrituras al día

• Cloud SQL: PostgreSQL edición Developer (escalado a cero)

• Firebase Authentication: inicio de sesión de Google incluido

• Cuenta de Google válida

• No se necesita tarjeta de crédito ni cuenta de facturación

• Bloqueo de una sola región de despliegue

Nivel sin coste estándar de Google Cloud (cuenta estándar)

• Cloud Run: dos millones de solicitudes al mes, 180.000 vCPU por segundo al mes, 360.000 GiB por segundo al mes y 1 GB de salida de red de Norteamérica al mes

• Acceso a 300 USD de crédito de bienvenida durante los primeros 90 días



• Cuenta de facturación de Cloud vinculada

• Acceso completo a la API de la plataforma en todas las regiones

Tipo de nivel

Asignaciones de computación y recursos

Requisitos y límites

Starter Tier de Google Cloud (Prototipado)

• Cloud Run: hasta dos aplicaciones web activas

• Cloud Firestore: 1 GiB de almacenamiento, 50.000 lecturas al día y 40.000 escrituras al día

• Cloud SQL: PostgreSQL edición Developer (escalado a cero)

• Firebase Authentication: inicio de sesión de Google incluido

• Cuenta de Google válida

• No se necesita tarjeta de crédito ni cuenta de facturación

• Bloqueo de una sola región de despliegue

Nivel sin coste estándar de Google Cloud (cuenta estándar)

• Cloud Run: dos millones de solicitudes al mes, 180.000 vCPU por segundo al mes, 360.000 GiB por segundo al mes y 1 GB de salida de red de Norteamérica al mes

• Acceso a 300 USD de crédito de bienvenida durante los primeros 90 días



• Cuenta de facturación de Cloud vinculada

• Acceso completo a la API de la plataforma en todas las regiones

Soluciona los retos empresariales que se te presenten con Google Cloud

Los nuevos clientes reciben 300 USD en crédito sin coste para invertirlos en Google Cloud.
Habla con un especialista del equipo de ventas de Google Cloud sobre tus necesidades específicas con más detalle.

Prácticas recomendadas para ejecutar Node.js en entornos sin servidor

  1. Optimiza los arranques en frío con dependencias ligeras: elimina los paquetes de desarrollo que no se usen (npm prune --production) y agrupa el código del servidor con tree-shakers de módulos modernos (como esbuild o tsup) para reducir el tamaño de las imágenes y acelerar la inicialización de los contenedores.
  2. Configura el número máximo de instancias: cuando pases de un entorno aislado a un proyecto de producción activo, especifica un umbral de simultaneidad y define --max-instances (por ejemplo, --max-instances 5) para asegurarte de que los picos de tráfico inesperados no superen los presupuestos operativos objetivo.
  3. Conservar los registros de forma estructurada: envía los registros a stdout y stderr con el formato JSON estructurado. Los sistemas de registro gestionados analizan automáticamente los objetos JSON, lo que te permite filtrar por códigos de estado HTTP, niveles de gravedad y latencia de ejecución.
  4. Usa comprobaciones de estado nativas: implementa sondas de endpoints HTTP claras (por ejemplo, /healthz) que verifiquen la conectividad de la base de datos downstream antes de indicar que están listas para los proxies de enrutamiento entrantes.

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito sin coste económico y más de 20 productos Always Free.

Google Cloud