Uso de la entrega continua para publicar más rápido, con menos costos y riesgos

Completado

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

Diagrama en el que se muestra la diferencia entre la entrega continua y la implementación continua. Las fases son las mismas en ambos casos: código realizado - pruebas unitarias - integración - prueba de aceptación - implementación en producción. Para la entrega continua, la implementación en producción se realiza manualmente. Para la implementación continua, esta se realiza de forma automática.

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:

Diagram en el que se muestra el círculo de la entrega continua. El ciclo va de la planificación y seguimiento al desarrollo, la compilación y las pruebas, la implementación, la operación, la supervisión y el aprendizaje, y vuelta a la planificación.

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.

Diagrama que muestra las ventajas de las organizaciones de DevOps de alto rendimiento que usan la entrega continua con respecto a los equipos de bajo rendimiento.

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.

Diagrama que muestra la relación entre integración continua, entrega continua e implementación continua