Il team che si occupa dell'infrastruttura .NET investe in coerenza per accelerare l'innovazione open source
Scopri in che modo gli strumenti condivisi e un unico sistema di integrazione continua condiviso tra i repository di GitHub consentono un notevole miglioramento della produttività degli sviluppatori.
La sfida: Semplificare la collaborazione per i collaboratori open source
.NET Foundation, un'organizzazione indipendente creata per favorire l'innovazione tramite collaborazione e sviluppo open source, supporta un ampio e complesso set di progetti open source, tra cui .NET Core. Il team Microsoft .NET Engineering Services contribuisce al progetto ed è responsabile di gran parte dell'infrastruttura che consente ai collaboratori di tutto il mondo di lavorare insieme.
Con decine di repository Git diversi in GitHub, un'ampia gamma di strumenti e numerosi sistemi di integrazione continua in uso nel progetto, si era creata molta confusione che ostacolava la produttività. Le vaste dimensioni del progetto hanno reso tutto ancora più complesso. Ad esempio, il repository Roslyn (compilatore C#) esegue, da solo, oltre 600.000 test automatizzati per un'iterazione di una richiesta pull. Con oltre 50 richieste pull a settimana, ognuna con più iterazioni, il numero di test di integrazione continua è nell'ordine di grandezza di miliardi. Per CoreFx (librerie), le cifre sono ancora più alte. Durante la pianificazione del rilascio di .NET Core 3.0, il team .NET Engineering Services ha deciso di apportare importanti modifiche per garantire una maggiore coerenza e consentire ai collaboratori di sfruttare appieno il potenziale del progetto.
La sfida: adattarsi a un modello operativo cloud
"Una struttura e strumenti di repository distribuiti rende molto più difficile per gli sviluppatori passare da un repository a un altro… E se è difficile per gli sviluppatori Microsoft, come possiamo aspettarci che la maggior parte dei singoli collaboratori superi le difficoltà?"
Matt Mitchell, Principal Software Engineer, .NET Engineering Services
Miglioramento della produttività tramite strumenti condivisi e un unico sistema di integrazione continua
Per permettere agli sviluppatori di spostarsi più facilmente tra parti diverse dello stack software, il team .NET Engineering Services ha lavorato per riunire tutti i repository in un'unica struttura di directory, con un set di comandi e logica di compilazione e test comuni. Il team ha eliminato ulteriormente gli ostacoli alla produttività spostando tutti i flussi di lavoro esistenti dai diversi sistemi di integrazione continua in un unico sistema in Azure Pipelines. Poiché il sistema è completamente gestito, viene eliminato il carico di gestione dell'infrastruttura del server di integrazione continua. Il team si sta ora concentrando sulla configurazione come codice tramite file YAML archiviati in GitHub e le pipeline YAML vengono usate ovunque. Mentre in precedenza l'integrazione continua in alcuni repository avveniva in modo seriale, richiedendo talvolta agli sviluppatori attese di due o tre ore tra le iterazioni nel codice, adesso tutte le pipeline di integrazione continua avvengono in parallelo, per consentire iterazioni più rapide.
La sfida: adattarsi a un modello operativo cloud
"Non è ora più necessario preoccuparsi degli aspetti operativi dell'integrazione continua, quindi siamo liberi di concentrarci su miglioramenti aggiuntivi che verranno percepiti da tutti, inclusi gli sviluppatori Microsoft e singoli collaboratori."
Matt Mitchell, Principal Software Engineer, .NET Engineering Services
Da una collaborazione migliore nasce un prodotto migliore
Oggi gli sviluppatori possono passare da un repository a un altro, risalire alla causa radice di un bug e proporre e testare una correzione più facilmente, il tutto senza necessità di un livello di conoscenze specialistiche elevato come in passato. La collaborazione open source semplificata in GitHub consente agli sviluppatori di innovare più rapidamente mentre lavorano insieme a scrittura, test, compilazione e distribuzione di software di alto livello. Grazie alla possibilità di modificare l'infrastruttura per l'intero stack, inoltre, il team .NET Engineering Services può fornire miglioramenti per gli strumenti che gli sviluppatori possono sfruttare in tutti i repository in modo molto più rapido ed efficace.