Stroppy - это фреймворк для тестирования различных баз данных. Он позволяет развернуть кластер в облаке, запустить нагрузочные тесты и имитировать, например, сетевую недоступность одной из нод в кластере.
Чтобы усложнить задачу для СУБД, Stroppy может попытаться сломать кластер БД, ведь в реальном мире отказы случаются гораздо чаще, чем нам хочется. А для горизонтально масштабируемых БД это случается еще чаще, так как большее количество физических узлов дает больше точек отказа.
На данный момент мы реализовали поддержку FoundationDB, MongoDB, CockroachDB и PostgreSQL (нужно же с чем-то сравнивать всё остальное).
Кроме того, для того, чтобы было удобнее анализировать результаты тестов, stroppy интегрирован с Grafana и после каждого прогона в автоматическом режиме собирает архив с графиками мониторинга, масштабированными по времени прогона. Также для FoundationDB и MongoDB поддерживается сбор внутренней статистики с заданной периодичностью - для FoundationDB собираются данные команды консольной команды status json, для MongoDB - данные команды db.serverStatus().
Основные возможности
- Развертывание кластера виртуальных машин в выбранном облаке через terraform. Поддерживается Yandex.Cloud и Oracle.Cloud
- Развертывание kubernetes кластера в развернутом кластере виртуальных машин
- Развертывание выбранной СУБД в этом кластере
- Сбор статистики из Grafana метрик k8s кластера и системных метрик виртуальных машин (CPU, RAM, storage и т.д.)
- Управление параметрами тестов и самого развертывания - от кол-ва VM до подаваемой нагрузки и управляемых неполадок
- Запуск тестов по команде из консоли
- Логирование хода теста - текущее и итоговое latency и RPS
- Удаление кластера виртуальных машин
- Развертывание нескольких кластеров с одной локальной машины с изолированным мониторингом и консолью запуска