Close

¿Qué es la implementación continua?

La implementación continua (CD, por sus siglas en inglés) tiene ventajas para tus equipos de software y para los clientes. Descubre en qué consiste, cuáles son sus ventajas y prácticas recomendadas, y mucho más.

Foto de Sten Pittet
Sten Pittet

Escritor colaborador


La implementación continua (CD) es un proceso de publicación de software que utiliza pruebas automatizadas para verificar si los cambios en un código base son correctos y estables para la implementación inmediata y autónoma en un entorno de producción.

El ciclo de publicación del software ha evolucionado con el tiempo. El proceso heredado, consistente en mover código de una máquina a otra y en verificar si funciona como se esperaba, era un proceso propenso a errores y a consumir muchos recursos. Ahora hay herramientas que pueden automatizar este proceso de implementación, con lo que las organizaciones de ingeniería se pueden centrar en las necesidades de negocio principales y librarse de la carga de trabajo relacionada con las infraestructuras.

Ilustración del ciclo de implementación continua | CI/CD de Atlassian

Comparación entre implementación continua y entrega continua


Diferenciar la implementación de la entrega continua puede ser complicado, por sus nombres. Ambas se abrevian CD, por sus siglas en inglés, y tienen responsabilidades muy similares. La entrega es la precursora de la implementación. En la entrega, hay un paso final de aprobación manual antes de la publicación en producción.

Te ofrecemos un ejercicio de mnemotecnia para que puedas recordar la diferencia entre los dos. Imagina que te va a llegar un paquete de tu tienda online favorita. Mientras esperas, te organizas con un servicio de mensajería. Esta es la fase de entrega. Una vez que el paquete ha llegado, lo abres y compruebas que todo está como esperabas. Si no es así, puedes rechazarlo y devolverlo. Si el paquete es correcto, puedes "implementarlo" y usar el nuevo artículo.

En la fase de entrega, los desarrolladores revisan y fusionan los cambios de código que luego se empaquetan en un artefacto. A continuación, este paquete se mueve a un entorno de producción donde espera la aprobación para abrirse e implementarse. En la fase de implementación, el paquete se abre y se revisa con un sistema de comprobaciones automatizadas. Si las comprobaciones fallan, el paquete se rechaza.

Una vez pasadas las comprobaciones, el paquete se implementa automáticamente en producción. La implementación continua es la canalización de implementación de software automatizada e integral, de extremo a extremo.

Ver la solución

Desarrolla y pon en marcha software con Open DevOps

Material relacionado

Más información sobre las pruebas automatizadas

Diagrama de los pasos de un ciclo de implementación continua | CI/CD de Atlassian

¿Cuáles son las ventajas de la implementación continua?


La implementación continua ofrece increíbles ventajas de productividad para los equipos de desarrollo de software. A combinar DevOps con la implementación continua, los equipos pueden acelerar las publicaciones de forma significativa. Como las canalizaciones de implementaciones se desencadenan automáticamente con cada cambio, los equipos pueden desarrollar más rápido. Si al equipo se le ocurren un producto o una función nuevos, pueden estar en las manos de los clientes en cuanto se envía el código. Con la implementación continua, los equipos pueden implementar pequeños lotes de cambios, lo que hace que las publicaciones tengan menos riesgo y que los problemas que ocurran en ellas más fáciles de solucionar.

Desde el punto de vista empresarial, la entrega continua permite a la empresa responder a las demandas cambiantes del mercado mediante la implementación y la validación rápidas de nuevas ideas y funciones.

Herramientas de implementación continua


Cuando adoptes pruebas automatizadas, es recomendable combinarlas con una herramienta de cobertura de pruebas que te permita saber qué parte del código base cubre tu conjunto de pruebas.

Está bien aspirar a una cobertura superior al 80 %, pero hay que tener cuidado con no confundir un porcentaje de cobertura elevado con un buen conjunto de pruebas. Una herramienta de cobertura de código te ayudará a encontrar código no sometido a pruebas, pero es la calidad de las pruebas la que marcará la diferencia al fin y al cabo.

Si acabas de empezar, no tengas prisa por alcanzar una cobertura del 100 % del código base. En lugar de eso, utiliza una herramienta de cobertura que te permita identificar partes críticas de la aplicación que aún no tienen pruebas, y empieza por ahí.

Pruebas automatizadas

La dependencia más importante para la implementación continua son las pruebas automatizadas. De hecho, toda la cadena de integración, entrega e implementación continuas depende de ellas. Las pruebas automatizadas sirven para evitar regresiones al introducir nuevo código y pueden sustituir las pruebas manuales de nuevos cambios en el código.

Implementaciones progresivas

La característica distintiva entre la implementación y la entrega continuas es el paso automatizado de activar nuevo código en un entorno activo. La canalización de la implementación continua debe poder deshacer una implementación en caso de que se produzcan errores o cambios que estropeen el código. Para tener una implementación continua adecuada, son imprescindibles herramientas automatizadas de implementación progresiva, como las implementaciones azul-verde.

Supervisión y alertas

Una canalización de implementación continua sólida contará con alertas y controles en tiempo real. Estas herramientas dan visibilidad sobre el estado general del sistema y sobre el antes y el después de las implementaciones de nuevo código. Además, las alertas se pueden utilizar para desencadenar un "deshacer" de una implementación progresiva y revertir una implementación con errores.

Prácticas recomendadas de implementación continua


Cuando se ha establecido una canalización de implementación continua, se requieren mantenimiento y participación permanentes por parte del equipo de ingeniería para que funcione correctamente. Las siguientes prácticas y comportamientos recomendados garantizarán que el equipo de ingeniería saque todo el partido de una canalización de implementación continua.

Desarrollo basado en pruebas

El desarrollo basado en pruebas es la práctica de definir una especificación de comportamiento para nuevas funciones de software antes de comenzar el desarrollo. Una vez definida la especificación, los desarrolladores escribirán pruebas automatizadas que coincidan con esa especificación. Finalmente, se escribe el código que pasa realmente a la entrega para satisfacer los casos de prueba y coincidir con la especificación. Este proceso garantiza que todo el código nuevo esté cubierto por pruebas automatizadas desde el primer momento. Otra opción es entregar el código primero y luego producir la cobertura de pruebas. Esto, sin embargo, da pie a que existan brechas entre el comportamiento esperado por las especificaciones y el código producido.

Un método único de implementación

Una vez que se cuenta con una canalización de implementación continua, es fundamental que sea el único método de implementación. Los desarrolladores no deben copiar código a mano en la producción ni hacer ediciones en vivo. Los cambios manuales externos a la canalización de CD desincronizarán el historial de implementación y romperán el flujo de CD.

Contenedorización

Al contenedorizar una aplicación de software, se garantiza que se comporte de la misma manera en cualquier máquina en la que se implemente. Esto elimina toda una serie de incidencias en las que el software funciona en una máquina, pero se comporta de manera diferente en otra. Los contenedores se pueden integrar en la canalización de CD para que el código se comporte de la misma manera en la máquina de un desarrollador que durante las pruebas automatizadas y la implementación de producción.

En resumen…


La implementación continua puede ser una herramienta eficaz para las organizaciones modernas de ingeniería. La implementación es el último paso de la "canalización continua" que consiste en la integración, la entrega y la implementación. La auténtica experiencia de implementación continua es la automatización a un nivel en el que el código se implementa en la producción, se comprueba que es correcto y se revierte automáticamente cuando hay errores o se acepta si todo es correcto.

Si estás pensando en poner en práctica la entrega continua, asegúrate de consultar nuestros tutoriales de CI/CD de DevOps, que profundizan en el Open DevOps de Atlassian con Jira y las integraciones de terceros.

Sten Pittet
Sten Pittet

Llevo 10 años en el negocio del software desempeñando diversas funciones, desde el desarrollo hasta la gestión de productos. Tras pasar los últimos 5 años en Atlassian trabajando en herramientas para desarrolladores, ahora escribo sobre compilación de software. Fuera del trabajo, me dedico a perfeccionar mis habilidades como padre con el maravilloso hijo que tengo.


Compartir este artículo

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Ilustración de Devops

La comunidad de DevOps

Ilustración de Devops

Leer el blog

Ilustración de un mapa

Pruébalo gratis

Suscríbete para recibir el boletín de DevOps

Thank you for signing up