La entrega continua (o CD, por sus siglas en inglés) es la automatización de los pasos manuales que intervienen en la preparación del software para su lanzamiento a producción.
La entrega continua se sirve de la integración continua (CI, por sus siglas en inglés) para automatizar las fases manuales que intervienen en la preparación del software para su lanzamiento a producción.
Cada vez que se combinan cambios de código en una rama designada, el proceso de integración continua ejecuta una serie de comprobaciones, como las pruebas de unidad automatizadas, y crea una compilación. La entrega continua amplía ese proceso implementando de forma automática cada compilación en entornos de prueba y almacenamiento provisional y ejecutando más pruebas automatizadas.
Estas pruebas incluyen pruebas de integración, de interfaz de usuario, de rendimiento (por ejemplo, de carga, inmersión o estrés) y de extremo a extremo. En función del sector en el que trabaje, también puede utilizar la entrega continua para ejecutar pruebas de seguridad, de accesibilidad y pruebas manuales de aceptación del usuario o de exploración. Si la compilación ha superado correctamente cada fase, se considera que está lista para pasar a producción.
Al igual que con la integración continua, la clave para una entrega continua eficaz es automatizar la mayor parte posible del proceso. Esto incluye proporcionar comentarios en cada fase y avisar al equipo si la compilación no supera una fase para que pueda abordar el problema rápidamente.
Tanto la entrega continua como la implementación continua implican la implementación automática de compilaciones en entornos y la ejecución de pruebas automatizadas, por lo que, a veces, ambos términos se utilizan indistintamente. Sin embargo, son conceptos que debemos distinguir.
Con la implementación continua, un cambio de código se implementa de forma automática en la fase de producción si se superan con éxito todas las fases de prueba. Por el contrario, la entrega continua incluye un paso manual en la última fase: el lanzamiento a producción del software.
Aunque la implementación continua pueda parecer el objetivo ideal para cualquier equipo de desarrollo de software, son muchos los equipos que optan por la entrega continua.
Más información sobre la comparación entre la implementación y la entrega continuas.
La fase final de un proceso de CI/CD consiste en implementar los cambios del código en producción. Con la entrega continua, la decisión de lanzar a producción es un paso manual, aunque el propio proceso de lanzamiento esté automatizado.
Algunos equipos llevan a cabo la entrega continua como paso previo a la implementación continua. Activar manualmente la implementación final a producción ofrece una red de seguridad mientras se genera confianza en las pruebas y las comprobaciones automáticas. En este caso, puede optar por llevar a cabo la entrega continua durante unos meses antes de dar el salto a la implementación automática en producción de cada cambio de código realizado correctamente.
Sin embargo, desplegar actualizaciones en el software varias veces al día o cada hora no siempre es la mejor opción. Para el software versionado (como las aplicaciones móviles, las API, el software integrado o los productos de escritorio) suele tener sentido agrupar los cambios en versiones más grandes. Los usuarios de productos instalados no esperan tener que actualizar sus aplicaciones cada pocas horas, mientras que la actualización a una nueva versión de la API puede afectar de forma significativa a sus clientes. Elegir entre la entrega y la implementación continuas es tomar la decisión correcta para su empresa y sus usuarios.
Aunque las fases, los entornos y las pruebas concretas de la compilación dependerán del producto y la organización, los siguientes principios generales le ayudarán a crear un proceso de entrega continua:
La entrega continua permite a los equipos publicar software con mayor rapidez y frecuencia, lo que reduce el número de errores que llegan a producción. La clave para lograrlo es garantizar que el código esté siempre listo para su publicación, probando continuamente los cambios y resolviendo los problemas en cuanto se descubren.
Además, la entrega continua tiene muchas otras ventajas:
La implementación de un proceso de entrega continua plantea algunos retos:
Crear un proceso de entrega continua puede parecer desalentador, pero, si se hace bien, puede acelerar drásticamente la publicación de software y minimizar los errores.
La adopción de la mentalidad DevOps es fundamental para la implantación eficaz de la entrega continua. En lugar de ver el proceso de desarrollo de software como una cinta transportadora unidireccional, en la que los requisitos, el código o los informes pasan de un equipo al siguiente, en DevOps predomina la colaboración y los comentarios rápidos en ciclos breves e iterativos.
Cambiar el concepto que tiene de «hecho» puede serle de ayuda para adoptar dicha mentalidad. En lugar de considerar que la tarea se ha completado al entregar el código para que se compruebe, la nueva funcionalidad o el cambio de código solo se completarán cuando se publiquen. Si se detecta alguna incidencia en algún momento del proceso, comunicar esos comentarios con rapidez y colaborar para solucionarlo logra una resolución más ágil que los extensos informes que deben pasar por un panel de cambios para su aprobación. De eso se trata la entrega continua.
Para obtener más consejos sobre cómo empezar con la entrega continua, lea nuestra guía de mejores prácticas de integración y entrega continuas.
La entrega continua facilita y agiliza el lanzamiento de software, lo que le permite implementar a producción con mucha más frecuencia. En lugar de un gran lanzamiento anual o trimestral, se lanzan pequeñas actualizaciones con frecuencia. Esto no solo significa que los usuarios obtienen las nuevas funciones y reparación de errores mucho antes, sino también que usted puede ver cómo se utiliza su software en la vida real y adaptar sus planes en consecuencia.
Aunque algunas organizaciones prefieren mantener el control del último paso del proceso de lanzamiento, para otras, la conclusión lógica de un proceso de CI/CD es automatizar el lanzamiento al público, utilizando una práctica denominada implementación continua. Para obtener más información, lea la siguiente sección de nuestra guía de CI/CD.
TeamCity es una plataforma de CI/CD compatible con una amplia gama de herramientas de compilación, marcos de trabajo de pruebas, contenedores y proveedores de infraestructura en la nube. Tanto si desea alojar sus máquinas de compilación de forma local, en la nube o utilizar una combinación de ambos, TeamCity coordinará las tareas de compilación para lograr la máxima eficiencia.
La lógica de procesos de TeamCity se puede personalizar, lo que significa que puede elegir cuándo ejecutar procesos en paralelo ―como pruebas en diferentes plataformas― y cuándo requerir que deban haberse completado con éxito antes de pasar a la siguiente fase. Las notificaciones configurables le ofrecen la información que necesita allá donde esté trabajando y evitan interrupciones innecesarias. Por último, los resultados detallados le permiten asegurarse de que va en el buen camino hacia la producción.