En muchas apps, se necesita controlar las sesiones para la autenticación y las preferencias del usuario. El framework Express de Node.js viene con una implementación basada en la memoria para realizar esta función. Sin embargo, esta implementación no es adecuada para una aplicación que se puede entregar desde varias instancias, ya que la sesión que se registra en una instancia puede diferir de otras. En este instructivo, se muestra cómo controlar sesiones en App Engine.
Objetivos
- Escribe la aplicación.
- Ejecuta la aplicación de manera local.
- Implementa la aplicación en App Engine.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Firestore API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Firestore API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Prepara el proyecto
En la ventana de tu terminal, comienza en un directorio de tu elección y crea un directorio nuevo llamado
sessions
. Todo el código para este instructivo está dentro del directoriosessions
.Cambia al directorio
sessions
con el siguiente comando:cd sessions
Inicializa el archivo
package.json
:npm init .
Instala las dependencias
npm install \ --save @google-cloud/connect-firestore @google-cloud/firestore express express-session
Al término de este instructivo, la estructura final del archivo es similar a la siguiente:
sessions
├── app.yaml
├── index.js
└── package.json
Escribe la aplicación web
Esta app muestra saludos en diferentes idiomas para cada usuario. A los usuarios recurrentes se los saluda siempre en el mismo idioma.
Antes de que se puedan guardar las preferencias de un usuario en tu app, debes tener un medio para almacenar información sobre el usuario actual en una sesión. Esta app de muestra usa Firestore para almacenar los datos de las sesiones.
Puedes usar connect-firestore
, un almacén de sesiones compatible con express-session
.
En la ventana de tu terminal, crea un archivo llamado
index.js
con el contenido siguiente:
En el siguiente diagrama, se muestra cómo Firestore controla las sesiones de la app de App Engine.
Después de configurar app.use(session)
, cada solicitud tendrá una propiedad req.session
que puedes usar para identificar usuarios recurrentes. Los datos de la sesión se almacenan en Firestore.
Borra sesiones
Connect-firestore
no borra las sesiones antiguas o vencidas. Puedes borrar los datos de las sesiones en Google Cloud Console o implementar una estrategia de eliminación automática. Cuando usas soluciones de almacenamiento para sesiones, como Memcache o Redis, las sesiones vencidas se borran de forma automática.
Ejecución local
En la ventana de la terminal, instala las dependencias para el proyecto de Google Cloud:
npm install
Inicia el servidor HTTP:
npm start
Visualiza la app en el navegador web:
Cloud Shell
En la barra de herramientas de Cloud Shell, haz clic en Vista previa en la Web y selecciona Vista previa en el puerto 8080.
Máquina local
En tu navegador, ve a
http://localhost:8080
.Ves uno de los cinco saludos: "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" o "Ciao Mondo". El idioma cambia si abres la página en otro navegador o en modo Incógnito. Puedes ver y editar los datos de la sesión en Google Cloud Console.
Para detener el servidor HTTP, presiona
Control+C
en la ventana de la terminal.
Implementa y ejecuta en App Engine
Puedes usar el entorno estándar de App Engine para compilar y también implementar una aplicación que se ejecute de manera confiable con cargas pesadas y grandes cantidades de datos.
En este instructivo, se usa el entorno estándar de App Engine para implementar el servidor.
En la ventana de la terminal, crea un archivo
app.yaml
y copia lo siguiente:Implementa la app en App Engine con el siguiente comando:
gcloud app deploy
Para ver la app en vivo, ingresa la siguiente URL:
https://PROJECT_ID.REGION_ID.r.appspot.com
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de Google CloudREGION_ID
: un código que App Engine asigna a la app
El saludo ahora se entrega en un servidor web que se ejecuta en una instancia de App Engine.
Depura la app
Si no puedes conectarte a la aplicación de App Engine, verifica lo siguiente:
- Comprueba que los comandos de implementación de
gcloud
se completaron correctamente y no generaron ningún error. Si hubo errores (por ejemplo,message=Build failed
), corrígelos y, luego, intenta implementar la aplicación de App Engine nuevamente. En la consola de Google Cloud, ve a la página Explorador de registros.
Ir a la página Explorador de registros
En la lista desplegable Recursos seleccionados recientemente, haz clic en Aplicación de App Engine y, luego, haz clic en Todos module_id. Verás una lista de las solicitudes de cuando visitaste tu aplicación. Si no ves una lista de solicitudes, confirma que seleccionaste Todos module_id en la lista desplegable. Si ves mensajes de error impresos en Google Cloud Console, comprueba que el código de tu aplicación coincida con el código de la sección sobre cómo escribir la aplicación web.
Asegúrate de que la API de Firestore esté habilitada.
Limpia
Borra el proyecto
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Borra la instancia de App Engine
- En la consola de Google Cloud, ve a la página Versiones de App Engine.
- Selecciona la casilla de verificación de la versión no predeterminada de la app que deseas borrar.
- Para borrar la versión de la app, haz clic en Borrar.
¿Qué sigue?
- Prueba más instructivos de Cloud Functions.
- Obtén más información sobre App Engine.
- Prueba Cloud Run, que te permite ejecutar contenedores sin estado en un entorno completamente administrado o en tu propio clúster de Google Kubernetes Engine.