Resumen
En este episodio Cristian explica cómo se comunican los programas entre sí y por qué esto importa a quien trabaja en ciencia de datos, por ejemplo para poner un modelo en producción. Repasa los protocolos de comunicación (REST, gRPC, WebSocket, SOAP, colas de mensajes, bases de datos, archivos) y se centra en las APIs REST. Compara FastAPI, Flask y Django REST. La idea de fondo nace de un chatbot hecho en equipo, donde la falta de conocimiento de estos conceptos (en particular CORS) causó horas de errores. Pasar de una prueba de concepto a una aplicación real exige considerar asincronía, modelos de datos, validación, autenticación, documentación, testing, configuración de ambientes, manejo de errores y seguridad. En la segunda parte se recorre un script de FastAPI con Pydantic, CORS, autenticación, middleware y documentación automática. La conclusión principal es entender qué se necesita comunicar antes de elegir la herramienta, no usar FastAPI solo porque "todos lo usan". Aprender lo básico toma unas 4 horas y llegar a tener confianza, unas 12.
Capítulos
- 00:00IntroBienvenida al episodio sobre FastAPI. Se presenta el tema: comunicación entre programas, qué protocolos existen, REST y FastAPI como implementación.
- 00:51Qué es una API y qué es FastAPISe repasa qué es una API, que se puede programar en cualquier lenguaje y usa HTTP para comunicarse. FastAPI se describe como sencillo, con buena comunidad y veloz frente a otras alternativas. Se muestra un script en Python con FastAPI y Pydantic donde las funciones quedan habilitadas para ser consumidas por otros servicios. Surge la duda de la diferencia de velocidad con Flask, que no se midió.
- 06:01Cómo se ve una consulta a una API por HTMLLa URL de la API se puede pegar en el navegador y se conecta a localhost, puerto 8000, mostrando lo que haya montado ahí.
- 07:13AgendaSe enumeran los temas: esquema de una aplicación, tipos de comunicación, API REST y sus componentes, y la comparación FastAPI, Flask y Django REST.
- 07:40Esquema de una aplicaciónMotivación: un chatbot desarrollado en equipo, dividido en módulos (front, base de datos, generación de respuesta). Se describe una arquitectura con cliente, autenticación y seguridad, y lógica de negocio (clientes, productos, pedidos). Se explica el monolito y su riesgo: cambiar una parte puede botar todo, mientras que los módulos separados aíslan las caídas. Se eligió FastAPI por ser sencillo para empezar.
- 13:40Tipos de comunicaciónSe listan REST, gRPC, WebSocket, SOAP, message queues, bases de datos y archivos. REST es el más común; gRPC (de Google) rinde mucho en microservicios internos; WebSocket sirve para chat en tiempo real; las colas (Kafka) para procesamiento asíncrono. En ciencia de datos se usan archivos por simplicidad y costo. Se cuenta cómo Cursor sirve para pruebas de concepto, pero escalar exige conocimiento. Con el ejemplo de un modelo de crédito en un e-commerce se muestra para qué le sirve esto a un data scientist; la alternativa es dejar resultados en una base de datos en modo batch.
- 28:01Intro a API RESTSe presentan los métodos HTTP: GET (obtener), POST (crear) y PUT (actualizar). Hay una pausa para agradecer suscripciones y regalos en el chat.
- 31:59Componentes de una API RESTSe detallan los puntos a considerar más allá del "Hello World": sync vs async (FastAPI usa async por defecto, con riesgo de saturar CPU y RAM), modelos de datos y validación, bases de datos (Redis, PostgreSQL), reglas de negocio, autenticación, documentación, testing, configuración de ambientes, manejo de errores y seguridad. Se recomienda FastAPI frente a construir una API propia porque abstrae mucho, como la autenticación. También se discute el concepto de framework y la regla de "menos código, mejor".
- 45:55MemesSesión de memes, entre ellos uno sobre distribuciones de Linux y la comparación entre cuentas de usuario de Linux.
- 50:03Mensajes de discord: Qué distribución de Linux ocupar?Se responde una consulta de Discord sobre qué distribución usar: depende del gusto, hay que probar varias. Se debate con humor si recomendar Arch Linux, útil para quien quiere los últimos paquetes pero con público objetivo pequeño. Se mencionan cifras de comunidades de Reddit (Arch 277.000, Ubuntu 236.000).
- 56:10FastAPI vs Flask vs Django RESTFastAPI es fácil de implementar, moderno y en crecimiento. Flask es simple para levantar algo, pero menos adecuado para producción. Django REST es un framework más completo, con ORM e interfaz de administración de usuarios. Se aclara la diferencia con Django para páginas web.
- 58:16FastAPI en detalle (código)Se abre el ejemplo del episodio 114, más completo que el inicial. Se levanta con Uvicorn y la API queda en el puerto 8000.
- 58:44pydantic y "tipado"Pydantic aporta tipado a Python mediante clases que heredan de BaseModel, definiendo estructura y validaciones personalizadas. Se discute si esto resuelve el problema de las anotaciones de tipo que no se validan.
- 01:02:29Problemas con puertos y por qué pasanEl ejemplo falla porque otro servicio ocupaba el puerto 8000. Se explica que un puerto ocupado impide que otra aplicación lo use, con ejemplos de clientes de bases de datos.
- 01:05:18Documentación automática de FastAPILa página de documentación se genera sola. Se muestran tags, endpoints POST y GET, parámetros, respuestas 200 y 422, y la opción "Try it out". Se explica el header personalizado con prefijo X, y que la documentación evita tener que explicar cada endpoint a los usuarios. Se menciona Swagger.
- 01:12:53Librerías que utilizaremosSe revisan las importaciones: HTTPException para errores, el middleware CORS, Pydantic y librerías para autenticación. Se menciona Postman para probar APIs.
- 01:14:18Partes del scriptSe define la app con título, descripción, versión y tags que alimentan la documentación. También se configura el acceso y el hasheo de contraseñas.
- 01:15:21Posibles problemas de seguridad de CORSLa configuración que permite todos los orígenes es solo para desarrollo y fue la causa del bug del chatbot. Se explica un escenario de ataque donde una página maliciosa usa las cookies del navegador para llamar a la API de un banco. En producción hay que configurarlo de forma más restrictiva.
- 01:18:21Algunas clases y funcionesSe recorren las clases con Field y validaciones (longitud, obligatoriedad, mayor que cero), el ejemplo en el esquema, validación de correo, validadores propios con decoradores y un middleware que mide el tiempo de ejecución en un header con X. También se ven rutas, try/except y manejo de errores, creación de usuario con hash de contraseña y login. Se estima 4 horas para entender lo básico y unas 12 para tener confianza. Para tareas pesadas se sugiere delegar a otro proceso y avisar al terminar, y se mencionan RabbitMQ y los ataques DDoS.
- 01:28:09CierreSe enfatiza que se aprende aplicando, creando algo propio. La comunicación entre programas es solo una parte de la arquitectura, donde se eligen colas, FastAPI, gateways o servicios lambda según el caso. Despedida y enlaces a Discord y YouTube.