"Funciona" no es "está listo para producción"
Una app puede funcionar perfectamente en tu portátil y ser un desastre en producción: sin HTTPS, con la contraseña de la base de datos en el repositorio, sin forma de saber si se ha caído. Antes de abrir la puerta a usuarios reales, se repasa un checklist de condiciones no negociables.
El checklist
- Tests en CI. La suite pasa de forma automática en cada cambio. Si está en rojo, no se despliega.
- Secretos fuera del repo. Claves, tokens y contraseñas viven en variables de entorno (o un gestor de secretos), nunca en el código ni en Git. Un secreto comiteado se considera filtrado para siempre.
- HTTPS. Todo el tráfico va cifrado. Servir credenciales por HTTP plano las expone a cualquiera en la red.
- Logging. La app registra qué pasa (peticiones, errores) para poder diagnosticar incidencias después, sin tener que reproducirlas a ciegas.
- Health check. Un endpoint (
/health) que responde si la app está viva. El orquestador y la monitorización lo consultan para saber si reiniciar o alertar. - Backups. Copias de seguridad probadas de los datos. Un backup que nunca se ha restaurado no es un backup: es una esperanza.
- Monitorización y alertas. Métricas (latencia, errores, uso) y alertas que avisan a una persona cuando algo se sale de lo normal, idealmente antes de que el usuario lo sufra.
Por qué cada punto importa
Sin tests en CI → despliegas bugs sin enterarte
Secreto en el repo → cualquiera con acceso al código entra a tus datos
Sin HTTPS → las credenciales viajan en claro
Sin logging → un fallo en producción es un misterio sin pistas
Sin health check → nadie sabe que la app está caída hasta que un usuario se queja
Sin backups → un borrado accidental es definitivo
Sin alertas → te enteras del incidente por Twitter, no por tu panel
Listo cuando todo está verde
La regla es simple: la app está production-ready cuando todos los puntos
del checklist se cumplen. Si falta uno, está bloqueada hasta resolverlo. En el
capstone escribirás una función evaluarChecklist(estado) que aplica
exactamente esa regla: lista lo que falta y decide si se puede desplegar.
Este es el final del track: ya no construyes una pieza, sino el sistema completo y la disciplina que lo lleva a producción y lo mantiene vivo.