1. Checklist de Producción
Validación exhaustiva antes de desplegar código a producción para minimizar riesgos y maximizar confiabilidad.
1.1 🎯 Pre-Deploy Checklist
Qué: Lista de verificación obligatoria antes de cualquier deploy a producción.
Por qué: Un deploy fallido puede costar $100k+/hora en downtime y reputación.
Quién: Developer + reviewer + DevOps (según org).
Cuándo: Antes de CADA deploy a producción, sin excepciones.
Esfuerzo: 30 min de verificación previene horas/días de incident response.
1.2 ✅ Código y Testing
1.2.1 Calidad de Código
-
[ ] Tests unitarios pasan al 100%
- Ejecutar:
npm test/pytest/mvn test - Sin tests skippeados temporalmente
- Ejecutar:
-
[ ] Tests de integración pasan
- Ejecutar suite completa
- Validar integraciones con servicios externos
-
[ ] Code coverage ≥ 80% en lógica crítica
- Revisar reporte de coverage
- Nuevas features tienen tests
-
[ ] Linter pasa sin errores
npm run lint/pylint/checkstyle- Sin warnings críticos
-
[ ] Code review aprobado
- Mínimo 1 aprobación (2 para cambios críticos)
- Comentarios resueltos
- No hay "LGTM" superficial
-
[ ] Sin código comentado
- Eliminar código muerto
- Usar control de versiones, no comentarios
-
[ ] Sin console.log / print debug
- Reemplazar con logging apropiado
- Usar niveles correctos (DEBUG, INFO, WARN, ERROR)
1.3 🔒 Seguridad
-
[ ] Sin secrets hardcodeados
- Buscar:
git grep -i "password\|api_key\|secret" - Usar variables de entorno / secrets manager
- Buscar:
-
[ ] Dependencies sin vulnerabilidades críticas
- Ejecutar:
npm audit/snyk test - Actualizar/patchear CVEs conocidos
- Ejecutar:
-
[ ] Input validation implementada
- Validar todos los inputs de usuario
- Sanitizar antes de queries DB
-
[ ] Output encoding (prevenir XSS)
- Escapar HTML en templates
- Content-Security-Policy headers
-
[ ] Authentication & Authorization correctas
- Endpoints protegidos apropiadamente
- Roles y permisos validados
-
[ ] HTTPS obligatorio
- Redirect HTTP → HTTPS
- HSTS header configurado
-
[ ] CORS configurado correctamente
- No usar
Access-Control-Allow-Origin: *en prod - Whitelist de origins permitidos
- No usar
1.4 🗄️ Base de Datos
-
[ ] Migrations testeadas en staging
- Ejecutar en ambiente staging primero
- Validar que no rompen datos existentes
-
[ ] Rollback plan para migrations
- Script de rollback probado
- Backups recientes disponibles
-
[ ] Índices apropiados
- Queries optimizadas (EXPLAIN ANALYZE)
- Sin N+1 queries
-
[ ] Backup reciente verificado
- Último backup < 24 horas
- Restore testeado periódicamente
-
[ ] Connection pooling configurado
- No crear conexiones ilimitadas
- Timeouts apropiados
1.5 📊 Performance
-
[ ] Load testing ejecutado
- Soporta carga esperada + 20%
- p95 latency < 500ms
-
[ ] Sin memory leaks
- Profiling ejecutado
- Memoria se libera correctamente
-
[ ] Assets optimizados
- Imágenes comprimidas (WebP, AVIF)
- JS/CSS minificados
- Gzip/Brotli habilitado
-
[ ] Caching implementado
- Cache headers HTTP
- CDN configurado para assets
- Redis/Memcached para queries frecuentes
-
[ ] Database queries optimizadas
- Sin full table scans innecesarios
- Límites en queries (LIMIT)
1.6 🔍 Observabilidad
-
[ ] Logging estructurado
- Logs con
trace_id,user_id, nivel - JSON format para parsing
- Logs con
-
[ ] Métricas expuestas
/metricsendpoint (Prometheus format)- Request rate, error rate, latency
-
[ ] Tracing implementado
- OpenTelemetry / Jaeger spans
- Context propagation entre servicios
-
[ ] Health checks funcionales
/live: Proceso vivo/ready: Dependencias OK (DB, Redis)/health: Validaciones adicionales
-
[ ] Alertas configuradas
- Error rate > 5%
- p95 latency > 500ms
- Health checks failing
-
[ ] Dashboards actualizados
- Grafana con métricas clave
- SLIs/SLOs definidos
1.7 🌐 Infraestructura
-
[ ] Auto-scaling configurado
- Scale up en alta carga
- Scale down en baja carga
-
[ ] Rate limiting implementado
- Protección contra abuse/DDoS
- Límites por IP/usuario
-
[ ] Circuit breakers
- Para llamadas a servicios externos
- Fallbacks definidos
-
[ ] Timeouts apropiados
- HTTP client timeouts < 30s
- DB query timeouts
-
[ ] Multi-AZ / redundancia
- Deploy en múltiples availability zones
- Load balancer configurado
-
[ ] Backups automáticos
- DB backups diarios
- Retention policy (30 días)
1.8 📝 Documentación
-
[ ] API docs actualizadas
- Swagger/OpenAPI
- Ejemplos de requests/responses
-
[ ] README actualizado
- Cambios significativos documentados
- Setup instructions correctas
-
[ ] CHANGELOG actualizado
- Versión semántica (SemVer)
- Listar breaking changes
-
[ ] Runbook actualizado
- Pasos para rollback
- Troubleshooting común
-
[ ] ADR documentado (si aplica)
- Decisiones arquitecturales significativas
- Contexto y alternativas consideradas
1.9 🔄 Proceso de Deploy
-
[ ] Feature flags consideradas
- Para features grandes
- Kill switch disponible
-
[ ] Estrategia de deploy definida
- Rolling, blue-green, canary
- % tráfico inicial si canary
-
[ ] Rollback plan claro
- Comando de rollback documentado
- Testeado en staging
-
[ ] Ventana de deploy apropiada
- Evitar viernes tarde / vísperas festivos
- Horario de bajo tráfico si posible
-
[ ] Stakeholders notificados
- Product, Customer Success, Support
- Changelog comunicado
-
[ ] On-call alertado
- Team on-call sabe del deploy
- Runbook accessible
1.10 ✅ Post-Deploy Verification
1.10.1 Inmediato (primeros 5 min)
-
[ ] Smoke tests pasan
- Login funciona
- Endpoint crítico responde
- No errores en logs
-
[ ] Health checks OK
/live,/readyretornan 200- Todas las instancias healthy
-
[ ] Métricas estables
- Error rate no aumentó
- Latencia similar a pre-deploy
- Throughput normal
1.10.2 Primeros 30 minutos
-
[ ] Monitoring activo
- Revisar dashboards
- Alertas no disparadas
-
[ ] User reports
- No incremento en tickets support
- No quejas en social media
-
[ ] Logs sin errores nuevos
- Grep por exceptions
- Nivel ERROR no aumentó
1.10.3 Primera hora
-
[ ] Métricas de negocio
- Conversión no cayó
- Engagement normal
-
[ ] Performance baseline
- p95 latency comparable
- Database load normal
1.11 🚨 Rollback Criteria
Rollback inmediato si:
- Error rate > 10%
- p95 latency > 2x baseline
- Health checks failing > 5 min
- [ ] Funcionalidad crítica rota: Usuarios no pueden completar flujo principal (login, pago).bility introducida
- Data corruption detectada
- Security vulnerability introducida
Proceso:
- Ejecutar rollback command
- Verificar health checks
- Notificar stakeholders
- Post-mortem blameless
1.12 🎯 Checklist por Tipo de Change
1.12.1 Cambio de DB Schema
- [ ] Migration backward compatible
- [ ] Deploy en 2 fases si breaking
- [ ] Datos migrados sin pérdida
- [ ] Rollback testeado
1.12.2 Nueva API Endpoint
- [ ] Autenticación requerida
- [ ] Rate limiting
- [ ] Input validation
- [ ] Docs en Swagger
- [ ] Tests E2E
1.12.3 Cambio de Config
- [ ] Config en version control
- [ ] Testeado en staging
- [ ] Rollback = config anterior
- [ ] No secrets en Git
1.12.4 Actualización de Dependency
- [ ] CHANGELOG leído
- [ ] Breaking changes identificados
- [ ] Tests pasados
- [ ] Performance no degradó
1.13 📋 Sign-off
Antes de deploy:
Deploy Request: #1234
Feature: User authentication with 2FA
Deploy date: 2015 14:00 UTC
Deploy strategy: Canary (10% → 50% → 100%)
Checklist: ✅ Completed
Tests: ✅ All passing (coverage 85%)
Security scan: ✅ No critical issues
Staging: ✅ Validated
Rollback plan: ✅ Documented
Approvals:
- Developer: @alice (signed)
- Reviewer: @bob (signed)
- Tech Lead: @carol (signed)
Proceed? YES / NO
1.14 🚫 Errores Comunes
| Error | Consecuencia | Prevención |
|---|---|---|
| "Skip tests, bajo riesgo" | Bugs en producción | Nunca skip tests |
| "Deploy viernes 17h" | Weekend debugging | Deploy martes-jueves AM |
| "No probé rollback" | Rollback falla cuando se necesita | Test rollback en staging |
| "Notificar después" | Support sin contexto | Notificar ANTES |
| "Sin monitorear post-deploy" | Problemas no detectados | Monitor activo 1 hora |
1.15 🎓 Mejora Continua
Después de cada deploy:
-
[ ] Retro rápida (5 min)
- ¿Algo salió mal?
- ¿Qué mejorar del proceso?
-
[ ] Actualizar checklist
- Agregar items si faltó algo
- Remover si ya no aplica
-
[ ] Automatizar lo manual
- CI/CD checks automáticos
- Scripts en vez de pasos manuales
1.16 📚 Recursos
- Google SRE - Release Engineering
- AWS Well-Architected - Operational Excellence
- Production Readiness Checklist - Gruntwork
1.17 ✅ Aprobación Final
Este checklist fue completado y aprobado por:
- Developer: __ Fecha: ____
- Code Reviewer: ___ Fecha: _____
- Tech Lead: __ Fecha: ____
- DevOps (si aplica): ___ Fecha: _
1.17.1 Deploy autorizado: YES / NO
1.17.2 Hora estimada deploy: ______
1.17.3 Ventana de deploy: ______
1.18 🎉 ¡Checklist Completo
Si completaste todos los ítems, tu deploy tiene alta probabilidad de éxito. Recuerda:
"Hope is not a strategy. Preparation is."
¡Buen deploy! 🚀