Trace Id is missing
Naar hoofdinhoud gaan

Het .NET-infrastructuurteam investeert in consistentie om de opensource-innovatie te versnellen

Bekijk hoe het delen van tools en één enkel, gedeeld CI-systeem voor alle GitHub-opslagplaatsen grote voordelen oplevert voor de productiviteit van ontwikkelaars.

De uitdaging: Samenwerking tussen opensource-inzenders verbeteren

Als onafhankelijke organisatie die is gemaakt om innovatie te bevorderen via open ontwikkeling en samenwerking, ondersteunt de .NET Foundation een grote en complexe reeks opensource-projecten, waaronder .NET Core. Het Microsoft .NET Engineering Services-team draagt bij aan het project en is verantwoordelijk voor een groot deel van de infrastructuur die inzenders van over de hele wereld in staat stelt om samen te werken.

Door de tientallen verschillende git-opslagplaatsen in GitHub, het grote aantal hulpprogramma's en de verschillende CI-systemen (voor continue integratie) in het project, was er veel verwarring die leidde tot een beperkte productiviteit. De enorme schaal van het project maakte de complexiteit nog groter. De Roslyn -opslagplaats (C#-compiler) alleen al voert meer dan 600.000 geautomatiseerde tests uit voor één iteratie van een pull-aanvraag. Met meer dan 50 pull-aanvragen per week, met meerdere iteraties per stuk, hebben we het hier over miljarden CI-tests. Bij CoreFx (bibliotheken) zijn het er nóg meer. Terwijl het .NET Engineering Services-team plannen maakte voor de introductie van .NET Core 3.0, werd besloten grote wijzigingen door te voeren om de consistentie te vergroten en om inzenders in staat te stellen het volledige potentieel van het project te realiseren.

Mensen die een gesprek voeren

De uitdaging: Aanpassen aan een cloud-operationeel model

"Een gedistribueerde opslagplaatsstructuur en hulpprogramma's maken het veel moeilijker voor ontwikkelaars om over te stappen van de ene opslagplaats naar de andere… En als het zo moeilijk is voor Microsoft-ontwikkelaars, hoe kunnen we dan verwachten dat de meeste individuele inzenders dit kunnen achterhalen?"

Matt Mitchell, Principal Software Engineer, .NET Engineering Services

De productiviteit vergroten met gedeelde tools en één CI-systeem

Om het voor ontwikkelaars eenvoudiger te maken om tussen verschillende onderdelen van de softwarestack te schakelen, heeft het .NET Engineering Services-team er alles aan gedaan om alle opslagplaatsen samen te brengen in één mappenstructuur, met een vaste reeks opdrachten en bouw-en-testlogica. Het team heeft verdere productiviteitsproblemen opgelost door alle bestaande workflows uit de verschillende CI-systemen te verplaatsen naar één systeem in Azure Pipelines. Omdat dit systeem volledig wordt beheerd, hoeft er geen tijd meer te worden besteed aan het beheren van de CI-serverinfrastructuur. Het team werkt nu met 'configuratie als code' via YAML-bestanden die in GitHub worden opgeslagen. Overal wordt daarnaast gebruikgemaakt van YAML-pijplijnen. Terwijl sommige opslagplaatsen eerder CI serieel hebben uitgevoerd, waardoor ontwikkelaars soms twee of drie uur moesten wachten op hun code tussen iteraties, worden alle CI-pijplijnen nu parallel uitgevoerd om snellere iteraties mogelijk te maken.

De uitdaging: Aanpassen aan een cloud-operationeel model

"Nu we ons geen zorgen meer hoeven te maken over de operationele aspecten van CI, kunnen we ons richten op verdere verbeteringen die door iedereen worden ervaren, ook door Microsoft-ontwikkelaars en individuele inzenders."

Matt Mitchell, Principal Software Engineer, .NET Engineering Services

Betere samenwerking leidt tot een beter product

Tegenwoordig kunnen ontwikkelaars eenvoudiger overstappen van opslagplaats naar opslagplaats, de oorzaak van een fout achterhalen en een oplossing voorstellen en testen zonder alle specialistische kennis die daar vroeger voor nodig was. Dankzij deze optimale opensource-samenwerking in GitHub kunnen ontwikkelaars sneller innoveren omdat ze samen werken aan het schrijven, testen, bouwen en aanbieden van hoogwaardige software. Omdat het .NET Engineering Services-team snel infrastructuurwijzigingen kan doorvoeren in de volledige stack, kunnen er snel verbeteringen worden aangebracht aan hulpprogramma's zodat ontwikkelaars nóg sneller en efficiënter kunnen werken in alle opslagplaatsen.

Een kantoor met mensen die aan hun bureaus werken
Bekijk de beleving en besluitvorming van het team in detail.
Het volledige verhaal lezen