Resumen
El episodio 178 de enCoders es la tercera parte de la serie sobre GCP. Cris explica cómo construye un videojuego web tipo idle/clicker, con un robot asistente (Aira), sobre Firebase y otros servicios de GCP, como forma de aprender haciendo. Se revisan Google Analytics 4, DebugView, el export a BigQuery, Firestore frente a Cloud Storage, IAM y cuentas de servicio, alertas de billing con Pub/Sub, Secret Manager y las capas de seguridad contra bots. La conclusión principal es que GA4 es gratis y fácil, pero con bloqueadores solo da una vista agregada (se pierde cerca del 30 % de los usuarios). Para análisis individual hay que guardar eventos en Firestore o BigQuery. Los costos se controlan con caché de audios TTS, límites por usuario y apagado automático vía Pub/Sub. El mayor dolor de GCP son los errores de permisos poco claros, que Claude ayudó a resolver. Entre medio hay conversación sobre memes, trabajo, Gloomhaven y si la orquestación de agentes es una disciplina o un skill.
Capítulos
- 00:00IntroBienvenida al episodio 178: GCP, Firebase y otras herramientas de GCP, como continuación de una serie. Comentan que la portada y la presentación se hicieron con IA.
- 01:19Aprender haciendo: el proyecto real como motor de aprendizajeCris sostiene que tener un desafío concreto es la forma más práctica de aprender. Se recomienda a quienes empiezan en ciencia de datos buscar un proyecto real que resuelva una necesidad de alguien, aunque no paguen.
- 02:18El desafío: crear un videojuego web con servicios de GCPSe anuncian los temas: observabilidad con GA4, performance, Firestore, Cloud Storage, seguridad y costos. El juego es una aplicación web elegida porque a Cris le gusta diseñar videojuegos.
- 03:11Demo del juego y mecánica tipo idle/clicker con robot asistenteUna fábrica de memorias RAM gestionada por un robot con voz (text-to-speech) al que se le escribe. Comprar una máquina nueva cuesta $5.000 y el juego es como un Cookie Clicker básico.
- 05:00Resumen de episodios pasados relacionadosFirebase es un backend como servicio: Hosting entrega HTML/JS/CSS sin configurar servidores. Functions son serverless, se cobran por RAM y CPU por segundo, y alimentan el robot, el TTS y las métricas. Se usa Vertex para el LLM y la autenticación (correo, Google o anónimo). Se comenta además la experiencia con Cookie Clicker.
- 10:25Google Analytics 4 en Firebase: métricas, dashboards y casos de usoGA4 sirve para entender el viaje del usuario: tiempo de uso, retención y regreso. Se muestran usuarios activos, eventos y ciudades. Distinguen reportes fijos de exploraciones interactivas. Se dice que AWS no tiene un equivalente unificado a Firebase.
- 18:29DebugView y tracking en tiempo real: ver eventos de una sesiónEl modo debug sigue en tiempo real la sesión propia del usuario. Se ven los eventos y los parámetros personalizados, como el largo del mensaje enviado al robot.
- 19:57Limitaciones de GA4 por bloqueadores y export a BigQueryFirefox y Safari bloquean GA4, por lo que se pierde alrededor del 30 % de los usuarios y solo sirve como vista general. El export a BigQuery se activa con un clic y carga cada 24 horas, lo que permite análisis con Python o notebooks.
- 25:45Firestore vs Cloud Storage: tipos de datos, estructura y trade-offs NoSQLFirestore es NoSQL con colecciones, documentos y subcolecciones (players, con ID de jugador). Cloud Storage es un sistema de objetos tipo S3. Como desventajas de NoSQL se citan la falta de joins y de esquema, con riesgo de campos inconsistentes. También se responde que existe un MCP para Firebase.
- 30:13MemesComentan memes de la comunidad, entre ellos el sentirse ignorante tras 10 años como data scientist y un Claude pidiendo perdón por borrar producción. Sobre Firebase se dice que sale caro al escalar y que es vendor lock-in al no ser open source.
- 34:12Off-topic: trabajo y vida diaria (onboarding y equipo)Un participante cuenta su cansancio y la rutina con su hija. Está en un equipo nuevo, mejorando la documentación de onboarding. La infraestructura le parece más madura y automatizada que la anterior, con herramientas para poner modelos en producción.
- 38:57Off-topic: GloomhavenConversan sobre una partida ganada de Gloomhaven con un mago de ataque y la mecánica de prioridad (ir temprano o tarde). Mencionan que se ve en el episodio del RAC.
- 44:13¿Orquestación de agentes: disciplina o skill? Debate y analogíasAnte una pregunta del chat, el consenso es que es un skill importante y no una disciplina completa como una carrera. Lo comparan con prompt engineering y la teoría de grafos.
- 45:38De notebook a producción: por qué no es tan directo (y el caos del versionado)Un notebook puede llevarse a producción, pero el data engineer o MLOps suele tener que refactorizarlo entero. El mayor problema es versionarlo, por los metadatos que ensucian los cambios del código.
- 48:46Cloud Storage + caché de audios: cómo bajar costos de TTS en un juegoSe guardan en Cloud Storage los audios generados. Cachear respuestas predefinidas del robot reduce el gasto de unos $2000 a cerca de un 10 %. Primero se lanza el producto y se optimiza el costo si engancha. GA4 es una vista general y Firestore da la vista individual.
- 53:41Gobernanza en la nube: IAM, roles, políticas y cuentas de servicioIAM (gestión de identidades y acceso) asigna roles con políticas a usuarios o a cuentas de servicio. Los errores de permisos en GCP son poco claros y a Cris le costó depurarlos.
- 58:32Alertas de billing con Pub/Sub: triggers para apagar servicios y no quebrarUna alerta de billing publica en un tópico de Pub/Sub y dispara una función que apaga el servicio de transcripción. El tope del proyecto es de $40. Un error por una política de organización sobre el envío de correos tomó horas de depuración, y Claude ayudó mucho.
- 01:03:09Secret Manager y despliegue: variables, seguridad y entorno local vs prodSecret Manager guarda variables secretas como admin email y admin token. Para desarrollo local conviene un `.env` y Firebase emula servicios localmente. Al desplegar a producción se leen las variables productivas.
- 01:05:53Capas de seguridad anti-bots: tokens, rate limits y proteger APIs/DBFirestore está cerrado por defecto y solo las Cloud Functions acceden. Las funciones exigen un token de usuario y hay límite de consultas por minuto, para que los bots no agoten el presupuesto. Cris explica que el aprendizaje es el objetivo y que esta arquitectura no sirve para el otro juego de 600 MB.
- 01:10:16Clicker games y dopamina: por qué Cookie Clicker engancha (y cómo se optimiza)Se atribuye la adicción a que los números suben, a las galletas doradas y a la optimización de la inversión por ratio. Los juegos usan analítica para ajustar la mecánica.
- 01:13:47Resumen del stack GCP y costos realesSe resumen los servicios de control de costos: alertas a 40 y Pub/Sub con función de apagado. La capa de protección cuesta casi cero. El gasto real fue casi nada, y el TTS domina el costo.
- 01:18:31Cómo usó Claude Code para aprender GCP: markdowns, planes y pasos manualesCris pide un markdown de guía, luego un plan de implementación y deja que Claude lo implemente. Los pasos de consola los hace a mano para aprender, al principio con miedo por los costos poco claros. También se menciona un panel de costos centralizado.
- 01:23:34CierrePlanes futuros: mejorar la mecánica y acumular datos para análisis, y pasar el link por Discord. Cris prefiere GCP sobre AWS por la interfaz y por Firebase. Se menciona BigQuery ML, el protocolo agent-to-agent y se anuncia que el próximo tema se avisará por Discord.