Informe Técnico. GA5-220501121-AA2-EV01-FERNANDO RAVELO

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

Informe técnico. GA5-220501121-AA2-EV01.

FERNANDO RAVELO LIZARAZO

Servicio Nacional de Aprendizaje-SENA

Programación de Aplicaciones y Servicios para la Nube

24 de agosto 2022
Introducción
Cada vez son más las organizaciones que se benefician al adoptar la
integración continua y la entrega continua, conocidas como CI/CD, como un
elemento clave para darle agilidad, velocidad y mayor calidad al software que
transforma las empresas.

Adoptamos CI/CD para entregar software más rápido, más frecuentemente y


con menos errores.

En algunos casos es posible que los miembros más antiguos del equipo de
trabajo se resistan a la adopción de CI/CD en el flujo de trabajo, pues la
necesidad de reorganizar algunos roles, de utilizar nuevas herramientas y de
poner al descubierto debilidades técnicas llevan a que se perciba el cambio
como una amenaza.

Por esta razón es fundamental definir desde el inicio del proyecto la forma en
que la metodología CI/CD puede beneficiar al equipo, teniendo claridad
respecto a cuáles serán las acciones, responsabilidades y funciones de cada
uno de los integrantes del mismo.

A través de la metodología CI/CD el equipo tiene completo control del


proceso de desarrollo y producción, probando e integrando cambios para
verificar que todo funcione correctamente. De esta forma es posible
identificar fácilmente cualquier error que impida su funcionamiento correcto.
integración continua
La integración continua es una práctica de desarrollo de software mediante la
cual los desarrolladores combinan los cambios en el código en un repositorio
central de forma periódica, tras lo cual se ejecutan versiones y pruebas
automáticas. La integración continua se refiere en su mayoría a la fase de
creación o integración del proceso de publicación de software y conlleva un
componente de automatización (p. ej., CI o servicio de versiones) y un
componente cultural (p. ej., aprender a integrar con frecuencia). Los
objetivos clave de la integración continua consisten en encontrar y arreglar
errores con mayor rapidez, mejorar la calidad del software y reducir el
tiempo que se tarda en validar y publicar nuevas actualizaciones de software.
¿Por qué es necesaria la integración continua?
Anteriormente, era común que los desarrolladores de un equipo trabajasen
aislados durante un largo periodo de tiempo y solo intentasen combinar los
cambios en la versión maestra una vez que habían completado el trabajo.
Como consecuencia, la combinación de los cambios en el código resultaba
difícil y ardua, además de dar lugar a la acumulación de errores durante
mucho tiempo que no se corregían. Estos factores hacían que resultase más
difícil proporcionar las actualizaciones a los clientes con rapidez.
¿En qué consiste la integración continua?
Con la integración continua, los desarrolladores envían los cambios de forma
periódica a un repositorio compartido con un sistema de control de versiones
como Git. Antes de cada envío, los desarrolladores pueden elegir ejecutar
pruebas de unidad local en el código como medida de verificación adicional
antes de la integración. Un servicio de integración continua crea y ejecuta
automáticamente pruebas de unidad en los nuevos cambios realizados en el
código para identificar inmediatamente cualquier error.
La integración continua se refiere a la fase de creación y pruebas de unidad
del proceso de publicación de software. Cada revisión enviada activa
automáticamente la creación y las pruebas.

Con la entrega continua, se crean, prueban y preparan automáticamente los


cambios en el código y se entregan para la fase de producción. La entrega
continua amplía la integración continua al implementar todos los cambios en
el código en un entorno de pruebas y/o de producción después de la fase de
creación.

Beneficios de la integración continua

Mejore la productividad de desarrollo


La integración continua mejora la productividad del equipo al liberar a los
desarrolladores de las tareas manuales y fomentar comportamientos que
ayudan a reducir la cantidad de errores y bugs enviados a los clientes.

Encuentre y arregle los errores con mayor rapidez


Gracias a la realización de pruebas más frecuentes, el equipo puede descubrir
y arreglar los errores antes de que se conviertan en problemas más graves.
Entregue las actualizaciones con mayor rapidez
La integración continua le permite a su equipo entregar actualizaciones a los
clientes con mayor rapidez y frecuencia.

Ventajas
A continuación, se indican algunas de las ventajas más notables que
proporciona la integración continua:

 Progreso continuo y demostrado para mejorar la retroalimentación


 Detección temprana y mejorada de errores, y métricas que le
permiten abordar los errores a tiempo, a veces tras solo unos minutos
de la incorporación
 Mejor colaboración en equipo; todos los miembros del equipo
pueden cambiar el código, integrar el sistema y determinar
rápidamente los conflictos con otras partes del software
 Integración mejorada del sistema, lo que reduce las sorpresas al final
del ciclo de vida del desarrollo de software
 Menos cambios paralelos para la fusión y prueba
 Número reducido de errores durante las pruebas del sistema
 Sistemas actualizados constantemente en los que realizar las pruebas

CI, Agile y DevOps


Agile

Agile es una práctica de desarrollo de software que mejora la forma que


tienen los equipos de desarrollo de software de organizarse, adaptarse a los
cambios en los requisitos y lanzar software. Puesto que la integración
continua y el desarrollo ágil comparten muchas características (por ejemplo,
la automatización de pruebas), resulta útil comentar ambos métodos al
mismo tiempo. Agile organiza el desarrollo en grupos más pequeños de
trabajo o sprints. Cuando se aplica en DevOps, estas prácticas combinadas
ayudan a garantizar la calidad del software y la flexibilidad del proyecto.

La integración continua requiere que se integre el trabajo con frecuencia, a


menudo muchas veces al día. Verifique la integración mediante una
compilación automatizada que detecte los errores de integración lo antes
posible. La compilación debe incluir pruebas de ejecución como parte de la
verificación. La ampliación de las pruebas rápidas a las pruebas de tiempo de
tiempo de ejecución en un entorno de pruebas automatizado conduce
naturalmente hacia la entrega continua.

Agile también es iterativo y se adapta a los cambios para poder escalar y


desarrollar las soluciones a lo largo del tiempo. En el contexto de la
integración continua, el desarrollo de software ágil se basa en la entrega de
iteraciones de software basadas en cómo se prioriza el valor de las
características a medida que se integra de forma continua.

DevOps

En la infraestructura de DevOps, la integración continua se encuentra al


principio del proceso de desarrollo de software, donde se verifica el código al
menos una vez al día para evitar que las copias locales se alejen demasiado
de la rama principal de la compilación de código. Esto le ayuda a evitar
conflictos de fusión desastrosos que podrían "romper" la compilación y
tomar al equipo horas o días para resolver.

La integración continua sirve como requisito previo para las etapas de


prueba, implementación y lanzamiento de la entrega continua. Todo el
equipo de desarrollo sabrá si ha creado algún código incorrecto tan solo unos
minutos después de haberlo incorporado, ya que el servicio de integración
continua crea y prueba automáticamente los cambios de código en busca de
cualquier error.

Herramientas de integración continua de código abierto


Las siguientes son algunas de las herramientas de integración continua más
populares:

 Jenkins: Jenkins, una herramienta de integración continua de código


abierto ampliamente utilizada, permite a los desarrolladores crear,
integrar y probar automáticamente código tan pronto como lo
confirmen en el repositorio de origen, lo que facilita a los
desarrolladores detectar los errores a tiempo e implementar el
software más rápido. El plug-in de docker está disponible en Jenkins.
 Buildbot: Buildbot puede automatizar todos los aspectos del ciclo de
desarrollo de software. Como sistema de planificación de trabajos,
pone en cola y ejecuta trabajos e informa de los resultados.
 Go: Go destaca entre los demás por el concepto de líneas de trabajo,
que facilitan el modelado de flujos de trabajo de compilación
complejos.
 IBM UrbanCode Build
 Travis CI: Una de las soluciones alojadas más antiguas y de mayor
confianza, también está disponible en una versión local para la
empresa.
 GitLab CI: Parte integral del proyecto Rails de código abierto, GitLab
CI es un servicio alojado gratuito que proporciona una gestión
detallada del repositorio git con funciones como control de acceso,
seguimiento de problemas, revisiones de código y más.

La realización de una integración continua con herramientas de código


abierto ofrece muchas ventajas, incluyendo las siguientes:

 Cientos de plug-ins que pueden dar soporte al proyecto


 Amplio soporte para lenguajes de código abierto, como Python, Java y
JavaScript
 De forma gratuita, proporciona a los estudiantes, startups y
desarrolladores una poderosa herramienta que no pesa en el
presupuesto
 Personalización, lo que permite a los desarrolladores tomar la base de
una herramienta de CI y crear en ella para adaptarse a las
necesidades
 La capacidad de modificar y redistribuir las herramientas.

Caso de uso
El siguiente caso de uso hipotético ilustra cómo dos desarrolladores de
software pueden utilizar la integración continua para mejorar su proceso de
DevOps.

Los dos desarrolladores deben comunicarse entre sí sobre qué características


funcionan y cómo. Este pequeño equipo necesita actualizaciones regulares y
debe ser capaz de integrar y probar su código como un todo. Planificar la
incorporación y las pruebas del código requiere mucho tiempo de desarrollo.
Se necesita un sistema automático para la integración continua.

Negociar cuándo sucederían estas combinaciones y pruebas consumiría


mucho tiempo para los desarrolladores.

Para ello, tendrían que estar de acuerdo en lo siguiente:

1. Cuándo empezar a probar la integración de código


2. Cómo probar que la integración ha sido satisfactoria
3. Cómo comunicar los resultados al equipo

Las plataformas de integración continua tienen respuestas predeterminadas


para estas preguntas y la mayoría permite configuración y ajustes.

Normalmente, en las plataformas de CI como Jenkins, se comienzan las


pruebas de integración durante la incorporación. Cuando se verifica el nuevo
código, el sistema de CI ejecuta un conjunto de pruebas, que pueden incluir
pruebas de unidad y pruebas de regresión y, a continuación, determina si el
código se ha integrado satisfactoriamente.

O, si utiliza un lenguaje compilado, la prueba predeterminada será verificar si


el código se compila satisfactoriamente. Si no es así, significa que el nuevo
código ha roto la compilación. Para lenguajes como Python o JavaScript, debe
crear su propia prueba de integración.
Sea como sea, la mayoría de los sistemas de CI registran los intentos de
integración, la tasa de éxito y otras métricas.

Servidores
Un servidor de integración continua es una herramienta de software que
centraliza todas sus operaciones de integración continua y proporciona una
plataforma fiable y estable para que pueda crear sus proyectos. Puede
configurar y ajustar servidores de CI para crear varios proyectos para
distintas plataformas. Un servidor de integración continua modela y visualiza
fácilmente flujos de trabajo complejos (lo que permite la entrega continua) y
proporciona una interfaz intuitiva para crear interconexiones de entrega
continua. Un servidor de integración continua ofrece la posibilidad de hacer
lo siguiente:

 Ejecutar compilaciones, pruebas y lanzamientos automáticos en un


solo lugar
 Implementar cualquier versión, en cualquier momento
 Mantener un orden de configuración
 Admitir plugins para mejorar la funcionalidad
 Supervisar el repositorio del proyecto
 Extraer cambios y realizar tareas que ha definido para un compromiso
satisfactorio
 Enviar comentarios a los miembros del proyecto relevantes con
detalles de la compilación.

Las mejores prácticas


El proceso de integración continua es un componente crítico de DevOps, que
le ayuda a unificar sus equipos de desarrollo y operaciones en un repositorio
compartido para la codificación, prueba, implementación y soporte de
software. Las siguientes son algunas de las mejores prácticas de CI que
pueden ayudarle a tener éxito:

 Mantener un único repositorio de código fuente: utilice la gestión de


control de origen para realizar el seguimiento y controlar todos los
archivos para crear un producto. Esta base de código consolidada
facilita la distribución y la visibilidad.
 Automatizar la compilación: esto implica compilar, enlazar y realizar
otros procesos que producen los artefactos de compilación. Las
autopruebas también deben automatizarse.
 Utilizar confirmaciones diarias de la secuencia principal: forzar a los
desarrolladores a confirmar sus cambios en la secuencia de desarrollo
principal al menos una vez al día. Cada desarrollador debe verificar
que su copia funcional sea consistente con la secuencia de desarrollo
principal.
 Probar en un clon del entorno de producción: haga que el entorno
de prueba sea lo más parecido posible a su entorno de producción
final.
 Automatizar la implementación: implemente varios entornos
(desarrollo, integración, producción) para ejecutar compilaciones y
pruebas.

Entrega continua
La entrega continua es una práctica de desarrollo de software mediante la
cual se preparan automáticamente los cambios en el código y se entregan a
la fase de producción. Fundamental para el desarrollo de aplicaciones
modernas, la entrega continua amplia la integración continua al implementar
todos los cambios en el código en un entorno de pruebas o de producción
después de la fase de compilación. Cuando la entrega continua se
implementa de manera adecuada, los desarrolladores dispondrán siempre de
un artefacto listo para su implementación que se ha sometido a un proceso
de pruebas estandarizado.

La entrega continua permite a los desarrolladores automatizar las pruebas


más allá de las pruebas de unidades, por lo que pueden verificar
actualizaciones en las aplicaciones en varias dimensiones antes de enviarlas a
los clientes. Las pruebas pueden incluir pruebas de la UI, de carga, de
integración, de fiabilidad de la API, etc. De este modo, los desarrolladores
pueden validar las actualizaciones de forma más exhaustiva y descubrir
problemas por anticipado. Con la nube, resulta sencillo y rentable
automatizar la creación y replicación de varios entornos de pruebas, algo que
anteriormente era complicado en las instalaciones.
Entrega continua e implementación continua
Con la entrega continua, todos los cambios en el código se crean, se prueban
y se envían a un entorno de almacenamiento o pruebas de no producción.
Pueden efectuarse varias pruebas al mismo tiempo antes de la
implementación en producción. La diferencia entre la entrega continua y la
implementación continua es la diferencia de aprobación manual para
actualizar la producción. Con la implementación continua, la producción
tiene lugar de manera automática, sin aprobación explícita.

Beneficios de la entrega continua

Automatice el proceso de publicación de software


La entrega continua permite al equipo crear, probar y preparar
automáticamente los cambios en el código para su envío a producción, con lo
que se mejora la eficacia y rapidez de la entrega de software.

Mejore la productividad de desarrollo


Estas prácticas mejoran la productividad del equipo al liberar a los
desarrolladores de las tareas manuales y fomentar comportamientos que
ayudan a reducir la cantidad de errores y bugs enviados a los clientes.
Encuentre y arregle los errores con mayor rapidez
Su equipo puede descubrir y arreglar los errores antes de que se conviertan
en problemas más graves gracias a las pruebas más frecuentes y exhaustivas.
La entrega continua le permite realizar tipos de pruebas adicionales en el
código con facilidad, ya que todo el proceso se ha automatizado.

Entregue las actualizaciones con mayor rapidez


La entrega continua le permite a su equipo entregar actualizaciones a los
clientes con mayor rapidez y frecuencia. Cuando se la entrega continua se
implementa de manera adecuada, dispondrá siempre de un artefacto listo
para su implementación que se ha sometido a un proceso de pruebas
estandarizado.

Mejores prácticas
A continuación, se incluye un conjunto de prácticas recomendadas que
se deben tener en cuenta al utilizar la entrega continua:
 Haga que todos los cambios sean liberables: si usa la entrega
continua para hacer que todos los cambios sean liberables, debe
incluir documentación de usuario, runbooks de operaciones e
información sobre lo que ha cambiado, con fines de auditoría.
 Adopte el desarrollo basado en troncos: la entrega continua se basa
en la integración continua . Evite las ramificaciones que retrasan la
integración tanto como sea posible para que cada cambio se
construya, pruebe e implemente juntos para obtener la
retroalimentación más rápida.
 Entregue a través de una canalización automatizada: para
implementar con éxito la entrega continua, necesita una canalización
de entrega automatizada bien construida para garantizar que todos
los lanzamientos de código se muevan a sus entornos de prueba y
producción de manera consistente.
 Automatice tanto como sea posible: en la entrega continua, debe
automatizar tantos procesos como sea posible en su ciclo de vida de
desarrollo de software para crear una canalización de entrega buena
y confiable, no solo para compilaciones e implementaciones de
código, sino también para la creación de nuevos entornos de
desarrollo.
 Apunte a no tener tiempo de inactividad: para garantizar la
disponibilidad de la aplicación mientras realiza actualizaciones de
entrega continuas y frecuentes, cuando envía una nueva función a
producción, primero debe validarla antes de implementarla en la
instancia de aplicación de ejecución pública.
 Lanzamiento en la granularidad de la prueba: si dos partes de un
sistema deben probarse juntas, deben publicarse juntas para que
sepa que las partes de su sistema son compatibles. Las herramientas
de automatización de lanzamientos son buenas para coordinar este
tipo de entrega. Alternativamente, desacople completamente.

Tubería/marco continuo
Para aprovechar los beneficios de la entrega continua, necesita otros
elementos del marco continuo, como exploración continua, integración
continua, implementación continua y lanzamiento bajo demanda.
Cuando usa etapas de canalización de entrega continua, debe dividirlas en
trabajos separados, que son unidades de ejecución dentro de una etapa:

 Trabajos de compilación : compile su proyecto en el trabajo de


compilación para prepararlo para la implementación, donde genera
artefactos que puede enviar a un directorio de archivo de
compilación.
 Implementar trabajos : suba su proyecto a su canalización de entrega
continua como una aplicación a la que puede acceder desde una
URL. Después de implementar su proyecto, lo ve en su tablero.
 Trabajos de prueba : personalice e incluya trabajos de prueba antes o
después de crear e implementar trabajos en función de su conjunto
de pruebas unitarias o pruebas funcionales con servicios de prueba
de terceros.

Las siguientes son algunas de las cosas que la canalización de entrega


continua le ayudará a hacer:

 Automatice compilaciones, pruebas unitarias e implementación


 Edite e inserte código mediante el uso de repositorios de Git,
seguimiento de problemas y su IDE (entorno de desarrollo integrado)
basado en la web
 Cree una caja de herramientas DevOps integrada para crear,
implementar y administrar sus aplicaciones con sus servicios,
herramientas de código abierto y herramientas de terceros
 Edite su código desde cualquier lugar que elija para usar su IDE para
crear, editar, ejecutar, depurar y completar tareas de control de
código fuente
 Use su canalización automatizada para entregar continuamente
compilaciones, pruebas e implementaciones de manera repetible
 Mejore la calidad mediante la comprensión del estado de
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
promociona su aplicación al siguiente entorno (a través de puertas de
políticas para garantizar automáticamente la calidad antes de la
promoción).
Instrumentos
Una herramienta de entrega continua le permite utilizar herramientas de
código abierto para crear, implementar y administrar 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
querrá considerar una herramienta de entrega continua que incluya lo
siguiente:

 Plantillas repetibles para la automatización de compilación e


implementación. Si funciona para una de sus aplicaciones, debería
funcionar para otras. No permita que todos los equipos tengan
problemas con la configuración.
 Una canalización para que pueda compilar automáticamente al enviar
cambios, implementar en su nube, incorporar compilaciones e
implementaciones en sus cadenas de herramientas y administrar
implementaciones en toda su cadena de herramientas.
 Herramientas para la colaboración en equipo, la planificación, la
gestión del código fuente y las pruebas.
 Instrumentación que expone hacia dónde se mueve rápidamente su
equipo 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 usar para
una sólida canalización de entrega continua incluyen:

 Jenkins
 Concurso CI
 Espinaquer
 Travis CI
 GoCD
 CI de GitLab
Ágil y DevOps

Entrega continua ágil

Anteriormente, solo lanzaba el software una vez y luego lo


actualizaba. Entonces solo consultaría a los clientes al principio y al final para
ver si el software satisface sus necesidades.

Agile es una forma de producir software en iteraciones cortas en un


programa de entrega continua, y el proceso ágil de entrega continua de hoy
significa que puede liberar código al cliente a medida que cada función
definida esté disponible. El desarrollo ágil y la entrega continua son las claves
para llevar las funciones al cliente tan pronto como estén listas para la
producción. Su objetivo es tener cada característica lista para su lanzamiento
a medida que sale de la canalización.

Obtenga más información sobre los beneficios de los principios ágiles .

DevOps y entrega continua

En las últimas dos décadas, el desarrollo de software ha experimentado


cambios significativos al pasar del concepto de cascada estándar a la
metodología ágil más eficiente. Para adaptarse, debe cambiar a un enfoque
centrado en ágil, DevOps y entrega continua. Como parte de una canalización
de entrega continua, estos procesos enfocados permiten lanzamientos y
actualizaciones de software más confiables y de alta calidad.

A medida que realiza lanzamientos de software más rápidos y más 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 general" y el cambio cultural a medida
que el desarrollo y las operaciones se fusionan en un solo 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.
conclusión

Si tu organización se esfuerza por cosechar los beneficios de un enfoque de


DevOps o simplemente tiene un equipo de software de varios
desarrolladores, la CI resulta importante. La CI ayudará al equipo de
ingeniería a funcionar de forma más rápida y eficaz.

La CI es un elemento habitual de las organizaciones de desarrollo de software


modernas de alto rendimiento. Las mejores empresas cuentan con pipelines
de IC sólidos y no se lo piensan dos veces a la hora de invertir para ganar
eficacia. Los beneficios de la IC no se limitan al equipo de ingeniería y se
aplican a toda la organización.

También podría gustarte