CURRICULUM — Curso de Backend de Nivel Empresarial
Temario completo del curso. Las lecciones se crean bajo lessons/NN-nombre/ conforme avanzamos. El estado real (qué lección toca, qué está completada) vive en memory/course-state.json.
Stack del alumno
Elección registrada el 2026-09-28: Python + Django + Django REST Framework (DRF) sobre Linux, con PostgreSQL, Celery, Redis, Docker y pytest.
Regla del profesor: toda teoría, ejercicio y ejemplo se imparte con el stack elegido. Los conceptos son universales; el código, específico.
Proyecto hilo conductor
TicketFlow — plataforma de venta de entradas (elegido el 2026-09-28) API para eventos con aforo limitado: catálogo, reservas de asientos con concurrencia real, cola de compra con Celery, webhooks de pasarela de pago, caché de disponibilidad, idempotencia en pagos, roles y despliegue con Docker. Es la pieza central del portfolio del alumno.
MÓDULO 0 — Puesta a punto
| Lección | Contenido | Estado |
|---|
| 00 | Entorno: instalación del stack, estructura del proyecto, primer endpoint, Git inicial, cómo trabajaremos (teoría→ejercicios→corrección→proyecto) | publicada |
| 00b | Elección del proyecto hilo conductor y modelado inicial (TicketFlow: invariantes, máquinas de estado, modelos v1) | publicada |
MÓDULO 1 — Fundamentos que sostienen todo
| Lección | Contenido | Estado |
|---|
| 01 | HTTP a fondo: métodos, códigos de estado, cabeceras, cookies, CORS, caché HTTP, keep-alive, HTTPS/TLS | publicada |
| 02 | Redes básicas: DNS, TCP, latencia, balanceadores de carga, proxies inversos (Nginx) | publicada |
| 03 | Concurrencia y asincronía: hilos, procesos, event loop, condiciones de carrera, deadlocks | publicada |
| 04 | Estructuras de datos y algoritmos para razonar sobre complejidad y rendimiento | publicada |
| 05 | Linux y terminal: procesos, permisos, logs, env vars, SSH, scripting | publicada |
| 06 | Git profesional: ramas, rebase, conflictos, flujos de equipo | publicada |
MÓDULO 2 — Bases de datos (la habilidad más determinante)
| Lección | Contenido | Estado |
|---|
| 07 | SQL avanzado: joins, subconsultas, CTEs, funciones de ventana, agregaciones | publicada |
| 08 | Modelado: normalización, relaciones, cuándo desnormalizar | publicada |
| 09 | Índices y planes de ejecución: EXPLAIN, consultas lentas, problema N+1 | publicada |
| 10 | Transacciones: ACID, niveles de aislamiento, bloqueos, concurrencia optimista/pesimista | publicada |
| 11 | Migraciones versionadas y cambios de esquema sin caída | publicada |
| 12 | NoSQL: Redis, MongoDB, motores de búsqueda; qué sacrificas con cada uno | publicada |
MÓDULO 3 — Diseño de APIs
| Lección | Contenido | Estado |
|---|
| 13 | REST bien hecho: recursos, verbos, errores consistentes, paginación, filtros, ordenación | publicada |
| 14 | Idempotencia, versionado y compatibilidad hacia atrás | publicada |
| 15 | Validación de entrada y contratos con OpenAPI | publicada |
| 16 | gRPC, GraphQL, WebSockets/SSE: cuándo aplican | publicada |
| 17 | Webhooks y comunicación con APIs de terceros (reintentos, timeouts, firmas) | publicada |
MÓDULO 4 — Autenticación y seguridad
| Lección | Contenido | estado |
|---|
| 18 | Sesiones vs tokens, JWT y sus riesgos, refresh tokens | publicada |
| 19 | OAuth2 y OpenID Connect | publicada |
| 20 | Hash de contraseñas (bcrypt/argon2), MFA, recuperación de cuenta | publicada |
| 21 | Autorización: roles, permisos, control de acceso por recurso | publicada |
| 22 | OWASP Top 10: inyección SQL, XSS, CSRF, SSRF, control de acceso roto | publicada |
| 23 | Secretos, rate limiting y protección de datos (RGPD) | publicada |
MÓDULO 5 — Arquitectura y código mantenible
| Lección | Contenido | Estado |
|---|
| 24 | SOLID, inyección de dependencias, separación por capas | publicada |
| 25 | Patrones: repositorio, servicio, DTO, eventos de dominio, outbox | publicada |
| 26 | Manejo de errores centralizado y consistente | publicada |
| 27 | Configuración por entorno (12-factor) | publicada |
| 28 | Refactorizar sin romper nada, apoyado en pruebas | publicada |
MÓDULO 6 — Procesamiento asíncrono y mensajería
| Lección | Contenido | Estado |
|---|
| 29 | Colas y jobs en segundo plano (según stack: BullMQ/Celery/Sidekiq…) | publicada |
| 30 | Brokers: RabbitMQ, Kafka, SQS. Entrega at-least-once, orden, DLQ | publicada |
| 31 | Tareas programadas (cron) y procesamiento por lotes | publicada |
| 32 | Consistencia eventual y patrón saga | publicada |
MÓDULO 7 — Pruebas
| Lección | Contenido | Estado |
|---|
| 33 | Pruebas unitarias bien hechas (y cuándo usar mocks sin abusar) | publicada |
| 34 | Pruebas de integración con bases de datos reales en contenedores | publicada |
| 35 | Pruebas de extremo a extremo y de contrato | publicada |
| 36 | Pruebas de carga (k6) para encontrar cuellos de botella | publicada |
MÓDULO 8 — Rendimiento y caché
| Lección | Contenido | Estado |
|---|
| 37 | Perfilado: medir antes de optimizar | publicada |
| 38 | Estrategias de caché: qué cachear, invalidación, datos obsoletos | publicada |
| 39 | Pools de conexiones, paginación eficiente, compresión | publicada |
MÓDULO 9 — Despliegue y operaciones
| Lección | Contenido | Estado |
|---|
| 40 | Docker: imágenes, Dockerfile multi-stage, compose para desarrollo | publicada |
| 41 | CI/CD: pipelines con pruebas, análisis y despliegue automático | publicada |
| 42 | Nube (AWS/GCP/Azure): cómputo, almacenamiento, redes, IAM | publicada |
| 43 | Kubernetes básico o servicios gestionados (Cloud Run, ECS) | publicada |
| 44 | Infraestructura como código (Terraform) | publicada |
MÓDULO 10 — Observabilidad y depuración
| Lección | Contenido | Estado |
|---|
| 45 | Logs estructurados con identificadores de correlación | publicada |
| 46 | Métricas (Prometheus/Grafana), trazas (OpenTelemetry), alertas por SLO | publicada |
| 47 | Depurar en producción: reproducir fallos, postmortems | publicada |
MÓDULO 11 — Habilidades no técnicas
| Lección | Contenido | Estado |
|---|
| 48 | Documentación y decisiones de diseño (ADRs) | publicada |
| 49 | Estimar, dividir problemas grandes, comunicar trade-offs | publicada |
| 50 | Revisión de código: dar y recibir feedback | publicada |
| 51 | Entender el negocio antes de escribir código | publicada |
MÓDULO 12 — Nivel empresarial (integración)
| Lección | Contenido | Estado |
|---|
| 52 | Clean/Hexagonal + DDD aplicado al proyecto | publicada |
| 53 | Monolito modular vs microservicios: decisión razonada | publicada |
| 54 | Resiliencia: timeouts, reintentos con backoff, circuit breakers | publicada |
| 55 | Escalado: réplicas de lectura, particionado, servicios sin estado | publicada |
| 56 | Cumplimiento: RGPD, logs de auditoría, SOC 2 / ISO 27001 (visión general) | publicada |
| 57 | Proyecto final: defensa del backend completo + postmortem simulado | publicada |
Metodología de cada lección
Cada lección sigue siempre esta estructura:
- Objetivos — qué sabrás hacer al terminar.
- Teoría — conceptos con explicación clara y ejemplos con tu stack.
- Ejercicios — de dificultad creciente, con enunciado en
exercises.md. - Soluciones — en
solutions.md, que solo debes abrir tras intentarlo. - Autoevaluación — preguntas rápidas para comprobar que lo dominas.
- Aplicación al proyecto — qué pieza construyes ahora en tu backend.
Sistema de dominio
- Practicado: lección impartida, ejercicios pendientes o por corregir.
- Dominado: ejercicios corregidos + autoevaluación superada + aplicado al proyecto.
- Publicada: lección escrita con ejercicios y soluciones, publicada en el sitio, pendiente de impartir.
- Refuerzo: detectada dificultad → se añade repaso a
memory/pending.md.
El estado por lección vive en memory/course-state.json; este archivo es el mapa, aquel es el marcador.