Как QA-команда GitLab использует GitLab Performance Tool

Автор оригинала: Grant Young
  • Перевод
Перевод статьи подготовлен в преддверии старта курса «DevOps практики и инструменты».




Мы запустили ряд инициатив по улучшению производительности GitLab и нам нужен был новый инструмент для бенчмарков.

Тестирование производительности — это сложный процесс, отличающийся от других видов тестирования. Для получения результатов здесь нужны выделенные ресурсы, специальные подходы и инструменты. Когда я присоединился к компании и стал первым членом этой команды, моя задача состояла в том, чтобы перенести зарождающиеся усилия по улучшению производительности на бОльшие масштабы. Для этого мы сделали новый инструмент с простым названием GitLab Performance Tool (GPT).

Мы рады объявить об общедоступном релизе GPT. В этом посте мы расскажем, как мы используем GPT для тестирования производительности GitLab, а также как вы можете использовать его для тестирования своих окружений.

Однако, сначала посмотрим на то, с чем мы его используем.

Эталонные архитектуры и тестовые данные


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

Таким образом, одна из инициатив — это разработка эталонных архитектур GitLab (GitLab Reference Architectures), которые могут справиться с большим количеством пользователей. Мы хотим использовать эти архитектуры как способ стандартизации рекомендуемых нами конфигураций, чтобы предоставлять клиентам высокопроизводительные, масштабируемые и высокодоступные развертывания GitLab.

Для такого инструмента нам нужны реалистичные тестовые данные, например, большие проекты с коммитами и запросами на слияние (merge request). Для первой итерации мы взяли проект самого GitLab’а.

После настройки и запуска тестовых сред, мы были готовы к их тестированию с помощью GPT.

Что такое GitLab Performance tool (GPT)?


GPT может использоваться для запуска различных нагрузочных тестов для бенчмарка GitLab. Все что требуется, это узнать, какую пропускную способность может выдержать тестируемая среда (в виде запросов в секунду), и обеспечить подготовку тестовых данных.

GPT разработан на базе одного из ведущих инструментов для нагрузочного тестирования — k6. Вот некоторые из возможностей GPT:


Талантливая команда Load Impact создала k6, который является ядром GPT. Мы быстро поняли, что нам не нужно изобретать велосипед, так как k6 удовлетворяет большинству наших требований: он написан на Go, поэтому очень производительный и с открытым исходным кодом. Спасибо команде не только за разработку k6, но и за сотрудничество с нами.

Как мы используем GPT


GPT используется в нескольких автоматизированных пайплайнах GitLab CI для получения быстрой обратной связи о работе GitLab. CI-пайплайны эталонных архитектур работают с последним пре-релизом и, как правило, запускаются ежедневно или еженедельно. Сразу после тестирования мы анализируем результаты для поиска проблем. Все последние результаты мы публикуем в GPT wiki согласно нашему Transparency value.

GPT также используется в пайплайне сравнительного тестирования, чтобы увидеть, как изменяется производительность GitLab от релиза к релизу. Эти результаты важны, так как показывают картину улучшения производительности. Результаты сравнения бенчмарков также доступны в GPT wiki.

С помощью GPT мы смогли выявить несколько узких мест в производительности GitLab и совместно с разработчиками определить приоритеты улучшений. Этот процесс принес определенные плоды и мы с нетерпением ждем улучшения показателей производительности с каждым релизом GitLab. Например, релиз 12.6 показал несколько заметных улучшений по всем направлениям, в одном из которых мы достигли снижения на 92%! Обнаруженные проблемы вы можете посмотреть в нашем баг-трекере.

Как вы можете использовать GPT


Мы давно решили, что хотим следовать тем же принципам открытого исходного кода, как и для нашего основного продукта, поэтому при создании GPT мы ориентировались на всех пользователей, а не на то, чтобы сделать его исключительно внутренним продуктом. Поэтому мы не только позволяем использовать его другим, но и поощряем это! Это выгодно и нам и клиентам, так как мы получаем обратную связь с разных точек зрения, о которых мы и не думали. Некоторые примеры этого — улучшение руководств по рекомендуемым спецификациям основанных на пропускной способности, или улучшения в использовании GPT в автономном режиме для пользователей с частными облаками.

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

GPT в действии


Наконец, после рассказов о GPT пришло время показать его в действии. Вот как выглядит запуск нагрузочного теста для List Group Projects API с 10k эталонной архитектурой:


asciinema.org/a/O96Wc5fyxvLb1IDyviTwbujg8

Для получения дополнительной информации о результатах смотрите документацию GPT.

Что дальше


Наша цель — сделать GitLab, c точки зрения производительности, лучшим в своем классе. И мы только в начале этого пути. Мы рады тому, что можем улучшить качество обслуживания клиентов, предоставив им дополнительные инструменты.

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

Поделитесь своими отзывами и/или предложениями по GPT в репозитории проекта GPT! Мы будем рады вашим идеям и предложениям.



Ansible: Быстрый старт.


OTUS. Онлайн-образование
Цифровые навыки от ведущих экспертов

Комментарии 0

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое