일관성을 높여 오픈 소스 혁신을 가속화하는 .NET 인프라 팀

GitHub 리포지토리 전체에 걸쳐 공유되는 도구 및 단일 공유 CI 시스템이 어떻게 개발자 생산성을 크게 향상하는지 알아보세요.

당면 과제: 오픈 소스 기여자를 위한 협업 간소화

.NET Foundation은 개방형 개발 및 협업을 통해 혁신을 촉진하기 위해 설립된 독립 조직으로서, .NET Core를 비롯하여 크고 복잡한 일련의 오픈 소스 프로젝트를 지원합니다. Microsoft .NET 엔지니어링 서비스 팀은 프로젝트에 기여하며 전 세계 기여자들이 함께 작업할 수 있게 하는 인프라를 상당 부분 책임지고 있습니다.

GitHub의 서로 다른 수십 개의 git 리포지토리, 광범위한 도구 및 프로젝트 전체에 걸쳐 사용 중인 여러 CI(연속 통합) 시스템으로 인해 생산성을 저해하는 혼란스러운 상황이 많이 있었습니다. 게다가 프로젝트 규모의 자체로도 복잡성이 가중되었습니다. 예를 들어 Roslyn(C# 컴파일러) 리포지토리는 끌어오기 요청의 1회 반복에 대해 600,000개가 넘는 자동화된 테스트를 단독으로 실행합니다. 주당 50개가 넘는 끌어오기 요청(각각에 다수의 반복이 있음)으로 인해 CI 테스트의 수는 수십억 회에 달합니다. CoreFx(라이브러리)의 경우 이 수는 훨씬 더 큽니다. .NET 엔지니어링 서비스 팀은 .NET Core 3.0 릴리스를 계획할 때 향상된 일관성을 확립하고 기여자들이 프로젝트의 모든 잠재력을 실현할 수 있도록 대규모로 변경하기로 했습니다.

"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?"

.NET 엔지니어링 서비스 수석 소프트웨어 엔지니어, Matt Mitchell

공유 도구 및 단일 CI 시스템을 통한 생산성 향상

개발자가 소프트웨어 스택의 다른 부분 간에 쉽게 이동할 수 있도록 .NET 엔지니어링 서비스 팀은 공통 디렉터리 구조의 모든 리포지토리, 명령 세트 및 빌드 및 테스트 논리를 가져오기 위해 노력했습니다. 이 팀은 다양한 CI 시스템에 있던 기존의 모든 워크플로를 Azure Pipelines의 단일 시스템으로 이전함으로써 생산성에 대한 추가 장애 요인을 제거했습니다. 시스템이 완전 관리형이므로 CI 서버 인프라를 관리해야 하는 부담이 더 이상 없습니다. 이제 팀은 GitHub에 저장된 YAML 파일을 통해 구성을 코드로 실행하고 있습니다. 그리고 YAML 파이프라인은 모든 곳에서 사용됩니다. 일부 리포지토리는 이전에 CI를 순차적으로 수행했지만(개발자가 때로 코드의 반복 간에 2~3시간을 기다려야 했음), 이제 모든 CI 파이프라인이 병렬화되어 더 빠른 반복이 가능합니다.

"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."

.NET 엔지니어링 서비스 수석 소프트웨어 엔지니어, Matt Mitchell

효율적인 협업으로 더 나은 제품 출시 가능

오늘날의 개발자들은 과거에는 필요했던 전문 지식이 거의 없어도 리포지토리 간에 훨씬 더 쉽게 이전하고 버그의 근본 원인을 찾아내며 수정을 제안 및 테스트할 수 있습니다. GitHub의 간소화된 이 오픈 소스 협업을 통해 개발자들은 고품질 소프트웨어를 작성, 테스트, 빌드 및 출시하기 위해 함께 작업하므로 더 많은 사항을 신속하게 혁신할 수 있습니다. 그리고 .NET 엔지니어링 서비스 팀은 전체 스택에 걸쳐 인프라를 변경할 수 있으므로 개발자가 모든 리포지토리에서 훨씬 더 빠르고 효율적으로 활용할 수 있는 향상된 도구 기능을 제공할 수 있습니다.

팀의 경험과 의사 결정을 자세히 살펴보세요.

사례 전문 읽기