Zespół ds. infrastruktury .NET inwestuje w spójność w celu przyspieszenia tempa wprowadzania innowacji w oprogramowaniu typu open-source

Obejrzyj, jak udostępnione narzędzia i pojedynczy współużytkowany system ciągłej integracji działający w repozytoriach GitHub mogą zwiększyć wydajność deweloperów.

Wyzwanie: Usprawnianie współpracy między współautorami oprogramowania typu open-source

Jako niezależna organizacja utworzona w celu wspierania innowacji przez otwartą współpracę i opracowywanie oprogramowania, .NET Foundation wspiera obszerny, złożony zestaw projektów typu open-source, w tym projekt .NET Core. Zespół ds. usług inżynieryjnych platformy Microsoft .NET uczestniczy w procesie tworzenia tego projektu i jest odpowiedzialny za większość infrastruktury umożliwiającej współautorom z całego świata wspólną pracę.

Wcześniej do obsługi projektów używano kilkunastu różnych repozytoriów git w witrynie GitHub, szeroki zakres narzędzi i kilka różnych systemów ciągłej integracji, co wprowadzało sporo zamieszania i prowadziło do zmniejszenia produktywności. Złożoności dodawała jeszcze sama skala projektu. Na przykład w samym repozytorium Roslyn (kompilator C#) w ciągu jednej iteracji żądania ściągnięcia działało ponad 600 000 testów automatycznych. Przy ponad 50 żądaniach ściągnięcia na tydzień, z których każde obejmowało wiele iteracji, liczba testów ciągłej integracji wynosiła kilka miliardów. W przypadku bibliotek CoreFx ta liczba była jeszcze większa. Kiedy członkowie zespołu ds. usług inżynieryjnych platformy .NET planowali wydanie wersji NET Core 3.0, zdecydowali, że muszą dokonać głębokich zmian w celu zapewnienia większej spójności i umożliwienia współautorom wykorzystania pełnego potencjału projektu.

"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, główny inżynier ds. oprogramowania w usługach inżynieryjnych platformy .NET

Zwiększanie produktywności za pomocą współdzielonych narzędzi i pojedynczego systemu ciągłej integracji

Aby ułatwić deweloperom poruszanie się między różnymi częściami stosu oprogramowania, członkowie zespołu ds. usług inżynieryjnych platformy .NET opracowali dla wszystkich repozytoriów wspólną strukturę katalogów, zestaw poleceń oraz logikę kompilowania i testowania. Członkowie zespołu wyeliminowali dalsze przeszkody obniżające produktywność, przenosząc wszystkie istniejące przepływy pracy z innych systemów ciągłej integracji do pojedynczego systemu w usłudze Azure Pipelines. Dzięki temu, że system jest w pełni zarządzany, nie musieli się już martwić zarządzaniem infrastrukturą serwera ciągłej integracji. Członkowie zespołu testują teraz konfigurację w postaci kodu w plikach YAML przechowywanych w witrynie GitHub, a potoki YAML są wszędzie używane. Inaczej niż kiedyś, gdy niektóre repozytoria wykonywały ciągłą integrację szeregowo, co czasami wymagało od deweloperów wielogodzinnego oczekiwania na kod między iteracjami, teraz wszystkie potoki ciągłej integracji działają równolegle, co przyspiesza wykonywanie iteracji.

"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, główny inżynier ds. oprogramowania w usługach inżynieryjnych platformy .NET

Ściślejsza współpraca prowadzi do opracowania lepszego produktu

Obecnie deweloperzy mogą łatwiej przenosić się z między repozytoriami, śledzić główne przyczyny usterek oraz proponować i testować poprawki. Jednocześnie nie jest do tego wymagana głębsza wiedza specjalistyczna niż ta, jaka była wymagana wcześniej. Taka usprawniona współpraca w witrynie GitHub umożliwia deweloperom szybsze wprowadzanie innowacji, ponieważ pracują oni razem nad pisaniem, testowaniem, kompilowaniem i przesyłaniem wysokiej jakości oprogramowania. A ponieważ członkowie zespołu ds. usług inżynieryjnych platformy .NET mogą dokonywać zmian infrastruktury przy pełnym stosie, są oni w stanie o wiele szybciej i wydajniej dostarczać ulepszone narzędzia, z których mogą korzystać deweloperzy we wszystkich repozytoriach.

Przyjrzyj się bliżej podróży zespołów i obowiązującym w nich mechanizmom podejmowania decyzji.

Przeczytaj całą historię