Resumen
El episodio explica cómo desplegar un modelo analítico de riesgo de crédito (Random Forest entrenado con datos sintéticos y guardado en pickle) como una API web segura. Se cubre por qué conviene exponerlo como API en lugar de distribuir un ejecutable, y la diferencia entre los métodos GET y POST en Flask. Luego se empaqueta el proyecto con Docker y se publica la imagen en Docker Hub. Finalmente se crea un servidor en DigitalOcean, se asocia un dominio y se configura HTTPS con Nginx y Certbot (Let's Encrypt) usando Docker Compose. Conclusiones: desplegar vía API facilita actualizar y llegar a más usuarios. Docker garantiza que el código funcione igual en cualquier servidor. Un dominio con HTTPS es más profesional y evita avisos de página no segura. Además se advierte sobre no exponer puertos sin otras barreras de seguridad y no subir claves en texto plano.
Capítulos
- 00:00IntroSe presenta el tema: desplegar un modelo analítico en una web segura con HTTPS y dominio, y qué significan desplegar un modelo y una API. Se plantea el modelo de riesgo de crédito como ejemplo, con atributos de la persona (edad, ingreso, deudas anteriores, monto del préstamo).
- 00:53Por qué hacer esto?Se explica que una API es más fácil de actualizar que un ejecutable y llega a más usuarios; el mismo método se usó para un analizador de PDF con GPT. Se muestra la demo final con dominio y HTTPS (predicción 0 = el cliente sí paga) y se anticipan cinco pasos: crear modelo, framework, dockerizar, servidor y conexión segura.
- 06:33Crear modeloEl Data scientist entrega un objeto pickle y la documentación de los cinco atributos (enteros y flotantes). La idea es un servicio donde el usuario envía datos y recibe el score.
- 08:11FrameworkLa API se describe como "una función en esteroides" y se explica la X (atributos) y la y (predicción). Se comparan Flask, FastAPI, Plumber y Django; se elige Flask por estar "en el medio" entre facilidad y uso productivo. Se introducen GET y POST, y el chat comenta FastAPI, Swagger y Netflix/Dispatch.
- 11:23Demo del códigoSe revisa la generación del dataset sintético, el entrenamiento (train/test split, Random Forest, matriz de confusión, AUC y precisión) y el guardado en pickle, con consideraciones de tamaño (un modelo de 1 GB no corrió en un servidor de 500 MB de RAM), formato y vulnerabilidades de pickle. Se debate qué entregar al cliente (modelo, repositorio, docker, documentación). Se explica el código Flask con GET (parámetros en la URL) y POST (JSON enviado con curl), se discute su seguridad y se prueba en local.
- 36:21MemesSesión de memes: Gen AI como disfraz de ejecutivos con FOMO, una mezcla del problema de Monty Hall con el dilema del tranvía, el thumbnail del episodio de Kedro, una analogía de TCP/UDP con agua y el meme "cuándo te hiciste experto en Flask".
- 39:44DockerSe motiva con ejemplos (un videojuego que envía métricas, un servicio Streamlit en una web segura) y con usar un dominio en lugar de IP y puerto. Se explican Dockerfile, imagen y contenedor, el problema de "funciona en mi computador" y el escalado (30 instancias de RStudio para un curso).
- 43:50Demo dockerfileSe recorre el Dockerfile: imagen base python alpine (Docker Hub), carpeta app, ambiente virtual, requirements, apk add y puerto 5000. Se explica el kernel compartido con el host, host 0.0.0.0 frente a 127.0.0.1 y por qué evitar exponer puertos sin VPN o firewall. Se construye con docker build, se ejecuta con docker run mapeando el puerto 5002, se explican los alias y se sube la imagen a Docker Hub con tag. Se advierte no subir claves en texto plano.
- 01:01:06Levantar servidorSe crea un servidor (droplet) en DigitalOcean, desde 4 USD mensuales con 500 MB de RAM, y se instala Docker y Docker Compose. Se comenta que hay créditos gratis con el paquete de estudiante.
- 01:02:59Configuración SSL + URLSe asocia el dominio registrado en NIC Chile a la IP del servidor mediante DNS. Con Docker Compose se levantan tres contenedores (Nginx, la app Flask y Certbot) con volúmenes y red compartida, y se configura Nginx primero en el puerto 80 y luego en el 443 con certificados. Se hace una votación con puntos del canal sobre si todo funciona, se obtienen los certificados con Let's Encrypt y se prueba la consulta por HTTPS.
- 01:19:06CierreSe aclara que on-premise es una máquina propia de la empresa, y se sugiere desplegar solo el docker con la IP si falla la parte de Nginx. Se menciona que Docker Compose sirve para otros servicios (Streamlit, Shiny, FastAPI, RStudio, GitLab). Se resume lo visto, se invita a Discord y YouTube, y se señalan 17 episodios en el canal.