Корпоративный GitHub: как Azure увеличил количество работников на GitHub до двух тысяч

в 14:22, , рубрики: azure, github, Блог компании Латера Софтвер, инфраструктура, масштабирование

Мы в «Латере» занимаемся созданием биллинга для операторов связи. В блоге на Хабре мы не только рассказываем об особенностях нашей системы и деталях ее разработки (например, обеспечении отказоустойчивости), но и публикуем материалы о том, как другие компании работают с ИТ-инфраструктурой. Сегодня мы представляем вашему вниманию адаптированный перевод заметки главного разработчика Azure Джеффа Уилкокса, о том, как более двух тысяч членов команды проекта переезжали на GitHub.

За последние четыре года Azure очень многое перенял от opensource-сообщества, поэтому нам пришлось пересмотреть подходы к работе и минимизировать количество выполняемых вручную операций, необходимых для поддержания крупной GitHub-организации. Мы автоматизировали большую часть управленческих функций, создав веб-приложение с открытым исходным кодом, которое использует некоторые из сервисов Azure (это App Service, Active Directory и Azure Storage), GitHub API и другие свободно распространяемые решения.

В этом посте я представлю вам наш портал для работы с GitHub, исходный код которого сейчас там же и размещен. Я расскажу о функциях, особенностях и основных программных блоках приложения, а также поделюсь с вами историей о том, как GitHub поспособствовал нашему развитию. В конце я добавлю несколько ссылок, где можно будет получить дополнительную информацию. Еще я подготовил отдельный пост, раскрывающий подробности проекта: как все начиналось, и к чему мы пришли.

Разработчики и организации любых размеров сразу почувствуют, насколько может быть полезным наш портал: Azure Active Directory дает инженерной группе доступ к инструментам для работы с GitHub.

Корпоративный GitHub: как Azure увеличил количество работников на GitHub до двух тысяч - 1

Веб-портал, созданный с использованием Azure, GitHub API и Node.js, позволяет автоматизировать работу с GitHub и ускорить адаптацию новых сотрудников.

Портал Azure с открытым исходным кодом для GitHub

Чтобы пригласить кого-нибудь в GitHub-организацию, администратор должен отправить приглашение человеку, указав его имя пользователя на GitHub, которое часто никак не связано с названием фирмы или адресом электронной почты.

GitHub – это сервис, отлично подходящий для команд малых и средних размеров: простые решения, которые он предлагает, работают в большинстве случаев. Однако мы это переросли – нам нужна была не простота, а автоматизация, чтобы не тратить время попусту на выполнение рутинных операций и сконцентрироваться на важных задачах.

Хотя GitHub Enterprise и обладает некоторыми возможностями интеграции, в случае с GitHub.com, где мы взаимодействуем с миром открытого программного обеспечения, каждому сотруднику необходим официальный аккаунт.

Портал Azure для GitHub начинался как проект для хакатона, когда нам нужно было предложить новое решение проблемы сложности ручного управления организациями и командами. Давая пользователям возможность проходить аутентификацию с помощью как персональной, так и корпоративной учетной записи и автоматизируя процесс присоединения к командам, мы можем значительно упростить работу с GitHub, взять курс на открытое ПО и сделать наших юристов счастливее.

Со временем мы подстраивались под изменения, проводимые GitHub, и настраивали интеграцию с другими системами в компании. Microsoft тоже через это проходил.

Новые инструменты и простая организация рабочего процесса позволили делегировать часть задач сопровождающим (специалистам, имеющим непосредственное отношение к проекту, которые не являются администраторами), что повысило продуктивность инженеров, дав им возможность работать в комфортном для них темпе.

Несмотря на то, что нам было интересно развивать наш проект, мы надеемся, что с развитием GitHub сможем сократить часть функционала портала. GitHub – наш надежный партнер, и мы рады развиваться вместе.

Давайте взглянем на несколько простых сценариев работы и особенности портала.

Моментальное введение в работу новых сотрудников

С ростом численности организации появляется необходимость увеличить количество администраторов, но это не лучшее решение. У администраторов есть все права на чтение/запись, доступ к критическим зонам репозитория, управление командами и организацией, потому у них, вероятно, есть более важные задачи, чем вручную приглашать в группу новых участников. Когда сотрудников становится слишком много, приходится задавать важные вопросы: «Этот пользователь является сотрудником Microsoft? Мы знаем кто он? Эта девушка все еще работает с нами, или давно уволилась?»

Портал использует GitHub API, чтобы разрешать проведение некоторых операций от имени администратора. Используя открытый протокол авторизации OAuth, мы можем отправлять приглашения пользователям и принимать их запросы без промедлений, а также проверять, включена ли у них двухфакторная аутентификация (это необходимо для полного соответствия стандартам). После этого мы предлагаем им возможность присоединиться к командам, в которых они будут работать.

Еще портал дает возможность делиться опытом, распространять ссылки на доступные обучающие материалы и методические рекомендации. Некоторые из наших инженеров начинают работать с GitHub впервые, поэтому их обучение является очень важным аспектом.

Поддержка множества организаций

Портал поддерживает множество организаций. Пользователи могут присоединяться сразу к нескольким. Когда происходят кадровые перестановки, мы можем быть уверены, что исключили всех бывших сотрудников из всех организаций. Администратор может быть закреплен лишь за одной организацией, поскольку каждая из них имеет свои уникальные учетные данные.

Распределение ролей между администраторами

В семействе Github-организаций Azure нет администраторов, которые являются обычными пользователями – все аккаунты администраторов специально защищены и распределены по ролям. Это снижает вероятность ошибок и исключает случайные «пуши» коммитов в репозиторий.
Каждая организация имеет специальную команду, выдающую отдельным пользователям sudo-права – они будут помогать в тех случаях, когда администратор по каким-либо причинам недоступен, а также в экстренных ситуациях.

Список сотрудников сопоставлен с именами пользователей на GitHub

Список сотрудников и их GitHub-данные отображаются рядом во время выполнения любой из операций на портале: добавление членов группы и сопровождающих, просмотр запросов на присоединение к команде, просмотр запросов на создание новых репозиториев. Это упрощает процесс присоединения работников к командам, поскольку теперь не нужно дополнительно узнавать их имя пользователя на GitHub.

Приложение также предоставляет несколько хуков и REST API, которые позволяют другим инструментам с открытым исходным кодом, используемых в Microsoft (включая бот Azure CLA), взаимодействовать с хранилищем данных.

Передача части задач сопровождающим

Мы доверяем нашим инженерам, поэтому часть важных решений принимают не администраторы, а сопровождающие (team maintainers). У них есть свои права доступа. Каждая организация имеет специальную команду, задачей которой является одобрение создания репозиториев.

Сопровождающие имеют несколько большие права и могут делать репозитории публичными, добавлять новых членов команды, управлять правами доступа, веб-хуками и подключать к работе внештатных сотрудников.

До октября 2015 года наш портал имел такую «должность», как владелец команды. Эти люди могли привлекать к работе новых участников и управлять репозиториями. После того, как GitHub выпустил обновление организаций, мы перешли на новую модель.

Одобрение запросов с помощью задач в GitHub

Вместо базы данных для управления допусками и созданием репозиториев, мы используем легкую NoSQL базу данных, объединенную с задачами в GitHub. В момент поступления запроса на присоединение к команде в приватном репозитории открывается задача, к которой имеют доступ все члены команды, а сопровождающим команды приходит уведомление со ссылкой, по которой этот запрос можно обработать. С таким подходом мы достигли новой степени прозрачности и простоты.

Использование облачной инфраструктуры Azure

Портал пользуется программным обеспечением с открытым исходным кодом, в частности, он использует следующие сервисы Azure:

  • Хостинг приложений, высокая доступность, непрерывная развертка и конфигурация – все это возможно благодаря Azure App Service. CI/CD настраиваются для того, чтобы упростить процессы развертки и тестирования, ускорить их. Слоты развертывания позволяют выпускать обновления «на лету», используя подготовительную ветку Git. В крайнем случае сервис Diagnostic Log Stream, работающий в режиме реального времени, может быстро и безболезненно диагностировать проблемы, а Application Settings уведомит о существующей неполадке API или портала.
  • Используя Azure Active Directory и список сотрудников Microsoft, наше приложение может аутентифицировать и авторизовывать работников.
  • Виртуальные ссылки на профили пользователей хранятся в Azure Table Storage – элементе службы хранения. Это быстрое и недорогое высоконадежное, распределенное хранилище (geo-redundant storage).
  • Azure Redis Cache – это управляемый кэш, задачей которого является снижение нагрузки на GitHub API, хранилище и другие важные рабочие данные. Это позволяет развернуть необходимое количество приложений с общим кэшем в любом количестве регионов или инстансов.
  • Visual Studio Application Insights и NPM-модуль Node.js используются для отслеживания производительности веб-клиента, мониторинга времени ответа со стороны сервера и проведения тестов доступности из любой точки мира.

Корпоративный GitHub: как Azure увеличил количество работников на GitHub до двух тысяч - 2
Вот так выглядит портал Azure. На стартовой странице закреплены основные данные и информация о портале. Здесь можно найти аналитические данные работы приложения, графики времени отклика и временные графики количества запросов get/set Redis. Также отсюда можно быстро перейти на другие сервисы Azure и проследить за текущим процессом развертки на App Service

Отличные инструменты с открытым исходным кодом

Среди front-end-компонентов, используемых в проекте, числятся Bootstrap, jQuery и еще несколько маленьких плагинов последнего. Сам портал – это приложение Node.js, которое использует следующие NPN-модули: applicationinsights, async, azure-storage, express, jade, moment, node-uuid, octonode, passport, passport-azure-ad, passport-github, redis. Приложение доступно на платформах Mac, Windows и Linux.

В процессе разработки мы приняли участие в создании octonode Павана Кумара Сункары (Pavan Kumar Sunkara) – pksunkara, реализовав большое количество дополнительных API-вызовов для службы управления организациями GitHub.

Я надеюсь, что многие из вас сумеют извлечь пользу из нашей работы, а также поделятся с нами своими мыслями, поскольку код находится в открытом доступе, и каждый может внести свою лепту. Azure координирует свою работу с офисом Microsoft, ответственным за распространение ПО с открытым программным кодом, поставляя портал как часть набора Open Source-инструментов корпорации.

Azure на GitHub: четыре года спустя

Когда мы создали свою первую организацию в конце 2011 года, у нас уже был план по развитию, расписанный до июня 2012, и GitHub был его частью: новое пространство за пределами области, привычной для Microsoft. Все началось с того, что мы вытащили корпоративную кредитку, чтобы заплатить GitHub, и немедленно наняли 20 человек на должности администраторов организаций.

Вместо того чтобы разрабатывать проекты «в тайне от всех», мы получили возможность работать в команде и создали множество наших открытых проектов прямо на GitHub. Сбор отзывов на ранних этапах и проверка кода сообществом программистов оказали положительное влияние на качество продуктов. Оказывается, огромное количество клиентов Azure пользуются GitHub – работать с ними было очень увлекательно.

Сегодня в нашей GitHub-организации числятся более 2000 человек из всех «уголков» Microsoft. При этом мы имеем небольшое количество отчетной документации, заключенный договор с отделом продаж GitHub, высокий уровень вовлеченности в работу организации и множество инженеров, наслаждающихся новообретенными возможностями.

Часть задач по принятию решений была отдана на откуп сопровождающим, которые понимают тонкости процесса разработки. Наши команды инженеров советуются с Open Source-сообществом по самым разнообразным вопросам: от шаблонов ресурсов (разверните высоконадежный кластер MongoDB в облаке напрямую из GitHub) до улучшения документации на веб-сайте Azure, SDK и пробных версий сервиса. Очень хочется увидеть, что будет дальше.

Дополнительные материалы

Портал с открытым исходным кодом для GitHub

  • Блог, в котором Джефф Уилкокс (Jeff Wilcox) подробно рассказывает историю создания портала с открытым исходным кодом и описывает его архитектуру;
  • Портал Azure для GitHub на GitHub – можно использовать clone(), можно fork(), а можно просто посмотреть;
  • Почитайте о том, как команда инженеров Azure начала использовать контроль версий Git в Microsoft.

Node.js на Azure

Сервисы Azure и облачная инфраструктура

  • Azure App Service: Создавайте и размещайте интеллектуальные мобильные и веб-приложения;
  • Azure Active Directory: Управление доступом для облака;
  • Azure Redis Cache: Dedicated Redis под управлением Microsoft;
  • Azure Storage: Хранилище для BLOB-объектов, таблиц, очередей и других важных сервисных данных;
  • Visual Studio Application Insights: Поиск проблем, диагностика неполадок и статистика использования ваших веб-приложений.

Автор: Латера Софтвер

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js