Entrega continua
La entrega continua (CD) consiste en automatizar la publicación de software en iteraciones breves
¿Qué es la entrega continua?
La entrega continua constituye un enfoque en el que los equipos publican productos de calidad con frecuencia y de forma predecible desde repositorios de código fuente hasta la producción de forma automatizada.
Algunas organizaciones publican productos de forma manual al pasarlos de un equipo a otro, como puedes ver en el siguiente gráfico. Normalmente, los desarrolladores se encuentran en el extremo izquierdo de este espectro, y el personal de operaciones se encuentra en el extremo receptor. Esto produce un retraso en cada entrega, lo que provoca la frustración de los equipos y la insatisfacción de los clientes. El producto acaba publicándose mediante un proceso tedioso y propenso a errores que retrasa la generación de ingresos.

Ahora echa un vistazo a la canalización de entrega continua que se muestra a continuación. Verás que los desarrolladores escriben código en sus portátiles y confirman esos cambios en un repositorio de código fuente, como Bitbucket. Con "código" nos referimos a los sistemas en fase de prueba, las pruebas en sí y la infraestructura que se usará para implementar y mantener el sistema. Bitbucket Pipelines puede lanzar el producto de la fase de pruebas al entorno de ensayo y a la producción, y así ayudar a los clientes a obtener estupendas funciones nuevas.

¿Cómo funciona la entrega continua?
Una canalización de entrega continua podría tener una compuerta manual justo antes de la producción. Una compuerta manual requiere la intervención humana y puede haber situaciones en tu organización que requieran compuertas manuales en las canalizaciones. Algunas compuertas manuales pueden ser cuestionables, mientras que otras pueden ser legítimas. Un escenario legítimo permite al equipo empresarial tomar una decisión de publicación de última hora. El equipo de ingeniería mantiene lista una versión del producto que se puede enviar después de cada sprint, y el equipo comercial toma la última decisión para lanzar el producto a todos los clientes, a una muestra representativa de la población o, quizás, a las personas que viven en una ubicación geográfica determinada
La arquitectura del producto que fluye a través de la canalización es un factor clave que determina la anatomía de la canalización de entrega continua. Una arquitectura de producto altamente vinculada genera un patrón gráfico de canalización complicado en el que varias canalizaciones pueden enredarse antes de llegar finalmente a la producción.
La arquitectura del producto también influye en las diferentes fases de la canalización y en los artefactos que se producen en cada fase. La canalización primero compila los componentes, las unidades más pequeñas del producto que se pueden distribuir y probar. Por ejemplo, una biblioteca creada por la canalización puede denominarse "componente". Esta es la fase de componentes.
Los componentes poco vinculados forman los subsistemas, las unidades más pequeñas que se pueden implementar y ejecutar. Por ejemplo, un servidor es un subsistema. Un microservicio que se ejecuta en un contenedor también es un ejemplo de subsistema. Esta es la fase del subsistema. A diferencia de los componentes, los subsistemas se pueden montar y probar.
Por lo tanto, se puede enseñar a la canalización a ensamblar un sistema a partir de subsistemas poco vinculados en los casos en que todo el sistema deba liberarse en su conjunto. Esta es la fase del sistema.
Desaconsejamos este modelo, en el que varios subsistemas se montan en uno solo. Puedes ver un ejemplo en la figura 3.

Este enfoque de "todo o nada" hace que el subsistema más rápido vaya a la velocidad del más lento. "La cadena es tan fuerte como su eslabón más débil" es un cliché que utilizamos para advertir a los equipos que son víctimas de este patrón arquitectónico.
Una vez validado, el sistema ensamblado pasa a la producción sin ninguna modificación adicional, en la fase final, denominada "fase de producción".
Ten en cuenta que estas fases son más lógicas que físicas y se crearon solo para dividir un problema grande en varios subproblemas más pequeños. Es posible que tenga menos fases o más, según tu arquitectura y tus requisitos.
La velocidad sin calidad es inútil para nuestros clientes. Las pruebas continuas son una técnica en la que las pruebas automatizadas se integran con la canalización de entrega de software y validan todos los cambios que se producen a través de ella. Las pruebas se ejecutan en cada fase de la canalización para validar los artefactos producidos en esa fase. Las pruebas unitarias y el análisis de código estático validan los componentes en la fase de componentes de la canalización. Las pruebas funcionales, de rendimiento y de seguridad validan los subsistemas en la fase de subsistema. Las pruebas de integración, rendimiento y seguridad validan los sistemas en la fase de sistema. Finalmente, las pruebas de humo validan el producto en la fase de producción.
Las pruebas automatizadas se integran con la canalización
Una arquitectura monolítica o una gran bola de lodo puede provocar una avalancha de pruebas. Recomendamos invertir en microservicios, como artefactos que puedan implementarse de forma independiente y circular por las canalizaciones sin necesitar un entorno altamente integrado para la certificación. Asimismo, los artefactos que pueden implementarse de forma independiente permiten que los equipos más lentos no ralenticen a los equipos más rápidos.
Las pruebas automatizadas se integran con la canalización
Una arquitectura monolítica o una gran bola de lodo puede provocar una avalancha de pruebas. Recomendamos invertir en microservicios, como artefactos que puedan implementarse de forma independiente y circular por las canalizaciones sin necesitar un entorno altamente integrado para la certificación. Asimismo, los artefactos que pueden implementarse de forma independiente permiten que los equipos más lentos no ralenticen a los equipos más rápidos.
El valor de la entrega continua
La canalización de entrega de software es un producto por sí mismo que debe ser prioritario para la empresa; de lo contrario, no se deben enviar productos que generen ingresos a través de ella. La entrega continua aporta valor de tres maneras, ya que mejora la velocidad, la productividad y la sostenibilidad de los equipos de desarrollo de software.
Velocidad
Cuando las tareas tediosas, como enviar una solicitud por cada cambio que pasa a producción, pueden realizarlas las canalizaciones en lugar de las personas, se produce un aumento en la productividad. De esta forma, los equipos de scrum pueden centrarse en productos que sorprendan a la gente, en lugar de tener que invertir su energía en los aspectos logísticos. Además, hace que los miembros del equipo estén más contentos y comprometidos con su trabajo y que quieran permanecer más tiempo en él.
Productividad
Cuando las tareas tediosas, como enviar una solicitud por cada cambio que pasa a producción, pueden realizarlas las canalizaciones en lugar de las personas, se produce un aumento en la productividad. De esta forma, los equipos de scrum pueden centrarse en productos que sorprendan a la gente, en lugar de tener que invertir su energía en los aspectos logísticos. Además, hace que los miembros del equipo estén más contentos y comprometidos con su trabajo y que quieran permanecer más tiempo en él.

Sostenibilidad
La sostenibilidad es la clave de todos los negocios, no solo del tecnológico. La afirmación de que el software se está tragando al mundo ya no es cierta: el software ya se ha tragado al mundo por completo. Todas las empresas, en mayor o menor instancia, ya sean sanitarias, financieras, de comercio minorista o de otros sectores, usan la tecnología para destacar entre la competencia y superarla tácticamente. La automatización ayuda a reducir y a eliminar las tareas manuales repetitivas y propensas a errores, lo que permite a las empresas colocarse en una posición en la que pueden innovar para satisfacer las necesidades de sus clientes mejor y más rápido.
Velocidad
Cuando las tareas tediosas, como enviar una solicitud por cada cambio que pasa a producción, pueden realizarlas las canalizaciones en lugar de las personas, se produce un aumento en la productividad. De esta forma, los equipos de scrum pueden centrarse en productos que sorprendan a la gente, en lugar de tener que invertir su energía en los aspectos logísticos. Además, hace que los miembros del equipo estén más contentos y comprometidos con su trabajo y que quieran permanecer más tiempo en él.
Productividad
Cuando las tareas tediosas, como enviar una solicitud por cada cambio que pasa a producción, pueden realizarlas las canalizaciones en lugar de las personas, se produce un aumento en la productividad. De esta forma, los equipos de scrum pueden centrarse en productos que sorprendan a la gente, en lugar de tener que invertir su energía en los aspectos logísticos. Además, hace que los miembros del equipo estén más contentos y comprometidos con su trabajo y que quieran permanecer más tiempo en él.

Sostenibilidad
La sostenibilidad es la clave de todos los negocios, no solo del tecnológico. La afirmación de que el software se está tragando al mundo ya no es cierta: el software ya se ha tragado al mundo por completo. Todas las empresas, en mayor o menor instancia, ya sean sanitarias, financieras, de comercio minorista o de otros sectores, usan la tecnología para destacar entre la competencia y superarla tácticamente. La automatización ayuda a reducir y a eliminar las tareas manuales repetitivas y propensas a errores, lo que permite a las empresas colocarse en una posición en la que pueden innovar para satisfacer las necesidades de sus clientes mejor y más rápido.
¿Quién debe adoptar la entrega continua y cuándo?
Si te preguntas cuándo es un buen momento para adoptar la entrega continua, la respuesta es fácil: ayer.
Los equipos necesitan un único backlog priorizado donde:
- 1
Se haya adoptado la entrega continua en lugar de quedar relegada a un segundo plano.
- 2
Los criterios de aceptación de las historias de usuario mencionen de forma explícita enfoques de entrega de software automatizada en lugar de manual.
- 3
La definición de "terminado" del sprint impida que los equipos finalicen sprints si el producto se lanza manualmente.
La entrega continua es lo correcto y, en ocasiones, se requieren campeones para impulsar la transformación. Con el tiempo, cuando se diseñan correctamente, las canalizaciones de entrega continua se amortizan solos.
Entonces, ¿quién está involucrado?
Algunas organizaciones contrataron a personas sin experiencia para diseñar e implementar canalizaciones de entrega continua y, por las malas, aprendieron que esto implicaba una gran complejidad. El nombramiento de miembros subalternos envía una señal equivocada a los equipos e implica que la entrega continua tiene una prioridad baja. Recomendamos encarecidamente poner a cargo a un arquitecto sénior que tenga un profundo aprecio por la tecnología y los negocios.
Más allá de la entrega continua
Independientemente de en qué parte de la transformación al método "continuous Everything" (integración, realización de pruebas, entrega, implementación o análisis) nos encontramos, esto no se trata de una checklist ni de un destino: la mejora continua es el centro de estas actividades.
Tarde o temprano, todos en la organización reciben una llamada cuando se están construyendo canalizaciones de entrega continua. Ejecutivos, personal de ingeniería, de gestión de productos, de control, de riesgo, de conformidad, de InfoSec, de operaciones, del departamento legal y de todo lo que tengas. Las canalizaciones abren paso entre unidades aisladas y derriban los muros. De un modo u otro, todos formamos parte de esta transformación y continuamente constituimos la nueva normalidad.
Primeros pasos de IC y EC
Para practicar la CI/CD, puedes usar herramientas que automatizan el desarrollo, la implementación y las pruebas. Algunas herramientas ofrecen integración, otras proporcionan desarrollo e implementación, mientras que otras ofrecen pruebas.
Atlassian ofrece una Open DevOps Solution que proporciona procesos de DevOps de extremo a extremo, incluida la CI/CD. Los equipos pueden usar numerosas herramientas de CI/CD, incluida Bitbucket Pipelines, un servicio de CI/CD integrado en Bitbucket. Te permite compilar, probar e incluso implementar tu código automáticamente en función de un archivo de configuración de tu repositorio. Open DevOps también se integra con otras herramientas de CI/CD, como Harness, GitLab, JFrog, Codefresh y CircleCI.
He aquí un análisis más detallado de nuestras integraciones de Open DevOps. Asegúrate de consultar nuestros tutoriales de CI/CD de DevOps.
