Si desplegar da miedo, se despliega poco. Y si se despliega poco, cada despliegue da más miedo.
Convertimos el despliegue en un procedimiento aburrido: repetible, reversible y ejecutable por cualquiera del equipo a las diez de la mañana de un martes. No por el único que sabe, un viernes a las once de la noche.
- Primera tubería en producción
- 3 a 5 sem
- Tiempo de reversa
- Minutos
- Quién puede desplegar
- Cualquiera
El círculo vicioso
El miedo a desplegar se alimenta a sí mismo.
Empieza con un despliegue manual que salió mal. Como salió mal, el equipo decide desplegar menos seguido. Como despliega menos seguido, cada entrega acumula más cambios. Como cada entrega tiene más cambios, la probabilidad de que algo falle es mayor y el diagnóstico es más difícil, porque hay veinte cosas nuevas y no se sabe cuál rompió qué.
Entonces se despliega todavía menos, se hace de noche para que nadie se dé cuenta, y solo lo hace la persona que se sabe la secuencia de memoria. Esa persona se convierte en un punto único de falla y no puede tomar vacaciones sin que la empresa se paralice.
El problema no es técnico, es de frecuencia. Un despliegue pequeño y frecuente falla menos y, cuando falla, es obvio qué lo rompió porque solo cambió una cosa. La automatización es el medio para poder desplegar seguido sin que sea agotador.
Por eso la primera métrica que miramos no es el tiempo de despliegue sino cuántas veces al mes se despliega y cuánto tarda devolver la versión anterior. Si la reversa toma horas, nadie se va a atrever a entregar seguido.
Qué construimos.
- Tuberías de integración y despliegue
- En GitHub Actions o GitLab CI, según lo que ya use. Compilación, pruebas si existen, empaquetado y despliegue, todo disparado por un cambio en el repositorio.
- Ambientes consistentes
- Desarrollo, pruebas y producción construidos desde la misma definición. La frase "en mi máquina sí funciona" deja de tener sentido cuando los tres ambientes salen del mismo código.
- Reversa en minutos
- Cada despliegue guarda la versión anterior lista para volver. Sin esto la automatización es peligrosa, porque permite equivocarse más rápido.
- Gestión de secretos
- Contraseñas y claves fuera del repositorio, en un almacén con control de acceso y rotación. Es el hallazgo más frecuente cuando revisamos un repositorio por primera vez.
- Control de versiones de la base de datos
- Los cambios de esquema versionados y aplicados por la misma tubería, con su reversa. Es la parte que más despliegues rompe y la que más se descuida.
- Observabilidad del despliegue
- Saber qué versión está en producción, quién la puso, cuándo y qué cambió. Cuando algo falla, esa información recorta el diagnóstico a minutos.
- Transferencia al equipo
- Documentación y sesiones de trabajo con su gente. El objetivo es que puedan modificar las tuberías sin nosotros, no que dependan de nosotros para siempre.
Anatomía de un despliegue, antes y después.
El mismo despliegue, en la misma empresa, con seis semanas de diferencia. Lo interesante no es que sea más rápido: es que se puede hacer un martes por la mañana y que lo puede hacer cualquiera.
| Paso | Antes: manual | Quién podía | Después: automatizado |
|---|---|---|---|
| Compilar la aplicación | 15 min en el portátil de alguien | Un desarrollador | 3 min, en el servidor de construcción |
| Pasar pruebas | Se saltaba por tiempo | Nadie | 6 min, obligatorio para continuar |
| Copiar archivos al servidor | 20 min por FTP | Solo el líder técnico | 1 min, automático |
| Aplicar cambios de base de datos | 25 min a mano, con miedo | Solo el DBA | 2 min, versionado y reversible |
| Reiniciar servicios | 10 min, en orden que había que recordar | Solo el líder técnico | 40 seg, en orden definido |
| Verificar que quedó bien | Abrir el navegador y mirar | Cualquiera | Chequeos automáticos, corta si fallan |
| Devolverse si algo falló | 2 a 4 horas, restaurando copias | Solo el líder técnico | 90 segundos, versión anterior |
| Total en ventana nocturna | 1 h 40 min, un viernes | Una persona | 13 min, cualquier día |
La fila que de verdad importa
No es el tiempo total, es la reversa. Cuando devolverse pasa de cuatro horas a noventa segundos, el equipo pierde el miedo, y cuando pierde el miedo empieza a desplegar seguido. El resto de las mejoras de esta tabla viene detrás de esa.
La columna de quién podía
Antes, cinco de los siete pasos dependían de una sola persona. Esa persona no podía enfermarse ni tomar vacaciones en fin de mes. Reducir esa dependencia vale tanto como el ahorro de tiempo, y en el mercado laboral colombiano de hoy, donde la rotación en empresas de tecnología ronda el 24 por ciento anual, vale bastante más.
Empezamos por el despliegue que más duele.
No por el más fácil ni por el más elegante. Por el que hoy se hace de noche y a mano, porque es donde el alivio se nota de inmediato y donde el equipo se convence.
Fase 1 / 1 semana
Mapa del despliegue actual
Nos sentamos a ver un despliegue real, con la persona que lo hace. Se documenta cada paso, incluidos los que no están escritos en ninguna parte.
Fase 2 / 2 a 3 semanas
Primera tubería
Se automatiza un despliegue completo a un ambiente de pruebas, con reversa incluida. Se ejecuta muchas veces hasta que sea aburrido.
Fase 3 / 2 a 4 semanas
Producción y ambientes
Se lleva a producción y se replica el patrón al resto de aplicaciones. Los ambientes se unifican para que se comporten igual.
Fase 4 / 1 a 2 semanas
Entrega al equipo
Documentación, sesiones de trabajo y un despliegue hecho por su gente sin nosotros al lado. Ese es el criterio de cierre.
Lo que ya usa, si sirve.
Cambiar de herramienta cuesta tiempo y capacitación. Si lo que tiene funciona, lo mejoramos en vez de reemplazarlo.
Tuberías
- GitHub Actions
- GitLab CI
- Azure DevOps
- Jenkins
Contenedores
- Docker
- Docker Compose
- Kubernetes
- ECS
- Podman
Infraestructura
- Terraform
- Ansible
- Helm
Secretos
- Vault
- AWS Secrets Manager
- Azure Key Vault
- SOPS
Base de datos
- Flyway
- Liquibase
- Alembic
- migraciones nativas
Un proyecto de implantación y, si quiere, operación después.
Muchos clientes contratan solo la implantación y siguen solos. Es un resultado válido y para eso incluimos la transferencia al equipo.
Implantación
desde12M COP12.000.000 pesos colombianos
De 6 a 10 semanas. Tuberías, ambientes, gestión de secretos, reversa y transferencia al equipo con documentación.
Operación posterior
desde6M COP /mes6.000.000 pesos colombianos por mes
Plan Crecimiento. Mantenimiento de las tuberías, guardia 24x7 y evolución a medida que crecen las aplicaciones.
Valores de referencia en pesos colombianos, sin IVA. El precio final depende del alcance, el número de servidores y el nivel de servicio acordado.
Sobre herramientas, equipos y expectativas.
¿DevOps no es contratar a alguien con ese cargo?
Contratar a una persona y llamarla "el DevOps" es la forma más común de no resolver nada. Lo que cambia el resultado es que desplegar deje de ser un evento manual que solo una persona sabe hacer. Eso se logra con automatización y con procedimiento, no con un cargo nuevo.
¿Necesitamos Kubernetes?
Probablemente no. Kubernetes resuelve problemas de escala y de densidad que la mayoría de las empresas medianas colombianas no tiene, y a cambio agrega una complejidad operativa considerable. Si tres máquinas con contenedores y un balanceador resuelven el caso, recomendamos eso y lo decimos aunque suene menos moderno.
¿Cuánto se demora ver resultados?
La primera automatización útil suele estar en producción entre la tercera y la quinta semana. No arrancamos por lo más complejo sino por el despliegue que más duele, que normalmente es el que se hace de noche y a mano.
¿Trabajan con nuestro equipo de desarrollo?
Sí, y es la única forma de que esto funcione. Las tuberías de despliegue las va a usar su equipo todos los días. Si las construimos sin ellos, las abandonan en tres meses y vuelven al procedimiento manual.
¿Qué pasa si no tenemos pruebas automatizadas?
Es lo más común. Se puede automatizar el despliegue sin tener pruebas, y ya eso reduce errores humanos. Pero la reversa rápida se vuelve más importante, porque sin pruebas la red de seguridad es poder devolver la versión anterior en minutos.
Con qué se suele combinar.
Ordenar el despliegue destapa lo que hay debajo: tareas manuales alrededor de la entrega y un entorno que nadie describe en código. Son los dos frentes que más veces se contratan justo después.
Operación
Automatización e IaC
Infraestructura como código y tareas manuales convertidas en procesos.
Operación
Soporte gestionado
Monitoreo, parches y respuesta a incidentes con SLA que se descuenta si se incumple.
Infraestructura
Infraestructura cloud
AWS, Azure y Google Cloud diseñados para que la factura no se dispare.
¿Cuántas veces al mes despliegan y quién puede hacerlo?
Si la respuesta es "una vez al mes y solo una persona", ya sabemos por dónde empezar y cuánto se puede mejorar en las primeras cinco semanas.
El objetivo es que desplegar sea aburrido.
Sin ceremonia, sin ventana nocturna y sin que dependa de que una persona específica esté disponible. Cuando desplegar es aburrido, el equipo entrega seguido.
¿Prefiere no llenar un formulario?
Contesta una persona en horario lunes a viernes, 8:00 a 18:00 (cot). Por correo respondemos en 1 día hábil.