Pregunta

En la actualidad, nuestra organización no practica la integración continua.

Para que podamos conseguir un servidor de CI en funcionamiento, que necesitará para producir un documento que demuestra la rentabilidad de la inversión.

Además de un ahorro de costes de encontrar y corregir errores temprano, tengo curiosidad sobre otros beneficios / ahorros que podría pegarse en este documento.

¿Fue útil?

Solución

Mi razón # 1 para el gusto de CI es que ayuda a evitar que los desarrolladores comprobar en el código roto que a veces puede paralizar todo un equipo. Imagínese si hago un importante registro de entrada que involucra algunos cambios en el esquema de db justo antes de salir de vacaciones. Claro, todo funciona bien en mi máquina dev, pero me olvide de comprobar en el esquema de db changescript que puede o no puede ser trivial. Bueno, ahora hay cambios complejos que se refieren a nuevos campos / cambiado en la base de datos, pero nadie que se encuentra en la oficina al día siguiente en realidad ha ese nuevo esquema, por lo que ahora todo el equipo está abajo mientras se ve alguien en reproducir el trabajo que ya hizo y simplemente se olvidó de registro de entrada.

Y sí, he usado un ejemplo particularmente desagradable con cambios db pero podría ser cualquier cosa, de verdad. Tal vez un registro de entrada parcial con algún código enviando un correo electrónico que a continuación, hace que todas sus desarrolladores de spam a sus usuarios finales reales? Lo que sea ...

Así que en mi opinión, evitando una sola de estas situaciones hará que el retorno de la inversión de un pago tal esfuerzo muy rápidamente.

Otros consejos

Si usted está hablando con un administrador de programas estándar, pueden encontrar integración continua a ser un poco difícil de entender en términos de retorno de la inversión sencilla: no es inmediatamente obvio qué producto físico que van a obtener a cambio de un dólar dado la inversión.

Así es como he aprendido a explicarlo: "La integración continua elimina clases enteras de riesgo de su proyecto"

La gestión del riesgo es un verdadero problema para los administradores de programas que está fuera de la comprensión normal de tipos de ingeniería de software que pasan más tiempo a escribir código de preocuparse acerca de cómo el dinero se gasta. Parte de trabajar con este tipo de personas que efectivamente está aprendiendo a expresar lo que sabemos que es una cosa buena en términos que puedan entender.

Estos son algunos de los riesgos que sacan a relucir en las conversaciones como estas. Nota, con los directores de programas sensibles, ya he ganado la discusión después del primer punto:

    riesgo
  1. Integración: en un sistema de construcción basado en la integración continua, los problemas de integración como "se olvidó de comprobar en un archivo antes de ir a casa por un fin de semana largo" son mucho menos propensos a causar un equipo de desarrollo de la totalidad de perder su conjunto viernes valor del trabajo. Los ahorros para el proyecto evitando uno de estos incidentes = número de personas en el equipo (menos uno debido al villano que se olvidó de registro de entrada) * 8 horas por día de trabajo * precio por hora por cada ingeniero. Por aquí, que asciende a miles de dólares que no se le cobrará al proyecto. ROI Gana!
  2. Riesgo de regresión: un banco de pruebas de prueba de unidad / automático que se ejecuta después de cada construcción, se reduce el riesgo de que un cambio en el código se rompe algo que uso para trabajar. Esto es mucho más vago y menos seguro. Sin embargo, tiene al menos proporcionar un marco en el que algunos de los más aburrido y consume tiempo (es decir, caro) las pruebas en humanos se sustituye con la automatización.
  3. riesgo
  4. Tecnología: integración continua también le da la oportunidad de probar nuevos componentes tecnológicos. Por ejemplo, recientemente hemos descubierto que la actualización de Java 1.6 18 se estrellaba en el algoritmo de recolección de basura durante un despliegue a un sitio remoto. Debido a la integración continua, hemos tenido gran confianza que dar marcha atrás a la actualización 17 tenía una alta probabilidad de trabajar en la actualización de 18 años no lo hizo. Este tipo de cosas es mucho más difícil de la frase en términos de un valor en efectivo pero todavía se puede utilizar el argumento del riesgo: seguro fracaso del proyecto = malo. rebaja grácil = mucho mejor.

CI ayuda con el descubrimiento cuestión. Medir la cantidad de tiempo que actualmente lleva a descubrir roto construye o grandes errores en el código. Que se multiplican por el coste para la empresa para cada desarrollador utilizando ese código durante ese periodo de tiempo. Que se multiplican por el número de veces que las roturas se producen durante todo el año.

No es su número.

Cada generación correcta es una versión candidata -. Por lo que puede ofrecer actualizaciones y correcciones de errores mucho más rápido

Si parte de su proceso de construcción genera un instalador, esto permite un ciclo de despliegue rápido también.

Wikipedia :

  • cuando fallan las pruebas unitarias o surge un error, los desarrolladores pueden volver la espalda código base a un estado libre de errores, sin perder el tiempo de depuración
  • desarrolladores a detectar y arreglar los problemas de integración continua - evitar el caos de última hora en las fechas de lanzamiento, (cuando todo el mundo trata de comprobar en su ligeramente incompatible versiones).
  • alerta temprana de código roto / incompatibles
  • alerta temprana de cambios en conflicto
  • prueba de la unidad inmediata de todos los cambios
  • constante disponibilidad de una versión "actual" para probar, de demostración, o con fines de liberación
  • retroalimentación inmediata a los desarrolladores en la calidad, funcionalidad, o el impacto de todo el sistema de código que están escribiendo
  • código frecuente el registro de entrada desarrolladores empuja a crear modular, menos código complejo
  • métricas generadas a partir de la prueba automatizada y CI (tales como las métricas de cobertura de código, el código de complejidad, y cuenta con completas) a los desarrolladores centrarse en el desarrollo, código de calidad funcional, y ayuda a desarrollar fuerza en un equipo
  • bien desarrollada prueba suite requerido para mejor utilidad

Utilizamos CI (Dos construye de un día) y nos ahorra mucho tiempo, mantener el código de trabajo disponible para la prueba y liberación.

Desde el punto de vista CI desarrollador puede ser intimidante cuando automática Construir resultado, enviado por correo electrónico a todo el mundo (desarrolladores, administradores de proyectos, etc., etc.), dice:   "Error en la carga DLL Generar de 'Xyz.dll' fracasado." y usted es el señor XYZ y ellos saben quienes son :)!

Aquí está mi ejemplo de mi propia experiencia ...

Nuestro sistema tiene múltiples plataformas y configuraciones con más de 70 ingenieros que trabajan en la misma base de código. Hemos sufrido de algún lugar alrededor de acumulación éxito del 60% para las configuraciones utilizadas con menor frecuencia y el 85% de los más comúnmente utilizados. Hubo una inundación constante de correos electrónicos a diario sobre los errores de compilación u otros fallos.

Lo hice algunos cálculos aproximados y estimó que hemos perdido una media de una hora al día por cada programador construye mal, que asciende a casi 10 días-hombre de trabajo cada día. Que no tiene en los costes que se producen en tiempo de iteración cuando los programadores se niegan a sincronización con el código más reciente, ya que no sabemos si es estable, que nos cuesta aún más.

Después de desplegar un rack de servidores construcción gestionado por el equipo de la ciudad que ahora vemos una tasa de éxito promedio de 98% en todas las configuraciones, las estancias de error de compilación promedio en el sistema de minutos, no horas y la mayoría de nuestros ingenieros están ahora cómoda estancia en la última revisión del código.

En general yo diría que una estimación conservadora de nuestros ahorro total fue de alrededor de 6 meses de tiempo por el hombre en los últimos tres meses del proyecto en comparación con los tres meses anteriores a la implementación de CI. Este argumento ha ayudado a asegurar recursos para ampliar nuestros servidores construcción y dedicar más tiempo ingeniero de pruebas automatizadas adicional.

Nuestra mayor ganancia, es de tener siempre una nightly build de control de calidad. Bajo nuestro viejo sistema de cada producto, al menos una vez a la semana, encontraría a cabo a las 2 am que alguien había registrado código malo. Esto causó ninguna nightly build para el control de calidad a prueba con, el remedio fue enviar un correo electrónico comunicado de ingeniería. Ellos diagnosticar el problema y ponerse en contacto con un prog. A veces se tomó el tiempo que antes del mediodía de control de calidad en realidad tenía algo con que trabajar. Ahora, además de tener un buen instalador todas las noches, que en realidad lo instala en VM de todas las diferentes configuraciones admitidas todas las noches. Así que ahora cuando viene en control de calidad, que pueden empezar a probar en pocos minutos. Ahora cuando se piensa en la manera antigua, QA entró agarró el instalador, dispararon hasta todas las máquinas virtuales, lo instalamos, luego comenzó la prueba. Ahorramos QA probablemente 15 minutos por la configuración a prueba de control de calidad, por persona.

Hay servidores de CI libres disponibles, y herramientas de construcción libres como de NAnt. Se puede implementar en su caja de dev para descubrir los beneficios.

Si está utilizando control de código fuente, y un sistema de seguimiento de bugs, me imagino que estar constantemente el primero en informar de errores (en cuestión de minutos después de cada registro de entrada) será bastante convincente. A esto se añade la disminución de su tasa de errores, y es probable que tenga una venta.

El retorno de la inversión es realmente una capacidad de proporcionar lo que quiere el cliente. Esto es por supuesto muy subjetiva, pero cuando se implementa con la participación del cliente final, se vería que los clientes se inicia apreciar lo que están recibiendo y por lo tanto tienden a ver menos problemas durante la aceptación del usuario.

  • ¿Sería ahorrar costes? puede ser no,
  • sería el proyecto fallar durante UAT? Definitivamente NO,
  • sería el proyecto se cerró en el medio? - alta posibilidad de que los clientes encuentran que esto no iba a entregar el Resultado Esperado.
  • tendría que obtener datos reales sobre el proyecto y en tiempo real - YES

Por lo tanto, ayuda en no más rápido, lo que ayuda a los riesgos Mitigar anterior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top