Кейс использования K6 в Picodata



Внутри эко-системы Grafana Labs есть инструмент для нагрузочного тестирования k6. Он немного странный (прожорливость, автоматизация на ява-скрипте, паралеллизация не по тредам/соединениям, а по параллельным пользовательским сессиям whatever it means). Но он становится всё более популярным, и выглядит мощно в плане кастомизаций. Кейс про то, как Picodata прикрутили k6 к тестированию своей СУБД.



Лонг-рид: https://habr.com/ru/companies/arenadata/articles/864974/



Ниже - краткое саммари (кстати, как вам промт?)



Кому будет интересна статья

* Гошникам

* Разработчикам распределённых систем и баз данных.

* Инженерам по нагрузочному тестированию.

* Специалистам, занимающимся построением инфраструктуры тестирования производительности.



Статья посвящена подходу компании Picodata к нагрузочному тестированию распределённых баз данных (NewSQL СУБД). Рассматриваются проблемы, с которыми сталкиваются разработчики таких систем, и выбор инструментов для создания практики тестирования производительности. Основное внимание уделяется созданию собственного решения — системы Picostress, основанной на инструментарии k6.



Используемые продукты и решения

* Picostress - разработанный инструмент для нагрузочного тестирования.

* Go - язык программирования, на котором написан весь код Picostress, а также k6

* k6 - утилита для создания нагрузочных тестов, поддерживающая выполнение скриптов на JavaScript.

* xk6-модуль: расширение для k6, реализованное для взаимодействия с Picodata через её нативные протоколы (iproto и pgproto).

* Cobra - Go-библиотека для создания CLI-приложений, использованная для создания обёртки вокруг k6.



Основные выводы

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

* Наиболее интересные особенности k6: интеграции в CI/CD процессы, создание сложных сценариев тестирования на JavaScript, поддержка постоянной нагрузки (constant throughput load) с учётом проблемы coordinated omission.

* Разработка собственного модуля: В Picodata был создан xk6-модуль для взаимодействия с нативными протоколами системы, что позволило реализовать нагрузочное тестирование, учитывающее специфику распределённых систем.

* Автоматизация и адаптивность: Picostress, основанный на k6, стал не только инструментом тестирования, но и ключевым элементом мониторинга и оптимизации производительности для каждого релиза продукта.