Pull to refresh
98.6
CloudMTS
Виртуальная инфраструктура IaaS

Оптимизация работы git-сервера

Reading time 2 min
Views 19K
На Хабре и в нашем блоге о корпоративном IaaS мы много пишем об облачных технологиях, и рассматриваем интересные инфраструктурные проекты различных компаний. Сегодня поговорим о повышении производительности git-сервера и взглянем на историю и опыт проекта Clever Cloud.

/ фото Karl Baron CC

На старте проекта команда Clever Cloud воспользовалась gitolite — утилитой для управления репозиториями Git. Готовое функциональное решение с возможностью управления его конфигурацией позволяло описать каждого пользователя и каждый репозиторий.

Для автоматической актуализации данных настроек разработчики Clever Cloud даже самостоятельно создали инструмент под названием etilotig. В итоге и сам gitolite перестал удовлетворять всем запросам.

Причин было несколько: начиная с того, что все репозитории создавались в одной директории (серьезная проблема производительности) и до необходимости переписывания всего файла настроек для внесения даже незначительных изменений. Более того, создание нового репозитория могло занимать до 5 минут, что выходило за рамки пределов разумного времени.

В итоге было принято решение доработать свою утилиту etilotig. Она должна была управлять SSH-ключами, авторизацией, созданием репозиториев и установкой перехватчиков.

Как они это сделали


Когда etilotig управлял только конфигурацией, то он лишь перенаправлял SHH-ключи gitolite, который, в свою очередь, их обрабатывал. Теперь ему нужно было еще и самостоятельно обрабатывать файл authorized_keys. Каждый раз, когда добавлялся или удалялся SSH-ключ, утилита создавала новый файл с ключами и заменяла старый.

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

Управление авторизацией в etilotig реализовано довольно просто: при создании внутренней конфигурации генерируется скрипт на Perl, который сверяет SSH-ключ при каждой попытке подключения. Если ключ верный, то транзакция разрешается, иначе — запрещается.

Заключение


Подобных подход к увеличению производительности снизил время обработки до менее чем секунды (было 3-5 минут), а размер etilotig уменьшился на 50%. В своем личном блоге команда Clever Cloud заявила о том, что средний прирост производительности составил 30000%.

P.S. А вот о чем еще мы пишем в нашем блоге:

Tags:
Hubs:
+11
Comments 8
Comments Comments 8

Articles

Information

Website
cloud.mts.ru
Registered
Founded
Employees
201–500 employees
Location
Россия