App Engine Estándar vs Flexible: Ventajas y Usos Prácticos
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.
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');});constPORT=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.
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.
App Engine Flexible es más abierto pero es más costoso y más lento en el deploy y las migraciones de tráfico. Siempre hay que tener una instancia activa por eso mismo para que el servicio esté disponible siempre.
Una ventaja chevere es que gracias a la VPC te puedes conectar a tu BD en un VM de Compute Engine. (En caso de que no la tengas en Cloud SQL)
cd nodejs-docs-samples/appengine/hello-world/flexible/
npm install
npm start
gcloud app deploy
Saludos!
RESUMEN:
App Engine Flex (Chocolate) soporta mas que el Estandar (Vainilla) por lo que es complementario (que necesiten mayor capacidad)
->Escala a cero y más rápidamente
->Despliegue en una zona (si tenemos error se despliega en otra y es más económico, no es malo porque es mas rápido)
Instalar librerías externas y runtimes/lenguajes
Código portable en contenedores Docker dentro de una VM (flexibilidad)
Estandariza proceso de CI
Acceso a VPC para especificar la red para hacer el deploy a diferencia de la comunicación de una sola vía por un conector
Escala mínima 1 e instancias más grandes
Despliegue por grupos de instancias regionales distribuidas
"Hace borrosa la lína del PaaS"
Desventaja: La promoción a nuevas versiones puedo tardar tiempo
Tambien el split es conocido como canary deployment.
Se usa muchooo en la industria para dar un pase progressivo a una nueva version
Hola, no me deja conectar a Quiklabs???
Me dice acceso denegado al recurso, y ya hice la inscripción y me sale que tengo 5 créditos, pero no me deja hacer los laboratorios.
Hola! Ya tengo una cuenta activa en QwikLabs con 34 créditos, pero al entrar al laboratorio me dice "Lo sentimos, el acceso a este recurso está denegado". ¿Debo realizar algo más (lo mismo me pasó con los anteriores labs)?
Buena practica un poco tardado al reiniciar las versiones pero muy interesante, me gusta como es que se bifurca el trafico me recuerda a un clouter
Cool!
Recomendación: Al hacer la bifurcación de tráfico (split traffic) es recomendable hacerlo por cookie para no romper la experiencia de usuario (UX).
La bifurcación de tráfico (split traffic) se puede usar para realizar pruebas A/B o se requiere hacer rollout progresivo de nuevas versiones.
Pueden decir como se llama el laboratorio de Qwiklabs? Porque así lo puedo buscar ya que el enlace me da error. Gracias.
Hola comunidad, quiero preguntarles alguien pudo realizar el laboratorio de esta clase al ingresar me da este error "Lo sentimos, el acceso a este recurso está denegado "
Por favor su ayuda con el nombre del laboratorio, hice todos los pasos para el registro en Qwiklabs pero al ingresar por medio del link sale acceso denegado.
Excelente, no me ha funcionado las Url que dejan, me ha tocado buscar los ejemplos relacionados con lo que se explica en clase
App Engine Estandar:
Permite usar versiones de código especificas.
Permite la escala 0 (Ninguna instancia desplegada).
Escala más rápido el numero de instancias.
Se despliega en una sola zona (puede ser más económico).
App Engine Flex:
Las aplicaciones corren en un contenedor de Docker en una VM (más flexibilidad).
Tienes que tener al menos una instancia desplegada.
Utiliza grupos de instancias regionales.
El número de instancias y las indicaciones de escalamiento se especifican en el archivo app.yaml (NodeJS)
gpg: Can't check signature: public key not found, alguién más con este error?
Hola Victor.! Logre solucionarlo... Si deseas intentarlo puedes seguir los siguientes pasos:
Actualiza el npm en Cloud Shell por medio de este comando ```
npm install -g npm@latest
2.Verifica la versión instalada con este comando
node -v
En mi caso tengo la versión v12.14.1.Ya conociendo la versión editas el archivo package.json y cambias en esta parte del código la versión
"engines": {
"node": ">= 12.14.1"
},
y finalmente envías el comando de ```
gcloud app deploy