Antecedentes: cómo funciona el proceso de integración continua

Hoy pasamos a la historia del término, discutimos las dificultades de implementar CI y proporcionamos algunas herramientas populares para ayudarlo a trabajar con él.


/ Flickr / Altug Karakoc / CC BY / Foto modificada

Plazo


Integración continua: un enfoque para el desarrollo de aplicaciones, que implica el ensamblaje frecuente del proyecto y las pruebas de código.

El objetivo es hacer que el proceso de integración sea predecible y detectar posibles errores y errores en una etapa temprana para que haya más tiempo para solucionarlos.

El término Integración continua apareció por primera vez en 1991. Fue introducido por el creador del lenguaje UML, Grady Booch. El ingeniero introdujo el concepto de CI como parte de su propia práctica de desarrollo: el método Butch . Implicaba un refinamiento incremental de la arquitectura en el diseño de sistemas orientados a objetos. Grady no describió ningún requisito para la integración continua. Pero más adelante en su libro " Análisis orientado a objetos y diseño con aplicaciones ", dijo que la tarea de la metodología es acelerar el lanzamiento de "lanzamientos internos".

La historia


En 1996, CI fue adoptada por los creadores de la Metodología de Programación Extrema (XP): Kent Beck y Ron Jeffries . La integración continua se ha convertido en uno de los doce principios clave de su enfoque. Los fundadores de XP aclararon los requisitos para la metodología de CI y señalaron la necesidad de armar el proyecto varias veces al día.

A principios de la década de 2000, Martin Fowler, uno de los fundadores de Agile Alliance, comenzó a promover la metodología de integración continua. Sus experimentos con CI lo llevaron a la primera herramienta de software en la industria: CruiseControl. La utilidad fue creada por un colega de Martin - Matthew Fommel (Matthew Foemmel).
El ciclo de compilación en la herramienta se implementa como un demonio, verificando periódicamente el sistema de control de versiones en busca de cambios en la base del código. La solución se puede descargar hoy: se distribuye bajo una licencia similar a BSD.
Con la llegada del software para CI, cada vez más empresas comenzaron a adoptar la práctica. Según un estudio de Forrester [p. 5 del informe ], en 2009, el 86% de las cincuenta empresas tecnológicas encuestadas utilizaron o implementaron métodos de CI.

Hoy, la integración continua es practicada por organizaciones de una amplia gama de industrias. En 2018, un gran proveedor de la nube realizó una encuesta entre especialistas en TI de empresas de los sectores de servicios, educación y finanzas. De los seis mil encuestados, el 58% dijo que usa herramientas y principios de CI en su trabajo.

Como funciona


La base de la integración continua son dos herramientas: un sistema de control de versiones y un servidor CI. Este último puede ser un dispositivo físico o una máquina virtual en un entorno de nube. Los desarrolladores cargan un nuevo código una o varias veces al día. El servidor CI lo copia automáticamente con todas las dependencias y realiza el ensamblaje. Después: lanza pruebas de integración y unidades. Si las pruebas tienen éxito, el sistema CI despliega el código.

El esquema general del proceso se puede representar de la siguiente manera:



La metodología de CI tiene una serie de requisitos para los desarrolladores:

  • Solucione los problemas de inmediato. Este principio llegó a CI desde la programación extrema. Las correcciones de errores son una prioridad para los desarrolladores.
  • Automatizar procesos. Los desarrolladores y gerentes deben buscar constantemente cuellos de botella en el proceso de integración y eliminarlos. Por ejemplo, las pruebas son a menudo el "cuello de botella" de la integración.
  • Construir tan a menudo como sea posible. Una vez al día para sincronizar el trabajo en equipo.

Dificultades de implementación


El primer problema son los altos costos operativos. Incluso si una empresa utiliza herramientas de CI abiertas (de las que hablaremos más adelante), todavía tendrá que gastar dinero en el soporte de la infraestructura. Sin embargo, la tecnología en la nube puede ser la solución.

Simplifican el ensamblaje de configuraciones de computadora multiescala. Además, las empresas pagan solo por los recursos utilizados, lo que ayuda a ahorrar en infraestructura.

Según las encuestas [p . 14 del artículo ], la integración continua aumenta la carga sobre los empleados de la empresa (al menos por primera vez). Tienen que aprender nuevas herramientas, y los colegas no siempre ayudan con la capacitación. Por lo tanto, debe lidiar con nuevos marcos y servicios sobre la marcha.

La tercera dificultad son los problemas con la automatización. Se enfrenta a organizaciones con una gran cantidad de código heredado que no está cubierto por pruebas automatizadas. Esto lleva al hecho de que el código simplemente se reescribe antes de la implementación completa de CI.


/ Flickr / theilr / CC BY-SA

Quien usa


Una de las primeras ventajas de la metodología fue apreciada por los gigantes de TI. Google ha estado utilizando la integración continua desde mediados de la década de 2000. CI implementado para resolver el problema con retrasos en el motor de búsqueda. La integración continua ha ayudado a identificar y solucionar problemas rápidamente. Ahora CI es utilizado por todos los departamentos del gigante de TI.

La integración continua también ayuda a las pequeñas empresas, y las organizaciones financieras y médicas también utilizan las herramientas de CI. En Morningstar, por ejemplo, los servicios de integración continua ayudaron a corregir las vulnerabilidades un 70% más rápido. Y la plataforma médica de Philips Healthcare pudo duplicar la velocidad de las actualizaciones de prueba.

Las herramientas


Estas son algunas herramientas populares para CI:

  • Jenkins es uno de los sistemas de CI más populares. Admite más de mil complementos para la integración con varios VCS, plataformas en la nube y otros servicios. También utilizamos Jenkins en 1cloud: la herramienta está incluida en nuestro sistema DevOps . Regularmente revisa la rama de Git para las pruebas.
  • Buildbot es un marco de Python para escribir sus propios procesos de integración continua. La configuración inicial de la herramienta es bastante complicada, pero esto se compensa con las amplias posibilidades de personalización. Entre las ventajas del marco, los usuarios distinguen su baja intensidad de recursos.
  • Concourse CI es un servidor de Pivotal que usa contenedores Docker. Concourse CI se integra con cualquier herramienta y sistema de control de versiones. Los desarrolladores señalan que el sistema es adecuado para trabajar en empresas de cualquier tamaño.
  • Gitlab CI es una herramienta integrada en el sistema de control de versiones GitLab. El servicio se ejecuta en la nube y utiliza archivos YAML para la configuración. Al igual que Concourse, Gitlab CI utiliza contenedores Docker que ayudan a aislar diferentes procesos entre sí.
  • Codeship es un servidor de CI basado en la nube que funciona con GitHub, GitLab y BitBucket. La plataforma no requiere una configuración inicial larga: los procesos de CI predefinidos estándar están disponibles en Codeship. Para proyectos pequeños (hasta 100 compilaciones por mes) y de código abierto, Codeship está disponible de forma gratuita.

Materiales de nuestro blog corporativo:

Source: https://habr.com/ru/post/447090/


All Articles