Uso de la entrega continua para publicar más rápido, con menos costos y riesgos
La entrega continua es una de las ocho capacidades de la taxonomía de DevOps.
Explicación de la necesidad de la entrega continua
En 2012, un error de implementación de software generó una pérdida de 460 millones de USD para Knight Capital Group, el mayor negociador de acciones estadounidenses en ese momento.
Las pérdidas comenzaron en cuanto se abrió el mercado. No había errores en el código: el problema se debió a un error cometido durante una implementación manual en solo uno de sus ocho servidores de producción.
Al intentar corregirlo, los ocho servidores terminaron mal configurados, así que se perdió más dinero. Puesto que toda la implementación fue manual, no hubo forma de revertir los cambios automáticamente.
Después de intentar corregir el problema durante 45 minutos, se terminó por apagar todo el sistema. En ese momento se habían perdido 460 millones de USD.
Esta es una historia real. ¿Cuál sería el impacto en su organización? ¿Están realizando implementaciones manuales?
Es posible que la pregunta más importante para entender el rendimiento de la entrega en una organización sea:
Importante
¿Cómo de intenso es el dolor de implementación en producción?
El miedo y la ansiedad que los ingenieros y el personal técnico sienten cuando insertan código en producción pueden indicar mucho sobre el rendimiento de la entrega de software de un equipo.
Descripción de la entrega continua
Importante
La entrega continua es un enfoque de ingeniería de software en el que los equipos producen software en ciclos cortos, lo que garantiza que el software se pueda:
- Publicar con confianza en cualquier momento
- Publicar manualmente
El propósito de la entrega continua es:
- Compilar, probar y publicar software con mayor velocidad y frecuencia
- Reducir el costo, el tiempo y el riesgo de la entrega de cambios al permitir más actualizaciones incrementales en las aplicaciones en producción
La entrega continua se produce cuando:
- El software se puede implementar a lo largo de su ciclo de vida
- La integración continua y la amplia automatización están disponibles en todas las partes posibles del proceso de entrega, normalmente mediante una canalización de implementación
- Es posible realizar implementaciones de cualquier versión del software con solo pulsar un botón en cualquier entorno a petición
Las implementaciones manuales de gran tamaño crean un alto nivel de riesgo al aumentar drásticamente la complejidad del software que se está publicando, introducir la probabilidad de errores humanos y dificultar la identificación y la corrección de los errores de implementación. La frecuencia de implementación es baja, el plazo de los cambios es alto, el tiempo medio de recuperación es largo y hay una tasa de errores de cambio elevada.
Un equipo de operaciones designado realiza la implementación manual fuera del horario comercial. Para ello necesitan un documento de pasos manuales y tiempo para probar los pasos documentados de forma manual. Las implementaciones de gran tamaño también tardan más en ejecutarse, son más difíciles de revertir en caso de error y necesitan un ámbito de pruebas mayor después de la implementación. El número de cambios por implementación es mayor y las reacciones tardan más en implementarse.
Al automatizar el proceso y permitir la publicación en producción en cualquier momento, las ventajas de la entrega continua son considerables y numerosas:
- Menos desperdicio
- ROI más rápida
- Menor riesgo
- Mayor calidad
- Reacciones tempranas
- Mejor planeación
- Colaboración más rápida
- Todo el mundo está implicado
- Menos problemas de producción
- Posibilidad de desplazamiento a la izquierda de la seguridad
- Adaptación y reacción mucho más rápidamente
- Versiones mucho más predecibles
- Implementación durante cualquier horario comercial
- Respuesta más rápida a los cambios del mercado
- Cambio entregado sin retraso significativo
- Cualquier miembro del equipo puede iniciar implementaciones
- Implementaciones rápidas, repetibles y configurables
Según el informe de 2019 sobre el estado de DevOps, las organizaciones de DevOps de alto rendimiento logran lo siguiente en comparación a los equipos de bajo rendimiento:
- Implementaciones más de 200 veces más frecuentes
- Un plazo del cambio más de 100 veces más rápido
- Un tiempo medio de recuperación más de 2600 veces más rápido
- Una tasa de errores de cambio siete veces menor
Además, de acuerdo con un estudio internacional de CA Technologies, las organizaciones logran hasta un 20 % de mejora en el tiempo de comercialización y un aumento de los ingresos.
Nota:
La entrega continua a veces se confunde con la implementación continua. Implementación continua significa que cada cambio pasa por la canalización y se pone automáticamente en producción, lo que se traduce en muchas implementaciones de producción todos los días. Entrega continua simplemente significa que se pueden realizar implementaciones frecuentes, o no, normalmente porque las empresas prefieren una tasa de implementación más lenta. Para realizar implementación continua se debe hacer entrega continua.
La integración continua es un requisito previo de la entrega continua. Los procedimientos en vigor permiten compilar e implementar (con confianza) la aplicación en cualquier momento y con alta calidad desde el control de código fuente.