Prototipos y pruebas de concepto en System Design | Nicolás Garzón
Un prototipo o POC existe para responder una pregunta y reducir incertidumbre. Una demo que funciona una vez no demuestra seguridad, mantenibilidad, capacidad ni preparación para producción.
Los experimentos de diseño convierten supuestos y riesgos en evidencia. Deben tener hipótesis, alcance, datos, criterio de salida y decisión posterior.
Valida comprensión, flujo y usabilidad sin construir el sistema completo.
Permite probar consumidores antes de que exista el proveedor real.
Explora una tecnología o enfoque durante un timebox y produce aprendizaje documentado.
Modela comportamiento bajo condiciones difíciles de reproducir, como capacidad o colas.
Compara rendimiento de alternativas con carga y datos controlados.
Demuestra si una capacidad crítica parece viable dentro de condiciones explícitas.
Texto
Copiar Pregunta:
Hipótesis:
Riesgo o decisión relacionada:
Alcance y exclusiones:
Timebox:
Datos y entorno:
Qué se construirá:
Métrica:
Criterio de éxito y fracaso:
Limitaciones:
Resultado:
Decisión siguiente:¿Una actualización condicional en PostgreSQL evita sobreventa con 200 reservas concurrentes sobre el mismo producto?
Ninguna ejecución confirmada dejará reserved > on_hand y el p95 permanecerá debajo del umbral acordado.
Datos realistas.
Una hot key y varias claves normales.
Concurrencia creciente.
Retries controlados.
Medición de conflictos, errores y latencia.
Integridad preservada y comportamiento de conflicto comprensible. Si la latencia no cumple, probar batching, lock o rediseño del flujo.
No construyas una aplicación completa para probar una propiedad puntual.
Versiones, hardware, red, tamaño de datos y caché deben registrarse.
Un benchmark con 100 filas y datos uniformes no predice una tabla grande con skew.
Una sola ejecución puede beneficiarse de caché, ruido o casualidad.
Código, configuración, resultados y conclusiones deben poder revisarse.
Define ambos antes de ejecutar. De lo contrario, es fácil reinterpretar cualquier resultado como positivo.
Texto
Copiar Éxito: p95 < 300 ms y cero invariantes rotas.
Fracaso: inconsistencia, error > 1 % o necesidad de operación no disponible para el equipo.Un resultado negativo es valioso si elimina una alternativa costosa.
Optimiza aprendizaje. Puede omitir estructura, observabilidad y controles, pero esas omisiones deben ser explícitas.
Se construye con estándares cercanos a producción porque se espera continuar. Requiere mayor coste desde el inicio.
Nunca permitas que un prototipo desechable se convierta silenciosamente en sistema crítico.
Antes de promover un POC revisa:
Seguridad y privacidad.
Manejo de errores.
Idempotencia y concurrencia.
Observabilidad.
Despliegue y rollback.
Datos y migraciones.
Coste.
Testing.
Ownership y soporte.
“Funcionó en mi laptop” solo demuestra una condición muy limitada.
El prototipo puede demostrar que una persona entiende el flujo, pero no que la integración o capacidad funcionará. El POC técnico puede demostrar viabilidad, pero no que el producto sea útil. Pueden ser necesarios ambos.
Sandbox y diferencias con producción.
Límites y cuotas.
Timeouts y errores.
Idempotencia.
Coste.
Calidad de soporte.
Exportación o salida del proveedor.
Un happy path del SDK no valida la integración completa.
El experimento aprueba una alternativa que falla con distribución real.
Optimiza una operación y empeora otra más importante.
El criterio no estaba definido; se necesita rediseñar el experimento.
El spike se convierte en proyecto sin decisión. Detén al terminar el timebox y evalúa.
Pasos ocultos o datos precargados pueden dar una impresión falsa de automatización.
Construir sin pregunta.
No definir criterio de salida.
Evaluar solo happy path.
Usar datos pequeños.
Comparar alternativas en entornos distintos.
Confundir viabilidad con producción.
No documentar limitaciones.
Continuar por apego al prototipo.
La hipótesis puede falsarse.
Las métricas corresponden a la pregunta.
El entorno está documentado.
Los datos representan el riesgo.
Existen criterios previos.
Los resultados son reproducibles.
La conclusión distingue evidencia de inferencia.
Existe una decisión siguiente.
El experimento responde una pregunta, no construye por construir.
Un fracaso temprano puede ahorrar mucho coste.
La producción incluye cualidades que el POC suele omitir.
Datos y entorno determinan validez.
Todo experimento debe terminar en decisión o nueva pregunta justificada.
¿Por qué una demo exitosa no demuestra resiliencia?
¿Qué hace falsable una hipótesis?
¿Cuándo elegirías un prototipo desechable?
¿Qué riesgo tiene usar solo el sandbox de un proveedor?
Ver respuestas
No prueba fallos, carga, recuperación ni operación prolongada.
Define una observación concreta que permitiría rechazarla.
Cuando importa aprender rápido y no se espera conservar el código.
Puede diferir en límites, comportamiento, datos y errores de producción.
Trazabilidad del diseño conecta cada decisión y evidencia con la necesidad que la originó.