Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

Flask — Avanzado

10h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • Flask

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Este curso está dirigido a desarrolladores con experiencia consolidada en Flask que desean llevar sus aplicaciones al siguiente nivel de calidad, rendimiento y operabilidad en entornos de producción reales. A lo largo de diez horas, los participantes abordarán los patrones arquitectónicos que permiten escalar y mantener aplicaciones complejas —Application Factory, Blueprints y versionado de API—, aprenderán a diagnosticar y eliminar cuellos de botella mediante herramientas de profiling, implementarán sistemas de autenticación robustos con JWT y control de acceso por roles, descargará trabajo pesado a colas asíncronas con Celery, y evaluarán críticamente las opciones de despliegue disponibles, argumentando trade-offs según el contexto del proyecto. Al finalizar, el participante será capaz de diseñar, optimizar y desplegar una aplicación Flask de nivel profesional con criterios documentados de seguridad, rendimiento y resiliencia.

  1. Diseñar la estructura de una aplicación Flask de múltiples módulos aplicando el patrón Application Factory y Blueprints para garantizar separación de responsabilidades y testabilidad independiente de cada componente.
  2. Identificar cuellos de botella de rendimiento en una API Flask existente mediante herramientas de profiling, documentando métricas antes y después de cada intervención.
  3. Aplicar técnicas de optimización de acceso a base de datos —connection pooling, lazy loading y caché de consultas— para reducir la latencia media de los endpoints críticos.
  4. Implementar un sistema de autenticación y autorización basado en JWT con refresco de tokens, rotación de secretos y control de acceso por roles, anticipando vectores de ataque comunes.
  5. Extraer tareas pesadas a una cola asíncrona con Celery integrada en Flask, demostrando que el tiempo de respuesta del endpoint principal no escala linealmente con la carga.
  6. Comparar las opciones de despliegue de una aplicación Flask —Gunicorn+Nginx, uWSGI, contenedores Docker y serverless— argumentando trade-offs de coste, escalabilidad y mantenimiento para un conjunto de requisitos dados.
  7. Diseñar una estrategia de versionado de API REST en Flask evaluando su impacto en la retrocompatibilidad y documentando la decisión con ejemplos de migración para clientes existentes.

Bloque 1 — Arquitectura modular y escalable. Se estudia el patrón Application Factory como punto de entrada configurable de la aplicación y la organización del código en Blueprints independientes. El bloque cubre la separación de responsabilidades entre módulos, la gestión centralizada de extensiones y la estrategia de versionado de la API REST, analizando las opciones de URL path, headers y query params, su efecto en la retrocompatibilidad y cómo documentar la decisión con ejemplos de migración para clientes existentes.

Bloque 2 — Rendimiento y optimización de datos. Se introduce el ciclo de análisis de rendimiento con herramientas de profiling (Werkzeug Debugger, Py-Spy o equivalentes), estableciendo una metodología de medición que produce métricas comparables antes y después de cada intervención. A partir de ese diagnóstico, el bloque aborda las técnicas de optimización de la capa de datos: configuración de connection pooling en SQLAlchemy, patrones de lazy loading y eager loading según el caso de uso, y caché de consultas con Flask-Caching para reducir la presión sobre la base de datos en los endpoints críticos.

Bloque 3 — Seguridad avanzada: autenticación y autorización. Se diseña un sistema completo de autenticación basado en JWT que incluye emisión, validación y refresco de tokens, rotación periódica de secretos y un modelo de control de acceso por roles (RBAC). El bloque dedica especial atención a los vectores de ataque más habituales —token hijacking y replay attacks— y a las contramedidas concretas que los mitigan, integrando las decisiones de seguridad desde el diseño del esquema de datos hasta la capa de middleware.

Bloque 4 — Tareas asíncronas y resiliencia en producción. Se aborda la extracción de trabajo pesado a colas asíncronas mediante Celery con Redis o RabbitMQ como broker, mostrando cómo la arquitectura evita que la latencia del endpoint principal escale con la carga. Sobre ese escenario de alta concurrencia se construyen las estrategias de resiliencia: error handlers globales, el patrón circuit breaker y la degradación gradual del servicio, todo ello verificable mediante pruebas de carga controladas.

Bloque 5 — Despliegue y evaluación de opciones de infraestructura. Se comparan de forma estructurada las principales alternativas de despliegue —Gunicorn+Nginx, uWSGI, contenedores Docker y funciones serverless—, argumentando los trade-offs de coste, escalabilidad y mantenibilidad en función de requisitos concretos. El bloque cierra con la integración del pipeline de pruebas en un flujo CI/CD que bloquea merges cuando la cobertura cae por debajo del umbral establecido, consolidando la cadena completa desde el código hasta producción.

  • Python 3.10 o superior instalado localmente.
  • Entorno virtual aislado (venv o conda) con pip actualizado.
  • Flask 3.x, Flask-JWT-Extended, Flask-Caching y SQLAlchemy instalables vía pip.
  • Celery con broker Redis o RabbitMQ: acceso a una instancia local o en contenedor (Docker Desktop recomendado).
  • Docker Desktop (o Docker Engine en Linux) para los ejercicios de contenedores y comparativa de despliegue.
  • Herramienta de profiling: Py-Spy (requiere permisos de sistema) o Werkzeug Debugger integrado.
  • Cliente HTTP para pruebas de API: curl, HTTPie o Postman/Insomnia.
  • Cuenta en un servicio CI/CD con soporte para pipelines YAML (GitHub Actions, GitLab CI o equivalente).
  • Editor de código con soporte Python (VS Code con extensión Python recomendado).
  • Conexión a internet para descarga de dependencias e imágenes Docker.
  • Desarrollo de APIs REST con Flask y gestión de rutas, contextos y extensiones (equivalente a nivel Intermedio de Flask).
  • Uso habitual de SQLAlchemy o similar para acceso a base de datos relacional desde Flask.
  • Escritura de pruebas unitarias con pytest y comprensión básica de fixtures.
  • Manejo de entornos virtuales Python, gestión de dependencias con pip y uso de variables de entorno para configuración.
  • Familiaridad con los conceptos fundamentales de HTTP (cabeceras, códigos de estado, autenticación básica).
  • Experiencia básica con línea de comandos Linux/macOS y lectura de logs de servidor.