Referencia: cómo funciona el proceso de Integración Continua

Hoy abordaremos la historia del término, discutiremos las complejidades de implementar CI y presentaremos algunas herramientas populares que ayudarán a trabajar con él.

Referencia: cómo funciona el proceso de Integración Continua
/ Flickr / Altug Karakoc / CC BY / Фото изменено

Término

La Integración Continua (Continuous Integration) es un enfoque para el desarrollo de aplicaciones, que implica la realización frecuente de compilaciones del proyecto y pruebas de código.

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

El término Integración Continua apareció por primera vez en 1991. Fue introducido por el creador del lenguaje UML Grady Booch (Grady Booch). El ingeniero presentó el concepto de CI como parte de su propia práctica de desarrollo — el método Booch. Este implicaba la mejora incremental de la arquitectura al diseñar sistemas orientados a objetos. Grady no describió requisitos específicos para la integración continua. Pero más tarde, en su libro «Análisis y Diseño Orientado a Objetos con Aplicaciones», mencionó que el objetivo del método es acelerar el lanzamiento de «versiones internas».

Historia

En 1996, los creadores de la metodología programación extrema (XP) — Kent Beck (Kent Beck) y Ron Jeffries (Ron Jeffries). La integración continua se convirtió en uno de los doce principios clave de su enfoque. Los fundadores de XP clarificaron los requisitos para la metodología CI y señalaron la necesidad de realizar compilaciones del proyecto varias veces al día.

A principios de los 2000, uno de los fundadores de Agile Alliance Martin Fowler (Martin Fowler) comenzó a promover la metodología de integración continua. Sus experimentos con CI dieron lugar a la aparición de la primera herramienta de software en este campo: CruiseControl. La utilidad fue creada por un colega de Martin: Matthew Foemmel.

El ciclo de compilación en la herramienta se implementa como un demonio, que verifica periódicamente el sistema de control de versiones en busca de cambios en la base de código. La solución aún puede descargarse hoy: está se distribuye bajo una licencia similar a BSD.

Con la llegada de software para CI, cada vez más empresas comenzaron a adoptar la práctica. Según un estudio de Forrester [pág. 5 informe], en 2009, el 86% de las cincuenta empresas tecnológicas encuestadas utilizaban o estaban implementando métodos de CI.

Hoy en día, la práctica de la Integración Continua es utilizada por organizaciones de diversas industrias. En 2018, un importante proveedor de la nube realizó una encuesta entre profesionales de TI de empresas en los sectores de servicios, educación y finanzas. De seis mil encuestados, el 58% respondió que utilizan herramientas y principios de CI en su trabajo.

¿Cómo funciona?

La base de la integración continua está compuesta por dos herramientas: el sistema de control de versiones y el servidor CI. Este último puede ser tanto un dispositivo físico como una máquina virtual en un entorno en la nube. Los desarrolladores cargan nuevo código uno o varios veces al día. El servidor CI lo copia automáticamente con todas las dependencias y ejecuta la compilación. Después, ejecuta pruebas de integración y unitarias. Si las pruebas se realizan con éxito, el sistema CI despliega el código.

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

Referencia: cómo funciona el proceso de Integración Continua

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

  • Corregir problemas inmediatamente. Este principio proviene del desarrollo ágil extremo. Corregir errores es la tarea más prioritaria para los desarrolladores.
  • Automatizar procesos. Los desarrolladores y gerentes deben buscar constantemente los 'cuellos de botella' en el proceso de integración y eliminarlos. Por ejemplo, a menudo, 'el cuello de botella' de la integración resulta ser la prueba.
  • Realizar construcciones con la mayor frecuencia posible. Una vez al día, para sincronizar el trabajo del equipo.

Dificultades en la implementación

El primer problema son los altos costos operativos. Incluso si la empresa utiliza herramientas de CI de código abierto (de las que hablaremos más adelante), aún tendrá que gastar dinero en el mantenimiento de la infraestructura. Sin embargo, las tecnologías en la nube pueden ser la solución.

Facilitan la construcción de configuraciones informáticas de diferentes tamaños. Además, las empresas pagan solo por los recursos utilizados, lo que ayuda a ahorrar en infraestructura.

Según encuestas [pág. 14 artículo], la integración continua aumenta la carga de trabajo de los empleados de la empresa (al menos, al principio). Tienen que aprender a utilizar nuevas herramientas, y los colegas no siempre ayudan con la formación. Por lo tanto, deben familiarizarse con nuevos marcos y servicios 'sobre la marcha'.

La tercera dificultad son los problemas con la automatización. Las organizaciones que tienen un gran volumen de código heredado que no está cubierto por pruebas automatizadas enfrentan esto. Esto lleva a que simplemente reescriban el código antes de realizar una implementación completa de CI.

Referencia: cómo funciona el proceso de Integración Continua
/ Flickr / theilr / CC BY-SA

Quién usa

Desde el principio, los gigantes de TI apreciaron las ventajas de esta metodología. Google utiliza adoptó la integración continua a mediados de los años 2000. Implementaron CI para resolver el problema de las demoras en el funcionamiento de su motor de búsqueda. La integración continua ayudó a detectar y resolver problemas rápidamente. Hoy en día, todas las divisiones del gigante de TI utilizan CI.

La integración continua también ayuda a las pequeñas empresas, y herramientas de CI son utilizadas por organizaciones financieras y médicas. Por ejemplo, en Morningstar, los servicios de integración continua ayudaron a parchear vulnerabilidades un 70 % más rápido. La plataforma médica Philips Healthcare logró acelerar las pruebas de actualizaciones por dos veces.

Herramientas

Aquí hay algunas herramientas populares para CI:

  • Jenkins — uno de los sistemas de CI más popular. Soporta más de mil plugins para integración con diferentes VCS, plataformas en la nube y otros servicios. Jenkins también lo usamos en 1cloud: la herramienta forma parte de nuestro sistema DevOps. Verifica regularmente la rama de Git destinada a pruebas.
  • Buildbot — un marco de python para escribir procesos de integración continua personalizados. La configuración inicial de la herramienta es bastante complicada, sin embargo, esto se compensa con amplias posibilidades de personalización. Entre las ventajas del marco, los usuarios destacan su bajo consumo de recursos.
  • Concourse CI — un servidor de Pivotal que utiliza 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 — una herramienta integrada en el sistema de control de versiones GitLab. El servicio funciona en la nube y utiliza archivos YAML para la configuración. Al igual que Concourse, Gitlab CI aplica contenedores Docker, que ayudan a aislar diferentes procesos entre sí.
  • Codeship — un servidor CI en la nube que trabaja con GitHub, GitLab y BitBucket. La plataforma no requiere una larga configuración inicial: en Codeship están disponibles procesos CI preinstalados estándar. Para proyectos pequeños (hasta 100 compilaciones al mes) y de código abierto, Codeship está disponible de forma gratuita.

Materiales de nuestro blog corporativo:

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster