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 platformę .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 3.0 platformy .NET Core, 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.
Wyzwanie: przyjęcie nowego modelu działania w chmurze
"Struktura i narzędzia repozytorium rozproszonego znacznie utrudniają deweloperom przejście z jednego repozytorium do innego... A jeśli jest to trudne dla deweloperów firmy Microsoft, jak możemy oczekiwać, że większość indywidualnych współautorów będzie to wiedzieć?"
Matt Mitchell, główny inżynier ds. oprogramowania, usługi inżynieryjne 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.
Wyzwanie: Zaadaptowanie do nowego modelu działania w chmurze
"Teraz, gdy już musimy martwić się o aspekty operacyjne ciągłej integracji, możemy skupić się na dalszych ulepszeniach, które będą odczuwalne przez wszystkich — w tym deweloperów firmy Microsoft i poszczególnych współautorów."
Matt Mitchell, główny inżynier ds. oprogramowania, usługi inżynieryjne 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.