I would like to view this page in
La implementación continua (CD) amplía el proceso de integración y entrega continuas (CI/CD) gracias a que implementa de forma automática cada cambio de código realizado con éxito en la producción.
La implementación continua lleva a su extremo lógico la práctica de DevOps de automatizar los pasos de compilación, pruebas e implementación. Cuando un cambio de código supera con éxito todas las fases del proceso, pasa de forma automática a la fase de producción sin intervención manual. Adoptar la implementación continua significa que puede hacer llegar las funcionalidades a los usuarios del modo más rápido posible sin poner en entredicho la calidad.
La implementación continua se apoya en una integración continua demostrada y madura, así como en los procesos de entrega continua:
Una vez implantado un proceso de CI/CD sólido y fiable, puede automatizar el último paso y empezar a implementar los cambios de forma automática. Con la implementación continua, los lanzamientos se convierten en actos rutinarios que suceden varias veces al día.
Dicho lo cual, la implementación continua no debe considerarse el objetivo final de todos los equipos de DevOps. Si está creando aplicaciones, API o software que requiere instalación, es posible que los usuarios no deseen recibir actualizaciones varias veces al día. Es posible que, en este caso, la entrega continua sea más adecuada.
Incluso si no desea un proceso de implementación completamente automatizado, quizás prefiere aplicar algunas de las prácticas a sus propios procesos de CI/CD. Exploremos exactamente qué implica la implementación continua y qué debe tener en cuenta antes de dar el salto hacia «todo» continuo.
Es fácil confundir ambas, pero la implementación continua y la entrega continua son partes distintas del lado de CD del proceso de CI/CD. Con la entrega continua, el paso final a la fase de producción tiene que activarse de forma manual, mientras que con la implementación continua este proceso es automático siempre que todas las fases anteriores se hayan completado con éxito.
Implementación continua | Entrega continua | |
---|---|---|
Modelo de lanzamiento | Se activa de forma automática cada vez que un cambio de código completa con éxito una fase del proceso | Se inicia de forma manual cada vez que un cambio completa con éxito una fase del proceso |
Frecuencia de los lanzamientos | Hasta varias veces por hora (en función del tamaño del equipo y de la velocidad del proceso) | Normalmente, son semanales o mensuales, pero es posible personalizar la frecuencia |
Entornos más adecuados | Sitios web y aplicaciones web | Aplicaciones móviles, software de escritorio y API. También se pueden utilizar como paso previo a la implementación continua |
Proceso de pruebas | Debe ser totalmente automatizado y muy robusto. Las barreras de calidad permiten que los desarrolladores y las partes interesadas confíen en que las pruebas identificarán los errores | Las pruebas automatizadas deben utilizarse siempre que sea posible. Un proceso de lanzamiento menos frecuente permite la aceptación manual y las pruebas exploratorias |
Consideraciones adicionales | Las implementaciones de tipo «canary» y las compilaciones en azul/verde pueden minimizar el impacto de cualquier problema que se traslade a la fase de producción. La supervisión es clave para identificar los problemas en la fase producción cuanto antes | Aunque los lanzamientos se activen de forma manual, el proceso en sí debe ser automático. También hay que tener en cuenta las opciones de reversión o implementación rápida de correcciones |
Obtenga más información acerca de las diferencias con nuestra guía Integración vs. Entrega vs. Implementación continua.
Si sus procesos de integración e implementación son completamente manuales (con bloqueos de código, una estrategia de pruebas en la que tengan que participar todas las partes y todo el mundo esté en vilo el día del lanzamiento), puede que las implementaciones por hora le suenen como algo inimaginable.
Sin embargo, la realidad es que muchas organizaciones están adoptando este enfoque más regular. Desde grandes nombres como Netflix, Etsy o Amazon hasta empresas más pequeñas y menos conocidas, muchos negocios están adoptando un sistema de implementación continua para intentar seguir el ritmo del mercado. Este método ha permitido a muchos creadores de software reducir los plazos de publicación de semanas o meses a horas.
Con la creciente presión para lanzar funcionalidades y responder a los comentarios con rapidez, la implementación continua proporciona una estrategia para realizar lanzamientos de forma regular sin comprometer la calidad.
Como extensión de la integración y la entrega continuas, la implementación continua depende de un proceso de compilación, prueba e implementación completamente automatizado. Este enfoque garantiza que la velocidad no vaya en detrimento de la calidad, aunque poner en marcha la implementación continua de forma eficaz requiere algo más que unos cimientos sólidos.
Antes de empezar a publicar cambios sin intervención manual, necesita confiar plenamente en su proceso de CI/CD. En concreto, debe asegurarse de que las compilaciones y las pruebas automatizadas verifican el código de forma eficaz, algo para lo que son muy útiles las barreras de calidad del código.
Las barreras de calidad especifican los criterios para que el código pase a la siguiente fase del proceso. Para algunas fases, puede establecer un umbral simple, como requerir una tasa de superación del 100 % con una cobertura de código del 90 % para las pruebas de unidad. Para otras pruebas automatizadas, podría permitir un porcentaje de advertencias, pero no superar la fase si se produce algún error. A veces, es posible que desee marcar errores o advertencias para revisarlas de forma manual antes de no superar la fase.
El uso de barreras de calidad automatizadas en fases clave del proceso le proporciona control y visibilidad de este, así como un registro completo de auditoría con la diligencia debida realizada en cada lanzamiento.
Al planear cómo implantar un sistema de implementación continua, una de las cuestiones clave que hay que tener en cuenta es cómo se lanzarán los cambios. Desconectar los servidores en cada implementación provocará interrupciones frecuentes de los servicios en línea, por lo que suele ser preferible seguir una estrategia de actualización continua. También puede hacer del despliegue una extensión del proceso de pruebas automatizado con las implementaciones de tipo «canary».
Una implementación de tipo «canary» limita el despliegue del código actualizado a un pequeño porcentaje de usuarios, que se convierten en probadores involuntarios en producción. Al supervisar las métricas de comportamiento de los usuarios y de uso, puede comprobar si el nuevo lanzamiento no ha introducido nuevos fallos antes de ponerlo en marcha a más gran escala.
Algunas empresas han llevado la automatización un paso más allá con una puntuación de confianza tipo «canary», que compara automáticamente todo un conjunto de métricas frente a unos datos base. El despliegue automático solo continuará si la puntuación supera el umbral especificado. Si la puntuación es demasiado baja, el análisis métrico proporciona un punto de partida para seguir investigando posibles problemas.
Un proceso de implementación de compilación azul/verde es una técnica habitual para las organizaciones que optan por un sistema de implementación continua. Las implementaciones azules/verdes facilitan la reversión de una versión en caso de que surja un problema, ya que mantienen el código antiguo en línea hasta tener la seguridad de que los cambios funcionan como se esperaba. Si es necesario, puede seguir una implementación inicial tipo «canary» con un lanzamiento azul/verde.
Tanto si usa una implementación azul/verde como si pone en marcha reemplazos directos, supervisar el estado del sistema de producción es esencial si desea responder rápidamente a los errores que se hayan podido pasar por alto durante el proceso de pruebas automatizadas.
Comience por identificar las métricas clave que indican la salud del sistema. Estas pueden incluir métricas de salud del sistema, como el espacio en disco o el uso de la CPU, además de métricas de uso, como el número de solicitudes o transacciones. La comparación de estas métricas con una base saludable puede ser una señal de alerta temprana si el sistema no se está comportando como debería. Después, puede decidir si desea revertir el cambio o insertar una corrección en el proceso.
Antes de subirse al carro de la implementación continua, tenga en cuenta algunas de las cosas que tendrá que hacer para garantizar que la adopción de esta sea correcta.
El ciclo de desarrollo de software implica algo más que solo cambios en el código. Los equipos de investigación de usuarios, marketing de producto, diseño de interacciones, documentación, comercial, legal y de asistencia también desempeñan un papel aquí.
Si no ha sentado las bases con las partes interesadas y no se ha comprometido con ellas para entender lo que necesitan del proceso de publicación, pasar a las publicaciones automatizadas puede hacerles sentir que el desarrollo está fuera de control. Eso puede llevar a las partes interesadas a exigir puntos de control manuales y fases de revisión, lo que ralentizaría el proceso y afectaría a los beneficios de una CI/CD. En el peor de los casos, todo el sistema de implementación continua puede rechazarse y considerarse un experimento fallido.
Crear una cultura de colaboración es esencial para que la implementación continua funcione bien. Implicar a otros equipos en el proceso de producción para que sus ideas acerca del diseño, problemas de seguridad, terminología o cumplimiento puedan incorporarse desde el principio es solo un ejemplo de cómo los ciclos de retroalimentación cortos hacen que el ciclo de desarrollo de software resulte más eficiente.
Tan importante como fomentar las aportaciones es ofrecer visibilidad acerca de qué se va a lanzar y cuándo. Mantenga a las partes interesadas informadas de forma automática gracias a un servidor de CI. En función de la herramienta de compilación de la implementación continua que elija, podrá difundir información a través de paneles y notificaciones.
A veces, solo la visibilidad de lo que está por llegar no es suficiente. Cuando trabaja en una funcionalidad mayor o necesita controlar el calendario de un lanzamiento, limitarse a implementar cada confirmación una vez que pase todas las pruebas puede no ser lo ideal.
Los indicadores de funcionalidades sirven para controlar la visibilidad del código en producción. La ventaja de usarlos es que, dado que el código está activo, puede supervisar el software en busca de fallos inesperados.
Otra opción es utilizar una rama dedicada y un proceso por separado que no pase a producción de forma automática, combinando así la entrega y la implementación continuas según sus necesidades.
Cuando se hace bien, la implementación continua puede ayudar a los equipos a hacer llegar los cambios a los usuarios con mayor frecuencia y minimizar los errores. La clave para ello es seguir las mejores prácticas, entre las que se incluye el uso de métricas para optimizar el proceso y la supervisión del entorno de producción para detectar cualquier problema. También es importante reconocer el cambio cultural que ello implica y conseguir que todo el equipo se sume al proceso de CI/CD.
Puede obtener más información acerca de cómo agilizar su proceso de CI/CD y obtener mejores resultados con nuestra guía de mejores prácticas de implementación continua.
TeamCity facilita el proceso de configuración de la implementación continua, ya que permite personalizar las opciones de los desencadenantes y los ejecutores de compilaciones de la implementación. La configuración de la compilación de la implementación le permite restringir los permisos para implementar en producción, mientras que los desencadenantes de compilación flexibles le permiten definir las condiciones para el lanzamiento. Utilice la compatibilidad integrada de TeamCity con repositorios de paquetes y registros de contenedores para gestionar los artefactos de compilación como parte del proceso de integración continua.
Mantenga a las partes interesadas informadas del progreso dándoles acceso a los intuitivos paneles web de TeamCity. Un control de acceso potente basado en roles garantiza la seguridad del proceso de puesta en producción, mientras que los registros de auditoría integrados proporcionan un registro completo de toda la actividad en sus procesos.
La integración continua o CI (Continuous Integration) es la práctica de hacer que todos los que trabajan en el mismo proyecto fusionen regularmente sus cambios con la base de código en un repositorio central.
La integración, la entrega y la implementación continuas son prácticas DevOps. Obtenga más información sobre ellas.
Descubra cómo hemos conseguido gestionar el cuello de botella de la cola de compilación para la instalación de TeamCity que compila todos los proyectos de JetBrains.