App Engine Estándar vs Flexible: Ventajas y Usos Prácticos
Clase 12 de 48 • Entrenamiento de Google Cloud Platform
Resumen
¿Qué es Google App Engine?
Google App Engine es una plataforma de nube que permite desarrollar aplicaciones escalables y automatizar su administración. Es conocida por ofrecer dos entornos principales: estándar y flexible. Estos entornos permiten a los desarrolladores seleccionar cómo desean desplegar y manejar sus aplicaciones en la nube.
¿Cuáles son las diferencias entre App Engine estándar y flexible?
App Engine Estándar:
- Restricciones: Funciona en un sandbox, lo que significa que el control del sistema de archivos es limitado.
- Escalabilidad: Ofrece escalado automático a cero, ideal para aplicaciones que no necesitan estar ejecutándose constantemente.
- Despliegue: Se despliega en una sola zona. Si hay un error, se redistribuye a otra zona sin intervención manual.
- Economía y Velocidad: Puede ser más económico y ofrece un despliegue rápido en caso de fallos.
App Engine Flexible:
- Contenedores Docker: Tus aplicaciones corren en contenedores Docker en máquinas virtuales, proporcionando más flexibilidad.
- Libertad de Uso: Permite el uso de librerías externas y tiene menos restricciones comparado con el estándar.
- Despliegue Regional: Funciona a través de grupos de instancias regionales, distribuyéndose en múltiples regiones.
- Instancias Persistentes: Se necesita al menos una instancia registrada y no permite escalado a cero.
¿Cómo funciona el despliegue en App Engine Flexible con NodeJS?
App Engine Flexible ofrece la posibilidad de desplegar aplicaciones NodeJS utilizando contenedores. A continuación se describe un ejemplo de cómo se realiza:
-
Descarga de Proyectos:
- Clonar un repositorio de ejemplos proporcionado por Google, que contiene proyectos de prueba, usando
git clone
.
- Clonar un repositorio de ejemplos proporcionado por Google, que contiene proyectos de prueba, usando
-
Estructura del Proyecto:
- Implementar un proyecto con NodeJS usando Express para manejar las rutas y desplegar la aplicación en el puerto 8080.
const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hola, mundo'); }); const PORT = 8080; app.listen(PORT, () => { console.log(`Listening on port ${PORT}`); });
-
Configuración de App Engine:
- Modificar el archivo
app.yaml
para definir el entorno flexible y el runtime NodeJS deseado. También se pueden especificar detalles de escalamiento y el nombre del servicio.
runtime: nodejs env: flex service: nombre-del-servicio manual_scaling: instances: 1
- Modificar el archivo
-
Implementación y Despliegue:
- Ejecutar
npm install
para instalar todas las librerías necesarias. - Desplegar la aplicación con un simple comando. El sistema permite manejar versiones y tráfico de aplicaciones de manera eficiente.
- Ejecutar
¿Cómo se gestionan las versiones y el tráfico en App Engine Flexible?
Cuando se crea una nueva versión de una aplicación en App Engine Flexible, se maneja de manera que se asegure un flujo adecuado sin afectar a los usuarios:
-
Gestión de Versiones: La plataforma permite mantener múltiples versiones simultáneamente, y distribuir el tráfico entre las distintas versiones de manera aleatoria o basada en cookies, permitiendo un control progresivo.
-
Pruebas A/B y Despliegues Graduales: Se pueden realizar pruebas de tipo A/B implementando múltiples versiones y mandando un porcentaje específico del tráfico a una versión nueva para evaluar su rendimiento y aceptación.
Google App Engine Flexible es una herramienta poderosa que ofrece la flexibilidad que las organizaciones necesitan en entornos de desarrollo modernos y distribuidos.