За пределами синтетического те... Заметка

За пределами синтетического тестирования: захват и воспроизведение реальных нагрузок базы данных в Airbnb

Airbnb в значительной степени полагается на базы данных, совместимые с MySQL, для своей деятельности. Управление этими базами данных в масштабе создает проблемы с планированием мощностей, обеспечением согласованности во время обновлений и отладкой производственных инцидентов. Для решения этих проблем Airbnb разработала систему для захвата и воспроизведения реального трафика производственных баз данных.Ранее система Airbnb для захвата и воспроизведения запросов к базам данных была фрагментированной и не содержала достаточных деталей для точного воспроизведения. Она также требовала значительных усилий по обслуживанию и плохо масштабировалась. Новая система была разработана с тремя ключевыми целями: нагрузочное тестирование с реальным трафиком, обеспечение совместимости запросов при обновлениях и помощь в отладке производительности.Архитектура системы использует ProxySQL, существующий прокси, который находится между приложениями и базами данных. Это обеспечивает единую точку захвата, не зависящую от клиента, и не требует изменений в приложениях. Система состоит из трех собственных компонентов: Log Mover, Log Processor и Log Replayer.Log Mover, развернутый как сайдкар для ProxySQL, собирает журналы запросов и передает их в облачное объектное хранилище. Log Processor — это офлайн-задание, которое анализирует, группирует и упорядочивает эти журналы в наборы данных для воспроизведения для каждого кластера. Он также группирует запросы по временным меткам для точного контроля и переписывает запросы для поддержания согласованности поведения автоинкремента.Log Replayer воспроизводит захваченный трафик на целевых базах данных. Пользователи указывают исходный кластер, временной диапазон, целевые конечные точки и режим воспроизведения. Реплеер поддерживает режим "Только воспроизведение" для нагрузочного тестирования и планирования мощностей, а также режим "Воспроизведение и сравнение" для тестирования совместимости.Replay Task Scheduler разбивает задания на задачи и управляет их выполнением для сохранения исходного времени и параллелизма. Replay Task Workers масштабируются горизонтально для выполнения зарегистрированных запросов к целевым базам данных. Эта структура сыграла решающую роль в тестировании обновлений баз данных, таких как переход с MySQL 5.7 на 8.0, выявляя регрессии производительности и проблемы корректности на ранних этапах. Это позволяет командам обеспечить сохранение базового уровня производительности и обратную совместимость перед развертыванием в производственной среде.
CdXz5zHNQW_XwLrtezjOO.png