El equipo de infraestructura de .NET invierte en la coherencia para agilizar la innovación en el código abierto

Vea cómo el uso compartido de herramientas y de un único sistema de CI en los repositorios de GitHub favorece enormemente la productividad de los desarrolladores.

Desafío: optimizar la colaboración de los creadores de código abierto

Como organización independiente creada para promover la innovación a través del desarrollo y la colaboración con código abierto, .NET Foundation admite un amplio y complejo conjunto de proyectos de código abierto, incluido .NET Core. El equipo de servicios de ingeniería de .NET en Microsoft colabora con el proyecto y se ocupa de gran parte de la infraestructura que permite a los colaboradores de todo el mundo trabajar juntos.

Con el uso de decenas de repositorios de Git en GitHub, un amplio abanico de herramientas y varios sistemas diferentes de integración continua (CI) en el proyecto, había una gran confusión que dificultaba la productividad. La propia dimensión del proyecto lo hacía aún más complejo. Por ejemplo, solo el repositorio de Roslyn (compilador de C#) ejecuta más de 600 000 pruebas automatizadas para una iteración de una solicitud de incorporación de cambios. Con más de 50 solicitudes de incorporación de cambios a la semana, cada una con varias iteraciones, el número de pruebas de CI llega a ser de varios miles de millones. Para CoreFx (bibliotecas), las cifras son más altas aún. Cuando el equipo de servicios de ingeniería de .NET planeaba la versión 3.0 de .NET Core, decidió realizar cambios importantes para establecer una coherencia mayor y permitir a los colaboradores aprovechar todo el potencial del proyecto.

"A distributed repo structure and tooling makes it a lot harder for developers to move from one repo to another … And if it's this hard on Microsoft developers, how can we expect most individual contributors to figure it out?"

Matt Mitchell, ingeniero jefe de software, servicios de ingeniería de .NET

Aumento de la productividad con el uso compartido de herramientas y de un solo sistema de CI

Con el fin de que los desarrolladores se puedan mover con facilidad entre las diferentes partes de la pila de software, el equipo de servicios de ingeniería de .NET trabajó para reunir todos los repositorios en una estructura de directorios común, con un mismo conjunto de comandos y la misma lógica de compilación. El equipo eliminó más barreras para la productividad al mover los flujos de trabajo de los diferentes sistemas de CI a un solo sistema en Azure Pipelines. Puesto que el sistema es totalmente administrado, los liberó de la carga de administrar la infraestructura de servidor de CI. Ahora el equipo está practicando la configuración como código con archivos YAML almacenados en GitHub y usan canalizaciones YAML en todas partes. Si bien antes en algunos repositorios se realizaba la integración continua en serie, lo que hacía que los desarrolladores tuvieran que esperar a veces dos o tres horas entre iteraciones del código, ahora todas las canalizaciones de CI funcionan en paralelo para llevar a cabo las iteraciones con más rapidez.

"Now that we longer need to worry about the operational aspects of CI, we're free to focus on further improvements that will be felt by all—including Microsoft developers and individual contributors alike."

Matt Mitchell, ingeniero jefe de software, servicios de ingeniería de .NET

Cuanto mejor es la colaboración mejor es el producto

Actualmente, los desarrolladores pueden moverse de un repositorio a otro, buscar la causa principal de un error y proponer y probar una corrección con más facilidad, casi sin tantos conocimientos especializados como necesitaban antes. Esta colaboración optimizada en el campo del código abierto en GitHub permite a los desarrolladores innovar con más rapidez, ya que trabajan juntos para escribir, probar, compilar y distribuir software de alta calidad. Y, puesto que el equipo de servicios de ingeniería de .NET puede realizar cambios de infraestructura en toda la pila, tiene la posibilidad de ofrecer mejoras en las herramientas que los desarrolladores pueden aprovechar en todos los repositorios con mucha más rapidez y eficiencia.

Observe más detenidamente el recorrido y la toma de decisiones de los equipos.

Lea el artículo completo