Cómo hacer deploys sin miedo con estrategias de rollback claras
- deploy
- rollback
- producción
- git
- estrategia
Todo desarrollador conoce la tensión de llevar nuevo código a producción. El miedo a que algo falle es real, y no es irracional. Un deploy sin un plan claro es una apuesta; la clave para mitigar ese riesgo no es evitar los deploys, sino tener una estrategia de rollback robusta.
Un plan de contingencia transforma una operación de alto riesgo en un proceso controlado. Saber exactamente cómo volver a un estado estable, y hacerlo rápido, cambia la dinámica completa del desarrollo.
Desplegar vs. soltar código a producción
Desplegar no es solo copiar archivos. Un deploy implica la orquestación de cambios, la gestión de dependencias y la garantía de que el sistema sigue funcionando como se espera. Soltar código a producción, sin más, es una receta para el desastre.
Cuando un cliente me llega con problemas de deploys que rompen la web, la causa casi siempre es la misma: no hay proceso. La diferencia entre un deploy controlado y uno sin previsión es la capacidad de revertir.
Estrategias de Rollback en producción
No todas las estrategias de rollback son iguales, y la elección depende mucho de la arquitectura de tu aplicación y de tu infraestructura. Lo que funciona para un monolito simple no es lo mismo que para microservicios.
Mi regla es que la estrategia de rollback debe ser tan simple como el propio deploy. Si tardas más en volver atrás que en ir hacia adelante, tu proceso es ineficiente.
| Estrategia | Descripción | Velocidad de Rollback | Complejidad de Implementación | Coste de Infraestructura |
|---|---|---|---|---|
| Revertir Git | Deshacer el commit en Git y redeployar | Media | Baja | Bajo |
| Blue/Green | Desplegar en un entorno idéntico, cambiar tráfico | Instantánea | Alta | Alto (doble infra) |
| Canary | Desplegar a un pequeño subconjunto de usuarios | Rápida | Media-Alta | Medio |
La estrategia de revertir un commit de Git es la más accesible para la mayoría de los equipos. No requiere infraestructura compleja y es efectiva para la mayoría de los casos.
El coste de no tener un plan de rollback
No tener un plan de rollback es una inversión en problemas futuros. El coste no es solo el tiempo que tu aplicación está caída, sino la pérdida de confianza de los usuarios, la reputación dañada y el estrés del equipo.
Un deploy fallido sin rollback claro puede significar horas de depuración en producción, un escenario que nadie quiere. Si alguna vez te has preguntado por qué tu código funciona en local y falla en producción, la falta de un proceso de deploy y rollback puede ser una causa fundamental.
Ventajas y desventajas
Lo que ganas:
- Confianza en los deploys: reduces la ansiedad y el miedo a romper el sistema.
- Recuperación rápida: minimizas el tiempo de inactividad ante un fallo.
- Menos estrés en el equipo: la gente trabaja mejor sabiendo que hay una red de seguridad.
Lo que complicas:
- Requiere inversión inicial en infraestructura o configuración de pipelines de CI/CD.
- Exige disciplina en los procesos de desarrollo y despliegue.
- Puede aumentar la complejidad del entorno si optas por Blue/Green o Canary.
Requisito fundamental: La capacidad de volver a un estado funcional debe ser tan rápida y automatizada como el propio deploy.
Automatización del deploy y el rollback
Un rollback manual es lento y propenso a errores. La automatización es el camino para evitarlo. Integrar la capacidad de rollback en tu pipeline de CI/CD es una práctica estándar que ahorra mucho tiempo y elimina el factor humano.
Un comando simple como git revert puede ser el inicio de tu estrategia. En sistemas más complejos, como los basados en Docker Compose, puedes usar Docker Compose profiles para entornos distintos y tener configuraciones específicas para un rollback rápido, o incluso un kubectl rollout undo si trabajas con Kubernetes.
# Ejemplo de un rollback simple en un entorno Git/servidor
# Asumiendo que el último deploy fue el HEAD actual
# y queremos volver al commit anterior.
# Primero, revertimos el commit problemático:
git revert HEAD --no-edit
# Luego, redeployamos el estado anterior (esto variará según tu setup)
# Por ejemplo, un script de deploy o un trigger de CI/CD:
./deploy.sh
La automatización no elimina la necesidad de pensar, pero sí la de ejecutar pasos repetitivos bajo presión. Es una inversión que se amortiza con el primer incidente que evitas.
Implementar una estrategia de rollback clara es parte de una buena higiene de desarrollo. Si estás evaluando cómo estructurar tus flujos de trabajo, considera las diferencias entre Git flow vs trunk-based development para tus ramas. Además, si tu proyecto está creciendo, entender cuándo dividir un proyecto en microservicios puede impactar directamente en la complejidad de tus deploys.
Técnico freelance especializado en desarrollo a medida, automatizaciones con IA y gestión técnica para negocios en España. Más sobre mí →
¿Necesitas desarrollo a medida?
Desarrollo funcionalidades específicas, integraciones entre sistemas y herramientas internas. Si se puede programar, probablemente puedo hacerlo.