ruta backend / módulo 9

M8 — Casos Reales de Producción: Identificación, Respuestas y Trade-offs

Outcome: Aprender a identificar problemas críticos de producción y responder con propiedad técnica estructurando las soluciones en 3 niveles: Solución Simple (Junior) vs Mínima Viable (Mid) vs Óptima (Senior/Staff).


Caso 1: Pagos y Transacciones Duplicadas (Concurrencia & Webhooks)

El Escenario Real:

Un usuario presiona dos veces el botón “Pagar $100 USD” debido a una conexión móvil lenta, o la pasarela de pagos (Stripe, Wompi, MercadoPago) reintenta el webhook 3 veces tras un micro-corte de red.

1. Solución Simple (Nivel Junior / Anti-patrón)

2. Solución Mínima Viable (Nivel Mid)

3. Solución Óptima Senior (Estándar de Producción)


Caso 2: Exportaciones Masivas / Reportes que Agotan la Memoria RAM

El Escenario Real:

El cliente solicita un botón: “Descargar histórico de 500,000 ventas en Excel/CSV”. Cuando 3 administradores lo ejecutan simultáneamente, el contenedor de Docker supera el límite de RAM (OOM Kill) y la aplicación completa se reinicia.

1. Solución Simple (Nivel Junior / Anti-patrón)

2. Solución Mínima Viable (Nivel Mid)

3. Solución Óptima Senior (Estándar de Producción)


Caso 3: Endpoints Lentos por Crecimiento de Tablas en PostgreSQL

El Escenario Real:

La tabla orders creció de 10,000 a 4 millones de registros. El endpoint /orders?status=pending pasó de responder en 40ms a tardar 9 segundos, colapsando el pool de conexiones de la base de datos.

1. Solución Simple (Nivel Junior / Anti-patrón)

2. Solución Mínima Viable (Nivel Mid)

3. Solución Óptima Senior (Estándar de Producción)


Caso 4: Fallos en Cascada por Servicios Downstream Degradados

El Escenario Real:

El microservicio de pagos o la API externa de facturación empieza a responder con 25 segundos de latencia. En pocos minutos, tu backend principal agota sus hilos y sockets HTTP, dejando de responder a todos los demás clientes (Cascading Failure).

1. Solución Simple (Nivel Junior / Anti-patrón)

2. Solución Mínima Viable (Nivel Mid)

3. Solución Óptima Senior (Estándar de Producción)


Caso 5: Concurrencia en Inventarios / Saldos (“Lost Update”)

El Escenario Real:

Queda 1 sola unidad disponible de un producto en descuento. Dos usuarios hacen clic en “Comprar” en el mismo milisegundo. Ambos pedidos se procesan y el inventario queda con sobreventa (inventario negativo).

1. Solución Simple (Nivel Junior / Anti-patrón)

2. Solución Mínima Viable (Nivel Mid)

3. Solución Óptima Senior (Estándar de Producción)


Cómo Verbalizar estos Casos en Entrevistas y Revisiones Técnicas

  1. Empieza por el riesgo de negocio: “El riesgo en este escenario es la sobreventa/duplicidad de cobros/caída por memoria.”
  2. Descarta la solución ingenua: “Hacerlo síncrono o con un check simple no escala porque genera condiciones de carrera (TOCTOU) o derrames de memoria.”
  3. Presenta la solución en capas: “La arquitectura correcta combina un lock atómico/stream asíncrono en la capa rápida con una restricción a nivel de base de datos como garantía final.”