Изграждане на Windows: 4 милиона ангажименти, 10 милиона работни елементи

„СъздаванеEnlargeGit

Преминаването на Microsoft към използване на Git като система за контрол на версиите за развитието на Windows доведе до много предизвикателства. Gitвсъщност не е създаден за 300GB хранилище с 3,5 милиона файла, и инженерните усилия да се направи мащаб на Git по този начин продължава.

Но при приемането и разработването на това, което компанията нарича One Инженерна система (1ES), групата на Windows и устройства (WDG) има приел повече от просто Git; групата е приела и Visual Studio Team Services (VSTS), контрол на източника на компанията, артикул система за проследяване, интегриране и тестване и с VSTS повече интегриран, делектиращ стил подход към развитието. Git е ан важна част от това, но далеч от цялата история. Microsoftписа днес за някои от своите преживявания с VSTS, включително някои от проблемите, които мащабът на операцията е причинил.

Приемането на VSTS функциите и облекчава практиките не е еднакво през WDG. Непрекъснатото интегриране и непрекъсната доставка правят смисъл за някои части на WDG – онлайн услугите са очевиден пример, и дори някои от приложенията в магазина на Microsoft могат да отговарят на изискванията, но те са по-малко приложими към основната операционна система Windows себе си. Независимо от това, компанията работи за стандартизация практики, които са общи за всеки компонент.

Актуализацията на Fall Creators (версия 1709) е добра демонстрация от колко голяма операция е Windows. Тази актуализация включва някои 4 милиона комисионни, групирани в половин милион искания за изтегляне, за да получите тези промени, включени в основния код на Windows. Всяко дърпане заявка – група от промени, събрани заедно, представляващи нова функция, поправка на грешка или подобно – е искане за обединяване на някои промени в основния клон, като тези промени се слели в най-много скорошна версия на основния клон. Ако има две заявки за изтегляне приети едновременно и двамата ще се опитат да се слеят в едно и също текуща версия, така че едната ще успее, а другата ще се провали; itще трябва да бъде повторен срещу новата текуща версия, която включва приетата заявка. Сключено наивно, това създава много загубена работа за всяка заявка за изтегляне.

За типични проекти с нормален брой разработчици, броят на заявките за изтегляне обикновено е достатъчно нисък, че никой никога се опитва да обедини две заявки едновременно, така че този сценарий почти никога не се случва. Всъщност, ако има само един човек, който приема заявки за изтегляне – често срещана ситуация при малки проекти с отворен код – това никога няма да се случи. Но за Windows, огромният брой издърпване заявки и промени означава, че основният клон е почти винаги се актуализира, което прави много по-вероятно две заявки за изтегляне ще се опита да се слее едновременно. По този начин заявките за изтегляне ще се провалят, дори след като са били приети. За да се справи с това, Microsoft добави a система за опашка, така че приетите заявки за изтегляне са автоматично изпълнява се последователно; те не се състезават един срещу друг и система може да изреже пропилената работа, която би наивна система в противен случай трябва да направя.

Това представлява повтарящ се проблем с 1ES: практики, които са глоба за по-малки екипи и продуктите стават неизползваеми със 7000 разработчици и 4000 дизайнери, мениджъри на програми и услуги инженери, работещи в рамките на WDG. Като друг пример, редовното използване на VSTS падащо поле с потребителски имена за присвояване на работни елементи на хора. Тази система работи добре, когато проект има само няколко разработчици, но Microsoft има общо около 80 000 акаунта във VSTS много от тях да бъдат изброени в едно падащо меню.

И компанията има много работни позиции. Практиката на Microsoft е да използвате работни елементи за всичко; бъгове и нови функции, за например, са всички работни елементи. Исторически, компанията даде широко вътрешен достъп до проследяване на грешки, но беше проследяване на нови функции много по-непрозрачен, видим само за екипите или подразделенията, които работят особеност. С 1ES тези неща се записват всички в рамките на системата VSTS, с видимост за цялата компания и общо около 10 милиона работни артикула.

С подобрената видимост зависимостите от разделянето могат да бъде създаден така, че например функция Visual Studio или Office може да бъде настроен да зависи от функция на Windows. Напредък на тези елементи също може да се проследи, за да се гарантира, че и двата кораба в точното време. Преди 1ES компанията имаше пет различни начина за проследяване на тези зависимости.

Работата по 1ES не включва само изграждането на общо система за разработка на Windows, но и общи процеси и имена за тези процеси. Преди това различните екипи могат да използват термина “бъг” или “проблем” или “дефект”, и когато бъдат адресирани, тези грешки могат да бъдат да бъде “завършен” или “завършен” или “затворен” с различни работни процеси за боравене с тях. При обединяването на различните групи, терминологията и процесите се стандартизират, което дава възможност за по-добро отчитане и по-лесна комуникация между потоците.

Microsoft използва опита на WDG с Git, за да предложи промени в софтуер с отворен код и работи през последната година до включете тези промени в самия Git. Същото е вярно на мащабирането, приложено към VSTS. Като пример WDG поиска това възможност за създаване на архиви на VSTS данни; бе открита тази функция като цяло е полезен и беше пуснат като VSTS с отворен код разширение през 2016 г. и се използва както за архивиране, така и за миграция на данни между VSTS акаунти.

Like this post? Please share to your friends:
Leave a Reply

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: