Попробовать
демоверсию
Бесплатная демоверсия позволяет ознакомиться со всеми возможностями нашего биллинга
+7 499 940-95-05

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

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

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

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


Веб-портал, созданный с использованием 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 используются для отслеживания производительности веб-клиента, мониторинга времени ответа со стороны сервера и проведения тестов доступности из любой точки мира.



Вот так выглядит портал 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: Поиск проблем, диагностика неполадок и статистика использования ваших веб-приложений.

 

Подписывайтесь на наш блог, чтобы не пропустить ничего интересного!

21.12.2015

Другие публикации

По определению консалтинговой компании Deloitte, текущий период в мировой экономике характеризуется неопределенностью. Поэтому бизнес во всем мире стремится к оптимизации и снижению издержек. Сегодня мы рассмотрим несколько способов, с помощью которых компании из разных стран экономят уже сейчас.
В новой версии Гидры мы по традиции продолжили работу над коммерческими возможностями биллинга. Встречайте контрактные тарифы! Другие мелкие улучшения упрощают интеграцию Гидры с внешними системами.
Компании из самых разных отраслей бизнеса сталкиваются с часто повторяющимися бизнес-процессами, связанными с обработкой заявок. В большинстве отраслей выполнение типовых работ и услуг — это сложный и разветвленный бизнес-процесс. Мы много размышляли об этих проблемах и создали инструмент, который каждая компания могла бы легко адаптировать под себя — новый продукт Гидра OMS
В одном из наших постов мы уже описывали ситуацию, в которой бесконтрольный рост таблиц в базе данных одной компании-пользователя нашей системы привел к настоящему DoS. Сегодня речь пойдет о еще одном интересном случае внезапного сбоя, который сделал «день смеха» 1 апреля этого года совсем не смешным для службы поддержки «Латеры».
В Instagram развертывание backend-кода (основная программно-аппаратная часть, с которой работают клиенты) происходит от 30 до 50 раз в день, каждый раз, когда инженеры подтверждают изменение оригинала. И, по большей части, без участия человека — сложно в это поверить, особенно учитывая масштабы соцсети, но факт остается фактом.
В этой заметке речь пойдет о масштабировании. Разработчики open-source почтового приложения Nylas опубликовали в своем блоге материал о том, как им удалось масштабировать систему в 20 раз за три недели с помощью инструмента ProxySQL. Для этого им пришлось переехать с Amazon RDS на MySQL на EC2.
Интересный материал о работе с JSON, и в частности, о применении ограничений опубликовал в своем блоге разработчик Магнус Хагандер (Magnus Hagander) — в нашем блоге мы решили представить его основные идеи.
Успешно завершили интеграцию биллинга Гидра с порталом NEXT TV.
В этой заметке мы рассказываем о плюсах и минусах денормализации баз данных. Разработчик баз данных и финансовый аналитик Эмил Дркушич (Emil Drkušić) написал в блоге компании Vertabelo материал о том, зачем, как и когда использовать этот подход. Мы представляем вашему вниманию главные тезисы этой заметки и делимся своим опытом.
Разработчики из американской компании Gaslight написали интересный материал о том, почему организация, известная своей любовью к Ruby и Ruby on Rails, решила инвестировать в освоение новых технологий — например, Clojure. Мы тоже работаем с этим языком программирования, поэтому решили выделить главные тезисы команды Gaslight в отдельный материал.
Разработчик и сотрудник проекта CouldBoost.io Наваз Дандала (Nawaz Dhandala) написал материал о том, почему в некоторых случаях не стоит использовать MongoDB. Мы в «Латере» уже много лет работаем с этой СУБД, поэтому решили представить и свое мнение по данному вопросу.
Немецкий журналист и хакер Ляйф Риге (Leif Ryge) написал для издания Ars Technica интересный материал о том, что современный подход к организации обновлений программного обеспечениях несет в себе серьезные риски информационной безопасности. Мы представляем вашему вниманию главные мысли этой заметки.
Инженер проекта Haleby.se написал материал, в котором рассказал о причинах выбора в качестве инструмента оркестрации Docker-контейнеров технологии Kubernetes. Мы представляем основные мысли этой заметки.
Адаптация заметки бывшего сотрудника Amazon про то, почему плохие продукты пользуются большим успехом, опубликованная в авторской колонке Дмитрия Копловича на Rusbase.
Поучительная история из жизни нашей техподдержки про то почему операторам нужно мониторить размеры таблиц в своих базах.
Инженер компании Akalak & Neo Technology Горка Садаковски (Gorka Sadakowski) написал интересный материал о том, как использование графовых баз данных может в режиме реального времени предотвращать мошенничество в сфере электронной коммерции. Мы представляем вашему вниманию основные мысли этой заметки.
Платежные протоколы уязвимы — об этом рассказали немецкие исследователи информационной безопасности на конференции Chaos Computing Club. Предлагаем вам адаптированный перевод их выступления.
Наша адаптация заметки разработчика и системного архитектора Михаэля Виттига о наиболее распространенных ошибках в использовании Amazon Web Services.
Представляем вашему вниманию адаптированный перевод одной из глав книги «Архитектура open-source-приложений», в которой описываются предпосылки появления, архитектура и организация работы популярного веб-сервера nginx.
Наш сегодняшний пост посвящен тому как мы писали софт для контроля работы удаленных сотрудников.
Сегодня мы расскажем про устройство системы подпольного банкинга Хавала, которая возникла еще в VIII веке и до сих пор пользуется большой популярности в странах Среднего Востока, Азии и Африки.
Мы уже рассказывали о том какие проблемы могут возникнуть у компании при саомостоятельной разработке сложных систем. Сегодня мы поговорим о том, как мы работали над повышением отказоустойчивости «Гидры».
Адаптированный перевод заметки главного инженера LinkedIn Джоша Клемма о процессе масштабирования инфраструктуры социальной сети.
Адаптированный перевод заметки инженера финансового стартапа Stripe о том, как его команда мигрировала огромное количество записей в базе данных.
По нашим оценкам, около половины российских операторов связи используют самописный (или переписанный до неузнаваемости простенький «покупной») софт. Сегодня мы поговорим о возможных минусах такого подхода.
Появились маркетинговые инструменты для сегментации абонентской базы, управления скидками и пакетными предложениями.
Подробнее читайте в блоге.
В новой версии мы полностью переработали механизм работы с услугами. Это сразу дало несколько серьезных улучшений, но полностью все заложенные в новой версии возможности будут раскрыты в следующих версиях.
В новой версии была полностью переработана система прав доступа. Новая система уникальна и позволяет реализовать самые смелые замыслы по разграничению доступа сотрудников к биллингу.

Начните знакомство с Гидрой прямо сейчас

Попробовать демоверсию Купить Гидру

Оформление демоверсии

Пожалуйста, укажите реальный email, на него придут данные для доступа в демо.
Все поля являются обязательными для заполнения.
.hydra-billing.com

Для вас будет развернута персональная облачная версия Гидры.
Нажимая кнопку "создать демоверсию" вы соглашаетесь с
Политикой обработки персональных данных.

Мы можем вам перезвонить

Нажимая кнопку "отправить" вы соглашаетесь с
Политикой обработки персональных данных.

Напишите нам!

Ваша компания

Услуги, которые вы предоставляете:

Нажимая кнопку "отправить" вы соглашаетесь с
Политикой обработки персональных данных.

Скачать буклет

Ваш адрес:

Хотите узнать больше?

Рассылка делается примерно раз в месяц. Мы обещаем бережно хранить ваш электронный адрес и никому его не выдавать даже под пытками.