Entrega Continua
Fondo negro y azul
¿Qué es la entrega continua?

Una introducción al pipeline de entrega continua, incluidas las mejores prácticas, los beneficios y las importantes herramientas de CD.

La entrega continua permite a los equipos de desarrollo automatizar el proceso que mueve el software a través del ciclo de vida del desarrollo de software, y puede proporcionar muchos beneficios al suministrar una caja de herramientas integrada, que incluye  lo siguiente:

  • Reducción del tiempo de implementación mediante pruebas y desarrollo continuos.
  • Disminución de los costos asociados al desarrollo de software tradicional.
  • Escalado del desarrollo de software según el tamaño del proyecto.
  • Implementación automática del código en cada fase del ciclo de desarrollo.

En el siguiente video, Eric Minick ofrece una explicación más extensa sobre la entrega continua:


Las mejores prácticas

Lo que sigue es un conjunto demejores prácticas que deben tenerse en cuenta al utilizar la entrega continua:

  • Haga que todos los cambios puedan lanzarse: Si usa la entrega continua para hacer que todos los cambios se puedan lanzar, debe incluir documentación de usuario, runbooks de operaciones e información sobre los cambios, con fines de auditoría.
  • Adopte el desarrollo basado en troncales: La entrega continua se basa en la integración continua. En la medida de lo posible, evite las ramificaciones que retrasan la integración, de modo que cada cambio se cree, pruebe e implemente en conjunto para obtener la retroalimentación más rápida.
  • Entregue a través de un pipeline automatizado: Para implementar con éxito la entrega continua, necesita un pipeline de entrega automatizado y bien construido para garantizar que todas las versiones de su código se trasladen a sus entornos de prueba y producción de manera coherente.
  • Automatice lo más que pueda: En la entrega continua, debe automatizar todos los procesos que pueda en el ciclo de vida de desarrollo de su software para crear un pipeline de entrega bueno y confiable, no solo para las compilaciones e implementaciones de código, sino también para la creación de nuevos entornos de desarrollo.
  • Aspire a eliminar el tiempo de inactividad: Para garantizar la disponibilidad de la aplicación mientras realiza actualizaciones frecuentes de entrega continua, cuando envía una nueva función a producción, debe primero validarla antes de implementarla en la instancia pública de la aplicación en ejecución.
  • Lanzamiento en la granularidad de la prueba: Si dos partes de un sistema deben probarse juntas, deben lanzarse juntas para que sepa que las partes de su sistema son compatibles. Las herramientas de automatización de lanzamiento son buenas para coordinar este tipo de entrega. Como alternativa, desacople completamente.

Marco/pipeline continuo

Para aprovechar los beneficios de la entrega continua, necesita otros elementos del marco continuo, como la exploración continua, la integración continua, la implementación continua y el lanzamiento a pedido.

Cuando utiliza etapas del pipeline de entrega continua, debe dividirlas en trabajos separados, que son unidades de ejecución dentro de una etapa:

  • Trabajos de compilación: Recopile su proyecto en el trabajo de compilación para prepararlo para la implementación, donde genera artefactos que puede enviar a un directorio de archivos de compilación.
  • Trabajos de implementación: Suba su proyecto a su pipeline de entrega continua como una aplicación a la que puede acceder desde una URL. Después de implementar su proyecto, lo puede ver en su panel de control.
  • Trabajos de prueba: Personalice e incluya trabajos de prueba antes o después de sus trabajos de compilación e implementación según su conjunto de pruebas unitarias o pruebas funcionales con servicios de prueba de terceros.

Las siguientes son algunas de las cosas que el pipeline de entrega continua lo ayudará a hacer:

  • Automatizar las compilaciones, las pruebas unitarias y la implementación.
  • Editar y enviar código mediante el uso de repositorios de Git, el seguimiento de problemas y su IDE (entorno de desarrollo integrado) basado en la web.
  • Crear una caja de herramientas deDevOps integrada para crear, implementar y gestionar sus aplicaciones con sus servicios, herramientas de código abierto y herramientas de terceros.
  • Editar su código desde cualquier lugar que elija para usar su IDE para crear, editar, ejecutar, depurar y completar tareas de control de fuente.
  • Utilizar su pipeline automatizado para entregar continuamente compilaciones, pruebas e implementaciones de manera repetible.
  • Mejorar la calidad al comprender el estado de su compilación, los resultados del análisis de seguridad, la cobertura del código y la cobertura de la prueba para que pueda evaluar si debe promover su aplicación al siguiente entorno (a través de las puertas de las políticas para garantizar automáticamente la calidad antes de la promoción).

Implementación continua frente a entrega continua

La implementación continua puede ser parte de un pipeline de entrega continua. Específicamente, la entrega continua es el movimiento automatizado de código a lo largo del ciclo de vida del desarrollo (a veces llamado ciclo de vida de la entrega); la implementación continua es el movimiento automatizado de ese código a la producción, una vez que pasa las pruebas automatizadas requeridas.

El hecho de que la implementación continua sea parte de su pipeline de entrega depende de las necesidades de su negocio. Si la empresa necesita que el equipo de entrega lance software nuevo o actualizado a producción de manera repetida, confiable o lo más rápido posible, o si la solución tiene múltiples dependencias, es probable que se beneficie de la implementación continua.

Para obtener más información sobre las diferencias entre la implementación continua y la entrega continua, vea este video:


Herramientas

Una herramienta de entrega continua le permite utilizar herramientas de código abierto para crear, implementar y gestionar sus aplicaciones. Al integrar conjuntos de herramientas, puede crear tareas repetibles y manejables, no solo para su equipo de desarrollo sino también para su equipo de operaciones.

Su caja de herramientas puede incluir sus servicios en la nube actuales, herramientas de código abierto y herramientas de terceros, pero también necesitará considerar una herramienta de entrega continua que incluya lo siguiente:

  • Plantillas repetibles para la automatización de la compilación y la implementación. Si funciona para una de sus aplicaciones, debería funcionar para las demás. No permita que cada equipo lidie solo con la configuración.
  • Un pipeline para que pueda compilar automáticamente al impulsar cambios, implementar en su nube, incorporar compilaciones e implementaciones en sus cadenas de herramientas y gestionar implementaciones en toda su cadena de herramientas.
  • Herramientas para la colaboración en equipo, la planificación, la gestión de código fuente y las pruebas.
  • Instrumentación que expone dónde se mueve su equipo rápidamente y dónde se estancan las cosas, proporcionando una guía para volverse "más continuo".

Las herramientas de entrega continua de código abierto que puede utilizar para un sólido pipeline de entrega continua incluyen:

  • Jenkins
  • Concourse CI
  • Spinnaker
  • Travis CI
  • GoCD
  • GitLab CI

Agile y DevOps

Entrega continua de Agile

Anteriormente, lanzaba el software una sola vez y luego lo actualizaba. Luego, solo consultaba a los clientes al principio y al final para verificar si el software satisfacía sus necesidades.

Agile es una forma de producir software en iteraciones cortas en un cronograma de entrega continua, y el proceso ágil de entrega continua de hoy significa que puede entregar el código al cliente a medida que cada característica definida esté disponible. El desarrollo ágil y la entrega continua son las claves para hacer llegar las funciones al cliente apenas estén listas para la producción. Su objetivo es tener todas las funciones listas para su lanzamiento a medida que salen del pipeline.

Obtenga más información sobre las ventajas de los principios Agile.

DevOps y entrega continua

En las últimas dos décadas, el desarrollo de software ha experimentado cambios significativos, ya que pasó del concepto de cascada estándar a la metodología Agile más eficiente. Para adaptarse, debe cambiar a un enfoque centrado en la metodología Agile, DevOps y la entrega continua. Como parte de un pipeline de entrega continua, estos procesos enfocados permiten lanzamientos y actualizaciones de software más confiables y de alta calidad.

A medida que realice lanzamientos de software más rápidos y pequeños a través del desarrollo ágil, su enfoque se volverá más estricto en las etapas individuales del desarrollo de software. Al mismo tiempo, DevOps mantiene su mente enfocada en el "panorama mayor" y el cambio cultural a medida que el desarrollo y las operaciones se fusionan estrechamente en un equipo que trabaja en todo el ciclo de vida del desarrollo de software, desde la codificación hasta las pruebas, la implementación y el soporte.

Para un examen más detenido del proceso de DevOps, consulte "DevOps: Guía esencial" y el siguiente video:


Entrega continua e IBM Cloud

La capacidad de aprovisionar rápidamente una cadena de herramientas integrada con plantillas personalizables y compartibles ayuda a automatizar las compilaciones y las pruebas y a aumentar el control de calidad. Puede hacerlo con herramientas de IBM, así como integraciones con terceros y plugins de código abierto. Los procesos y herramientas de IBM pueden ayudarlo con una de las iniciativas de DevOps más complejas que enfrentan las organizaciones: crear y modernizar aplicaciones en el proceso de tránsito a la nube.

Dé el siguiente paso:

  • Cree cajas de herramientas orientadas a DevOps que respalden sus tareas de entrega de aplicaciones con IBM Cloud Continuous Delivery.
  • Comience a acelerar el proceso de creación, integración e implementación, incluso de aplicaciones complejas, con la ayuda de IBM UrbanCode.
  • Explore la automatización de implementación y entrega continua con laherramienta de lanzamiento de aplicacionesIBM UrbanCode Deploy.
  • Entregue aplicaciones nativas de la nube a través de múltiples proveedores de nube o sistemas locales, monitoreados por un tablero integrado, con Tekton en IBM Cloud.
  • ¿Recién empieza con DevOps? Cree una cadena de herramientas de implementación simple siguiendo este tutorial.

Empiece con una cuenta de IBM Cloud hoy mismo.


Soluciones relacionadas

IBM Cloud Continuous Delivery

IBM Continuous Delivery es un servicio de nube que ayuda a suministrar cadenas de herramientas, automatizar compilaciones y pruebas, y controlar la calidad con analítica.


IBM UrbanCode

La familia de productos de software IBM UrbanCode lo ayuda a entregar software al mercado más rápidamente al acelerar la entrega de aplicaciones y reducir los procesos manuales.


Tekton on IBM Cloud

Cree pipelines de CI/CD nativos de Kubernetes con máxima velocidad y flexibilidad.