{"id":832,"date":"2012-01-31T15:18:17","date_gmt":"2012-01-31T15:18:17","guid":{"rendered":"http:\/\/www.alvantia.com\/integracion-continua-organiza-tus-desarrollos-2"},"modified":"2017-08-01T08:56:23","modified_gmt":"2017-08-01T07:56:23","slug":"integracion-continua-organiza-tus-desarrollos","status":"publish","type":"post","link":"https:\/\/www.alvantia.com\/en\/integracion-continua-organiza-tus-desarrollos\/","title":{"rendered":"Integraci\u00f3n continua: organiza tus desarrollos"},"content":{"rendered":"<p>La Integraci\u00f3n Continua es una pr\u00e1ctica de desarrollo de software donde los miembros de un equipo integran su trabajo con frecuencia. Normalmente cada persona integra al menos diariamente, conduciendo a m\u00faltiples integraciones por d\u00eda.<!--more-->Muchos equipos encuentran que este enfoque conduce a una reducci\u00f3n considerable de los problemas de integraci\u00f3n y permite al equipo desarrollar software coherente con mayor rapidez.<\/p>\n<p style=\"text-align: left;\">Durante el desarrollo de un proyecto software, cada desarrollador tiene una copia de la l\u00ednea base sobre la que trabaja. Mientras un desarrollador actualiza sus cambios en el repositorio, otro desarrollador puede estar trabajando con una copia que no refleja estos cambios. Para que esto no suceda, cada desarrollador deber\u00eda actualizar su copia de la l\u00ednea base, resolver sus conflictos y a continuaci\u00f3n actualizar el repositorio con sus cambios Esto es parte de la integraci\u00f3n del c\u00f3digo.<\/p>\n<p>Cuando en el entorno de desarrollo\u00a0 conviven varios desarrolladores actualizando varias veces la l\u00ednea base, podemos encontrar el denominado \u2018infierno de interacci\u00f3n\u2019, que consiste en que el desarrollador pasa m\u00e1s tiempo tratando de mantener su copia de la l\u00ednea base actualizada y coherente que desarrollando las tareas que tiene asignadas.<\/p>\n<p>El concepto de Integraci\u00f3n Continua propone actualizar con frecuencia de forma autom\u00e1tica, de manera que podamos evitar el \u2018infierno de integraci\u00f3n\u2019. Esta pr\u00e1ctica reduce la repetici\u00f3n de tareas y en definitiva es un ahorro de costes y tiempo.<\/p>\n<p>Existen otros m\u00e9todos opuestos a la Integraci\u00f3n Continua, i.e: antes de actualizar los cambios locales, cada desarrollador debe realizar una actualizaci\u00f3n de su copia de la l\u00ednea base y construir completamente el proyecto con sus pruebas. As\u00ed cada desarrollador debe realizar esta tarea al comienzo de la jornada y tener su trabajo siempre al d\u00eda. Esta aproximaci\u00f3n contraria a la Integraci\u00f3n Continua requiere una gran cantidad de esfuerzo dedicado por cada desarrollador.<\/p>\n<p>La Integraci\u00f3n Continua se presenta como un m\u00e9todo basado en la automatizaci\u00f3n de la construcci\u00f3n de un proyecto a partir de un repositorio de c\u00f3digo. Una vez construido, la automatizaci\u00f3n despliega el proyecto en uno o varios entornos similares a los entornos de producci\u00f3n. Adem\u00e1s, la automatizaci\u00f3n tambi\u00e9n llevar\u00e1 a cabo una serie de pruebas definidas para validar el proyecto, que pueden ser de varios tipos, como pruebas unitarias de c\u00f3digo, pruebas funcionales, pruebas de rendimiento, etc. Dentro de la automatizaci\u00f3n se pueden englobar todas las tareas relacionadas con pruebas de calidad del c\u00f3digo.<\/p>\n<p>As\u00ed, un sistema de Integraci\u00f3n Continua consiste generalmente en:<\/p>\n<ul>\n<li>Un repositorio de c\u00f3digo donde los desarrolladores actualizan su trabajo contra la l\u00ednea base.<\/li>\n<li>Un servidor de Integraci\u00f3n Continua, que obtendr\u00e1 una copia de la l\u00ednea base y construir\u00e1 autom\u00e1ticamente el proyecto.<\/li>\n<li>El servidor de Integraci\u00f3n Continua ejecutar\u00e1 el\u00a0 despliegue del proyecto reci\u00e9n construido en uno o varios entornos de pruebas<\/li>\n<li>Una vez desplegado el proyecto, el servidor de Integraci\u00f3n Continua lanzar\u00e1 autom\u00e1ticamente las pruebas definidas para este proyecto.<\/li>\n<li>El servidor de Integraci\u00f3n Continua recoger\u00e1 y analizar\u00e1 los resultados de la construcci\u00f3n del proyecto, el despliegue y las pruebas, informando a los desarrolladores del estado del proyecto.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.alvantia.com\/wp-content\/uploads\/2015\/09\/logo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-829\" src=\"https:\/\/www.alvantia.com\/wp-content\/uploads\/2015\/09\/logo.png\" alt=\"logo\" width=\"185\" height=\"256\" \/><\/a>Dependiendo del volumen del proyecto y de los recursos destinados a la Integraci\u00f3n Continua, el proceso automatizado se puede lanzar con mayor o menor frecuencia. As\u00ed, si un ciclo completo de pruebas y validaciones de un proyecto toma 10 horas con X recursos, podr\u00edamos lanzar el proceso de Integraci\u00f3n Continua todas las noches con el trabajo del d\u00eda de los desarrolladores. Mientras que si el ciclo completo dura unos minutos, podr\u00edamos lanzar un proceso con cada cambio que actualice cada desarrollador.<\/p>\n<p>Una vez tenemos implementado el proceso de Integraci\u00f3n Continua, tendremos todos los d\u00edas un proyecto construido y probado listo para ser entregado al cliente, sin necesidad de hacer un sobre esfuerzo en los desarrolladores para que integren todo el producto y generen una versi\u00f3n entregable en las \u00faltimas semanas.<\/p>\n<p>En resumen, la Integraci\u00f3n Continua nos aporta una serie de ventajas:<\/p>\n<ul>\n<li>Cuando las pruebas de integraci\u00f3n detectan un fallo, los desarrolladores pueden revertir el c\u00f3digo para alcanzar una l\u00ednea base libre de fallos con rapidez y sin desperdiciar tiempo analizando los fallos.<\/li>\n<li>Los desarrolladores detectan y corrigen fallos de integraci\u00f3n de manera continua, evitando el caos del \u00faltimo minuto de la fecha de entrega.<\/li>\n<li>Alerta temprana de c\u00f3digo roto o incompatible.<\/li>\n<li>Alerta temprana de cambios conflictivos.<\/li>\n<li>Pruebas unitarias inmediatas en cada cambio y para todos los cambios.<\/li>\n<li>Disponibilidad continua de una versi\u00f3n entregable, lista para pruebas, demostraciones o entregas finales.<\/li>\n<li>Respuesta inmediata a los desarrolladores sobre la calidad, funcionalidad, o el impacto en el conjunto total del sistema del c\u00f3digo que est\u00e1n escribiendo.<\/li>\n<li>Las frecuentes comprobaciones de c\u00f3digo impulsan a los desarrolladores a escribir c\u00f3digo m\u00e1s modular y menos complejo.<\/li>\n<li>El proceso genera m\u00e9tricas de las pruebas autom\u00e1ticas, cuyos resultados dirigen a los desarrolladores a escribir c\u00f3digo m\u00e1s funcional y con m\u00e1s calidad.<\/li>\n<\/ul>\n<p>Aunque tambi\u00e9n tiene una serie de inconvenientes a tener en cuenta:<\/p>\n<ul>\n<li>Despliegue inicial, preparar un entorno de Integraci\u00f3n Continua completo es bastante complejo.<\/li>\n<li>Para conseguir las ventajas de las pruebas, hay que desarrollar y mantener un buen conjunto de pruebas.<\/li>\n<li>El coste de los recursos necesarios en m\u00e1quinas puede ser significativo. La automatizaci\u00f3n de todos los procesos necesita una gran cantidad de CPU, Memoria, Almacenamiento y Ancho de Banda.<\/li>\n<\/ul>\n<p>No obstante, haciendo balance de todo ello, consideramos recomendable la Integraci\u00f3n Continua en los procesos de desarrollo de proyectos software.<\/p>\n<div class=\"clearfix\"><\/div>","protected":false},"excerpt":{"rendered":"<p>La Integraci\u00f3n Continua es una pr\u00e1ctica de desarrollo de software donde los miembros de un equipo integran su trabajo con frecuencia. Normalmente cada persona integra al menos diariamente, conduciendo a m\u00faltiples integraciones por d\u00eda.<\/p>\n<p class=\"cv-read-more-button\"><a class=\"cv-button button is-standard color-accent has-icon icon-after\" href=\"https:\/\/www.alvantia.com\/en\/integracion-continua-organiza-tus-desarrollos\/\">Continue Reading<i class=\"button-icon icon-right-open-big\"><\/i><\/a><\/p>\n","protected":false},"author":2,"featured_media":899,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[206,4],"tags":[101,47,168,169,170,171],"class_list":["post-832","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tecnologia-en","category-uncategorized-en","tag-calidad-en","tag-desarrollo-en","tag-integracion-continua-en","tag-jenkins-en","tag-opensource-en","tag-software-en","not-single"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/posts\/832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/comments?post=832"}],"version-history":[{"count":5,"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/posts\/832\/revisions"}],"predecessor-version":[{"id":1624,"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/posts\/832\/revisions\/1624"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/media\/899"}],"wp:attachment":[{"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/media?parent=832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/categories?post=832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alvantia.com\/en\/wp-json\/wp\/v2\/tags?post=832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}