- Главная
- →
- Тестирование, нагрузочное тестирование
Контроль качества высоконагруженных систем Тестирование, нагрузочное тестирование
Программист, команда поиска Avito.ru.
3 года опыта web-разработки на Python, последние 4 года работает в highload-проектах, интересуется noSQL-базами данных и облачными технологиями. Разработал пилотную версию шардинга для Tarantool 1.6 и полный цикл тестирования шардинга в отделе Tarantool. Автор tarantool-debugger.
Тезисы
Разработка любого высоконагруженного сервиса не обходится без нагрузочных тестов. Во многих проектах процесс анализа работы системы под большой нагрузкой слабо структурирован или выполняется непосредственно в бою. Есть масса статьей и рецептов использования тех или иных инструментов, но самые важные вопросы не раскрыты до конца: что именно мы должны измерять, правильно ли мы интерпретируем результаты и как ловить баги, которые проявляются только под высокой нагрузкой.
В своем докладе я расскажу о том, как построить процесс контроля качества highload-сервисов с нуля:
* Контроль изменений в продукте: пишем тесты, по результатам которых можно принимать решения.
* Поиск узких мест: оцениваем прыжки в производительности, используем pprof, pstack и language-specific утилиты для анализа деградации и спайков.
* Влияние окружения: создаем "стерильные" условия тестирования, как kubetnetes, docker и виртуальные машины могут смазать результаты.
* Бизнес-логика: проверяем корректность бизнес-логики во время нагрузочного теста, техники для проверки больших объемов данных.
* Отказоустойчивость: измеряем производительность при отключении отдельных частей системы, немного расскажу про jespen и тесты распределенных систем.
* Автоматизация: проводим эксперименты на каждый коммит, не требуя дополнительных ресурсов (разбор конкретного примера с anisble и сервисом для сбора и отображения результатов).
* Инструменты: Live-демонстрация нагрузочного тестирования и сравнение популярных инструментов (Yandex Tank, k6, WRK2 и другие).
К докладу будет приложен репозиторий с демо-сервисом и реализованной инфраструктурой нагрузочных тестов.