App Engine Estándar vs Flexible: Ventajas y Usos Prácticos

Clase 12 de 48Entrenamiento 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:

  1. Descarga de Proyectos:

    • Clonar un repositorio de ejemplos proporcionado por Google, que contiene proyectos de prueba, usando git clone.
  2. 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}`);
    });
    
  3. 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
    
  4. 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.

¿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.