Temario

CURRICULUM — Temario completo

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ónContenidoEstado
00Entorno: instalación del stack, estructura del proyecto, primer endpoint, Git inicial, cómo trabajaremos (teoría→ejercicios→corrección→proyecto)publicada
00bElecció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ónContenidoEstado
01HTTP a fondo: métodos, códigos de estado, cabeceras, cookies, CORS, caché HTTP, keep-alive, HTTPS/TLSpublicada
02Redes básicas: DNS, TCP, latencia, balanceadores de carga, proxies inversos (Nginx)publicada
03Concurrencia y asincronía: hilos, procesos, event loop, condiciones de carrera, deadlockspublicada
04Estructuras de datos y algoritmos para razonar sobre complejidad y rendimientopublicada
05Linux y terminal: procesos, permisos, logs, env vars, SSH, scriptingpublicada
06Git profesional: ramas, rebase, conflictos, flujos de equipopublicada

MÓDULO 2 — Bases de datos (la habilidad más determinante)

LecciónContenidoEstado
07SQL avanzado: joins, subconsultas, CTEs, funciones de ventana, agregacionespublicada
08Modelado: normalización, relaciones, cuándo desnormalizarpublicada
09Índices y planes de ejecución: EXPLAIN, consultas lentas, problema N+1publicada
10Transacciones: ACID, niveles de aislamiento, bloqueos, concurrencia optimista/pesimistapublicada
11Migraciones versionadas y cambios de esquema sin caídapublicada
12NoSQL: Redis, MongoDB, motores de búsqueda; qué sacrificas con cada unopublicada

MÓDULO 3 — Diseño de APIs

LecciónContenidoEstado
13REST bien hecho: recursos, verbos, errores consistentes, paginación, filtros, ordenaciónpublicada
14Idempotencia, versionado y compatibilidad hacia atráspublicada
15Validación de entrada y contratos con OpenAPIpublicada
16gRPC, GraphQL, WebSockets/SSE: cuándo aplicanpublicada
17Webhooks y comunicación con APIs de terceros (reintentos, timeouts, firmas)publicada

MÓDULO 4 — Autenticación y seguridad

LecciónContenidoestado
18Sesiones vs tokens, JWT y sus riesgos, refresh tokenspublicada
19OAuth2 y OpenID Connectpublicada
20Hash de contraseñas (bcrypt/argon2), MFA, recuperación de cuentapublicada
21Autorización: roles, permisos, control de acceso por recursopublicada
22OWASP Top 10: inyección SQL, XSS, CSRF, SSRF, control de acceso rotopublicada
23Secretos, rate limiting y protección de datos (RGPD)publicada

MÓDULO 5 — Arquitectura y código mantenible

LecciónContenidoEstado
24SOLID, inyección de dependencias, separación por capaspublicada
25Patrones: repositorio, servicio, DTO, eventos de dominio, outboxpublicada
26Manejo de errores centralizado y consistentepublicada
27Configuración por entorno (12-factor)publicada
28Refactorizar sin romper nada, apoyado en pruebaspublicada

MÓDULO 6 — Procesamiento asíncrono y mensajería

LecciónContenidoEstado
29Colas y jobs en segundo plano (según stack: BullMQ/Celery/Sidekiq…)publicada
30Brokers: RabbitMQ, Kafka, SQS. Entrega at-least-once, orden, DLQpublicada
31Tareas programadas (cron) y procesamiento por lotespublicada
32Consistencia eventual y patrón sagapublicada

MÓDULO 7 — Pruebas

LecciónContenidoEstado
33Pruebas unitarias bien hechas (y cuándo usar mocks sin abusar)publicada
34Pruebas de integración con bases de datos reales en contenedorespublicada
35Pruebas de extremo a extremo y de contratopublicada
36Pruebas de carga (k6) para encontrar cuellos de botellapublicada

MÓDULO 8 — Rendimiento y caché

LecciónContenidoEstado
37Perfilado: medir antes de optimizarpublicada
38Estrategias de caché: qué cachear, invalidación, datos obsoletospublicada
39Pools de conexiones, paginación eficiente, compresiónpublicada

MÓDULO 9 — Despliegue y operaciones

LecciónContenidoEstado
40Docker: imágenes, Dockerfile multi-stage, compose para desarrollopublicada
41CI/CD: pipelines con pruebas, análisis y despliegue automáticopublicada
42Nube (AWS/GCP/Azure): cómputo, almacenamiento, redes, IAMpublicada
43Kubernetes básico o servicios gestionados (Cloud Run, ECS)publicada
44Infraestructura como código (Terraform)publicada

MÓDULO 10 — Observabilidad y depuración

LecciónContenidoEstado
45Logs estructurados con identificadores de correlaciónpublicada
46Métricas (Prometheus/Grafana), trazas (OpenTelemetry), alertas por SLOpublicada
47Depurar en producción: reproducir fallos, postmortemspublicada

MÓDULO 11 — Habilidades no técnicas

LecciónContenidoEstado
48Documentación y decisiones de diseño (ADRs)publicada
49Estimar, dividir problemas grandes, comunicar trade-offspublicada
50Revisión de código: dar y recibir feedbackpublicada
51Entender el negocio antes de escribir códigopublicada

MÓDULO 12 — Nivel empresarial (integración)

LecciónContenidoEstado
52Clean/Hexagonal + DDD aplicado al proyectopublicada
53Monolito modular vs microservicios: decisión razonadapublicada
54Resiliencia: timeouts, reintentos con backoff, circuit breakerspublicada
55Escalado: réplicas de lectura, particionado, servicios sin estadopublicada
56Cumplimiento: RGPD, logs de auditoría, SOC 2 / ISO 27001 (visión general)publicada
57Proyecto final: defensa del backend completo + postmortem simuladopublicada

Metodología de cada lección

Cada lección sigue siempre esta estructura:

  1. Objetivos — qué sabrás hacer al terminar.
  2. Teoría — conceptos con explicación clara y ejemplos con tu stack.
  3. Ejercicios — de dificultad creciente, con enunciado en exercises.md.
  4. Soluciones — en solutions.md, que solo debes abrir tras intentarlo.
  5. Autoevaluación — preguntas rápidas para comprobar que lo dominas.
  6. 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.