Google Cloud Functions
con
Zig Mandel
Google Developer Expert
linkedin.com/in/zigmandel
Que es un Cloud function?
Casos de uso típicos
Eventos Push - “Triggers”
Cloud Functions nativamente soporta recibir eventos de varios servicios de Google Cloud:
Auto Scaling - comparaciones
Google ofrece otros servicios para correr codigo “sin servidores”.
Cloud Functions ofrece 5 potencias de CPU (200MHz a 2.4 GHz) y RAM (128MB a 2048MB). App engine es más flexible respecto a posibles configuraciones, tipos de instancias, warmup, cache.
Cloud Function: máximo de 400 llamadas concurrentes por función.
App engine: 80 llamadas concurrentes por instancia, en hasta 20 instancias (en flexible environment) dando un total de 1600 llamadas concurrentes por proyecto (pero con instancias de muy baja potencia). node.js soportado pero solo en el “flexible environment”.
Container Engine: máximo de 2000 nodes por cluster.
Compute Engine: ?
Apps Script: Tiene límites bajos de uso, pero es muy facil de utilizar, en especial para llamar a APIs de Google.
Auto Scaling - más comparaciones
Cloud functions tiene límites por función, mientras que en Appengine es por instancia.
Es importante pues en App engine por defecto tienes 8 hilos compartiendo recursos como RAM de la instancia. Para poder llegar a los 1600 concurrent requests habría que subir “max_concurrent_requests” de 8 a 80, lo cual limita bastante el RAM de cada hilo.
Uso Firebase o Google Cloud console?
Esto es confuso pues Google tiene dos sitios completamente separados para usar Cloud Functions, cada uno con su documentación.
Ambos finalmente corren igual y el código se escribe igual (node.js), pero tienen diferentes herramientas para deploy.
Una vez deployada un cloud function por un método no es posible usar el otro método en el mismo proyecto.
Desde Firebase tienes más funcionalidad como acceso a la BD de Firebase, herramientas especiales de deploy, y custom domains (sino es cloudfunctions.net).
Desde Google Console tienes integración con Source Control pudiendo asi trabajar 100% cloud.
Documentación
Google Cloud Functions:
https://cloud.google.com/functions/docs/
Firebase Cloud Functions:
https://firebase.google.com/docs/functions/
Tiempos de respuesta
Functions en otras nubes
Custom Domains
Environment
https://firebase.google.com/docs/functions/config-env
Permite guardar variables de configuración de forma segura y ordenada en vez de tenerlas directamente en el código.
Logging
Los logs del código como console.log(“hola”) automáticamente van a Cloud Logging y se integran con StackDriver logs y alertas.
Muy práctico para configurar el envío de correo al admin cuando algún cloud function tenga un log con nivel de Warning o más, o como un log histórico de la aplicación para análisis futuro.
Reporte de errores
Permite capturar en Stackdriver errores de aplicación
Por ejemplo un excepcion: throw new Error(“goodbye world”);
Vista de métricas
Tiene estadisticas basicas de uso de recursos (no tanto como App Engine)
Emulador local
https://firebase.google.com/docs/functions/local-emulator
Permite emular tus funciones y/o hosting para pruebas rápidas.
Unit Testing
https://firebase.google.com/docs/functions/unit-testing
Alli encontraras tutoriales para cada tipo de prueba como:
Dependencias
https://firebase.google.com/docs/functions/handle-dependencies
Se usa la funcionalidad nativa de node.js con npm, en un archivo package.json
Ejemplos Github
Casos de Uso
Demo
Gracias!
Zig Mandel
Google Developer Expert
linkedin.com/in/zigmandel