(gcc вышел в 1987 году),операционные системы (недавно Linux исполнилось 30 лет), даже редакторы кода (передаем привет поклонникам Vim). Но есть одна область, которая в наше время бурно развивается и пополняется новыми “лицами” - это СУБД.
Существует известный стереотип о NoSQL решениях, будто они отлично справляются с огромными объемами данных, легко масштабируются и не требуют столь же внимательного подхода к модели данных, как классические реляционные БД, но не поддерживают ACID транзакции и обеспечивают только eventual-consistency.
Однако в последнее время индустрия NoSQL взрослеет. Появляются такие решения, как FoundationDB, гарантирующее "настоящие" транзакции;
в 2017 году вышла CockcroachDB, совместимая с PostgreSQL, но горизонтально масштабируемая БД, и даже пионер этого рынка, - MongoDB - начиная с версии 3.6 ввел поддержку транзакций поверх нескольких документов.
У нас, в Picodata, от такого многообразия разбежались глаза, и мы решили создать инструмент, который позволит сравнить все эти СУБД и
проверить, насколько им можно доверить наши данные в тяжелых условиях контролируемого хаоса (нет, не в продакшене). Встречайте: Stroppy.
Stroppy - это фреймворк для тестирования различных баз данных. Он позволяет развернуть в облаке кластер, запустить нагрузочные тесты и
имитировать, например, сетевую недоступность одной из нод в кластере.
Как же все это позволяет проверить надёжность? Дело в том, что для проверки целостности данных существует весьма элегантный "банковский" тест. Мы заполняем БД рядом записей о неких "счетах" с деньгами. Затем имитируем серию переводов с одного счета на другой в рамках предоставляемых СУБД транзакций. В результате любого количества транзакций общая сумма денег на счетах не должна измениться.
Чтобы усложнить задачу для СУБД, Stroppy может попытаться сломать кластер БД, ведь в реальном мире отказы случаются гораздо чаще, чем нам хочется. А для горизонтально масштабируемых БД это случается еще чаще, так как большее количество физических узлов дает больше точек отказа.
На данный момент мы реализовали поддержку FoundationDB, MongoDB и PostgreSQL (нужно же с чем-то сравнивать всё остальное).
Сейчас работаем над поддержкой CockroachDB.
Будем рады любым вашим вопросам и пулл реквестам!
Тесты для слабаков, или я слепой?)
Не очень понял, вы тестируете кластер, который я построил в облаке или вы сами строите кластер, а потом его тестируете на надёжность?
Stroppy умеет раскладывать виртуалки в Terraform, потом наказывать на них k8s, на него наказывать оператор нужной базы, а потом уже запускать на все это тест
Обсуждают сегодня