Omitir navegación

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.

Lea el artículo completo

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

Como organización independiente creada para fomentar la innovación a través del desarrollo abierto y la colaboración, .NET Foundation admite un conjunto grande y complejo de proyectos de código abierto, incluido .NET Core. El equipo de Servicios de ingeniería de Microsoft .NET contribuye al proyecto y es responsable de gran parte de la infraestructura que permite que los colaboradores de todo el mundo trabajen juntos.

Con decenas de repositorios GIT diferentes en GitHub, una amplia gama de herramientas y varios sistemas de integración continua (CI) diferentes en uso en todo el proyecto, hubo una gran confusión que inhibió la productividad. La gran escala del proyecto aumentaba la complejidad. Por ejemplo, solo el repositorio 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 es de miles de millones. Para CoreFx (bibliotecas), los números son aún mayores. Como el equipo de Servicios de ingeniería de .NET planeaba para la versión de .NET Core 3.0, decidió realizar grandes cambios para establecer una mayor coherencia y permitir que los colaboradores vean 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

Para facilitar que los desarrolladores se muevan entre diferentes partes de la pila de software, el equipo de Servicios de ingeniería de .NET ha trabajado para poner todos los repositorios bajo una estructura de directorios común, un conjunto de comandos y una lógica de compilación y prueba. El equipo eliminó más barreras de productividad al mover todos los flujos de trabajo existentes de los distintos sistemas de CI a un único sistema en Azure Pipelines. Dado que el sistema está totalmente administrado, ya no tienen la responsabilidad de administrar la infraestructura del servidor de CI. El equipo está practicando la configuración como código a través de archivos YAML que se almacenan en GitHub y las canalizaciones de YAML se usan en todas partes. Mientras que algunos repositorios ya habían realizado CI en serie previamente (lo que requiere que los desarrolladores esperen dos o tres horas entre iteraciones en su código), todas las canalizaciones de CI ahora están paralelizadas para habilitar iteraciones más rápidas.

"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
¿Podemos ayudarle?