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
.NET Foundation, como organización independiente creada para promover la innovación a través del desarrollo y la colaboración con código abierto, admite un amplio y complejo conjunto de proyectos de código abierto, incluido .NET Core. El equipo de Servicios de ingeniería de Microsoft .NET 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.
Desafío: Adaptación a un modelo operativo en la nube
"Las herramientas y la estructura de un repositorio distribuido hacen que sea mucho más difícil para los desarrolladores pasar de un repositorio a otro… Y si es tan difícil para los desarrolladores de Microsoft, ¿cómo podemos esperar que la mayoría de los colaboradores individuales lo averigüen?"
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.
Desafío: Adaptación a un modelo operativo en la nube
"Ahora que ya no tenemos que preocuparnos por los aspectos operativos de CI, podemos centrarnos en otras mejoras que todos podamos valorar —incluidos los desarrolladores de Microsoft y colaboradores individuales por igual—."
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.