SlideShare a Scribd company logo
1 of 76
Download to read offline
Контроль качества
высоконагруженных
систем
Андрей Дроздов
Ошибки
Ошибки
Ошибки
Ошибки
Ошибки
Для чего проводить LT?
Дать информацию для принятия решений
Проверить то, что не попадает в predefined
Показатели
Емкость
Время отклика
Latency = transport + execution
15 минут 30 минут
Throughput = request / time
15 + 6*5 = 45 минут 30 + 5 = 35 минут
Показатели
Стабильность
Доступность
Stability
● Смогут ли клиенты купить обед при поломке?
● Как быстро касса будет восстановлена?
● Насколько при этом замедлится обслуживание?
● Не потеряются ли в кассе деньги?
Метрики
● Отказоустойчивость
● Время перерегулирования
● Деградация
● Консистентность
Как долго магазин не обслуживает клиентов?
Показатели
Масштабирование
Ограничения емкости
Scaling
● N обедов, если добавить еще кухню? (горизонтальное)
● N обедов, если установить более мощную плиту? (вертикальное)
● Один из компонентов обеда готовит только один повар
● Слишком мало касс (большие очереди, обедов много)
● Блюдо готовится медленно (высокий execution time)
Capacity blockers
Типовой тест
Что искать?
Что искать?
Как искать?
● Fast run (1 минута) - понимание ситуации
● Common case - штатная проверка
● Longevity - поиск редких случаев
● Branch compare - деградация
● Per commit checking - контроль качества
Подводные камни
Не получается выдать нагрузку
Проблема: hit-based выдает 10 krps вместо 30 krps
Предположение: Сервис тормозит
Не получается выдать нагрузку
Не получается выдать нагрузку
Не получается выдать нагрузку
Визуально: разница между system time и user time
По-быстрому: pstack и подобные утилиты
По-серьезному: pprof
Не получается выдать нагрузку
Анализ: Начинаем смотреть с уровня железа и сети (метрики)
Решение: Тюнинг буферов ядра, бонд из сетевых карт
Похожие ситуации: использование сценарных утилит в случае, где должны
использоваться hit-based
Вывод: Не продуманы ограничения инфраструктуры или модель
нагрузки
Построение требований
● Инфраструктура
○ Железо
● Модель нагрузки
○ Открытая
○ Закрытая
Синтетические тесты
Проблема: Нагрузочный тест не выявляет проблему
Предположение: Тестируем не все подсистемы
Синтетические тесты
{
“first”: “John”,
“last”: “Doe”,
“params”: []
}
Синтетические тесты
{
“first”: “John”,
“last”: “Doe”,
“params”: [
// lot of params
]
}
Синтетические тесты
Анализ: Смотрим на разницу в данных тестов и production
Решение: Приводим тестовые данные к боевым
Вывод: Не продуманы “профили” данных
Корректность данных
Корректность данных
Корректность данных
Построение требований
● Инфраструктура
○ Железо
● Модель нагрузки
○ Открытая
○ Закрытая
Построение требований
● Инфраструктура
○ Железо
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
● Модель нагрузки
○ Открытая
○ Закрытая
Синтетические тесты и прогрев
Построение требований
● Инфраструктура
○ Железо
○
● Деградация
○
○
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
● Модель нагрузки
○ Открытая
○ Закрытая
Построение требований
● Инфраструктура
○ Железо
○
● Деградация
○
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
● Модель нагрузки
○ Открытая
○ Закрытая
Синтетические тесты (2)
Проблема: Во время теста видим хорошие показатели, в
production через несколько дней теряются данные
Предположение: Настройки ttl в cold storage
Синтетические тесты (2)
Синтетические тесты (2)
Анализ: Тест длится 30 минут, в production проблемы начинаются через
сутки. Потери данных после перекладывания данных в cold storage
Решение: Делать longevity run, была найдена ошибка в настройках шардинга
Вывод: Не продуманы профили нагрузки с учетом специфики сервиса
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Инфраструктура
○ Железо
○
● Деградация
○
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Инфраструктура
○ Железо
○
● Деградация
○
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
Странные задержки VMWare
Проблема: CPU Freeze, спайки latency.
Предположение: Проблема в коде одной из подсистем.
Странные задержки на тестовом стенде
https://communities.vmware.com/thread/505923 - transparent_hugepage
Странные задержки на тестовом стенде
Анализ: Стали копать до уровня ОС: мониторинг, transparent hugepage
Решение 1: Уменьшить нагрузку/Поменять scale-unit
Решение 2: Отключить мониторинг VMWare и transparent_hugepage
Решение 3: Тестировать на реальном железе
Вывод: Не учтены особенности инфраструктуры
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Инфраструктура
○ Железо
○
○
● Деградация
○
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Метрики (CPU, memory, network, etc..)
● Инфраструктура
○ Железо
○ Особенности инфраструктуры
○
● Деградация
○
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
Полный ступор
Проблема: Из 10 млн транзакций не сходится 3
транзакции
Предположение: Ничего не понятно
Полный ступор
Полный ступор
https://github.com/jepsen-io/jepsen/blob/master/cockroachdb/src/jepsen/cockroach/bank.clj
Полный ступор
Анализ: В каждой подсистеме ввели дополнительные метрики и начали
повторять тесты
Решение: Введена метрика “оставшихся” транзакций при обработке батча,
найдена ошибка в коде
Вывод: Не продуманы продуктовые метрики
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Метрики (CPU, memory, network, etc..)
● Инфраструктура
○ Железо
○ Особенности инфраструктуры
○
● Деградация
○
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Метрики (CPU, memory, network, etc..)
● Продуктовые-метрики
● Инфраструктура
○ Железо
○ Особенности инфраструктуры
○
● Деградация
○
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
Проблема: Внутри ЦОД проблем нет, на уровне ЦОД есть.
Предположение: Проблема понятна, сложно воспроизвести
Отказ узлов в production
Отказ узлов в production
Отказ узлов в production
Отказ узлов в production
Анализ: Тестовый стенд эмулирует один ДЦ, ошибки между ДЦ не
проверяются
Решение: Сделать альтернативный тест с кластерами в 2 раза меньше,
уменьшить нагрузку вдвое и проверить отказ ДЦ
Вывод: Не продуманы точки отказа
Отказ узлов в production
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Метрики (CPU, memory, network, etc..)
● Продуктовые-метрики
● Инфраструктура
○ Железо
○ Особенности инфраструктуры
○
● Деградация
○
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
○ Задержка между ДЦ
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Метрики (CPU, memory, network, etc..)
● Продуктовые-метрики
● Возможные точки отказа
○ Внутри ДЦ
○ Между ДЦ
○ Задержка между ДЦ
● Инфраструктура
○ Железо
○ Особенности инфраструктуры
○
● Деградация
○ Время перерегулирования
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
○ Задержка между ДЦ
Kubernetes
Проблема: Latency меняется при каждой раскладке
Предположение: Возможно проблемы с базой
Kubernetes
Kubernetes
Анализ: Развернули тестовый стенд отдельно, исключили проблемы в
сервисе и базе (сомнительно)
Решение: Подробно раскрывается в докладе М. Прокопчука
Быстрое решение: Внести контейнер в pod, если это возможно
Вывод: Не учтены ограничения инфраструктуры
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Метрики (CPU, memory, network, etc..)
● Продуктовые-метрики
● Возможные точки отказа
○ Внутри ДЦ
○ Между ДЦ
○ Задержка между ДЦ
● Инфраструктура
○ Железо
○ Особенности инфраструктуры
○
● Деградация
○ Время перерегулирования
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Метрики (CPU, memory, network, etc..)
● Продуктовые-метрики
● Возможные точки отказа
○ Внутри ДЦ
○ Между ДЦ
○ Задержка между ДЦ
● Инфраструктура
○ Железо
○ Особенности инфраструктуры
○ Ограничения доступности
● Деградация
○ Время перерегулирования
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
Проблема: Через неделю сильная деградация latency.
Предположение: Как с longevity test, но нет
Все продумали, а в production деградация
Все продумали, а в production деградация
Все продумали, а в production деградация
Все продумали, а в production деградация
Все продумали, а в production деградация
Анализ: Tcpdump на серверах приложений (> 1TB), понимание проблемы с
висящими сокетами
Анализ 2: Изучение внешних подсистем и их профилей нагрузки
Решение: Включить сервис в scale-unit и изучать проблему на тестовом
стенде
Вывод: Некорректно выбран scale-unit
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Метрики (CPU, memory, network, etc..)
● Продуктовые-метрики
● Возможные точки отказа
○ Внутри ДЦ
○ Между ДЦ
○ Задержка между ДЦ
● Инфраструктура
○ Железо
○ Особенности инфраструктуры
○ Ограничения доступности
● Деградация
○ Время перерегулирования
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
Построение требований
● Модель нагрузки
○ Открытая
○ Закрытая
● Профили нагрузки
○ Постоянная
○ Пиковая
○ Особые случаи (domain-specific)
● Метрики (CPU, memory, network, etc..)
● Продуктовые-метрики
● Возможные точки отказа
○ Внутри ДЦ
○ Между ДЦ
○ Задержка между ДЦ
● Инфраструктура
○ Железо
○ Особенности инфраструктуры
○ Ограничения доступности
● Деградация
○ Время перерегулирования
○ Допустимая деградация
● Данные
○ “Профиль” данных
○ Требования к консистентности *
○ Избыточность
● Scale-unit (!)
Требования к системе
Разные уровни тестов
Управление профилями нагрузки
Подключаемые нагрузочные утилиты
Сбор телеметрии и бизнес-метрик
Сравнения и per commit тесты
Автоматизация отключения узлов
Управление конфигурацией стенда
Сбор логов и данных
Конфигурируемый анализ результатов
Отчеты
Итоговая схема работы
Заключение
Чеклист выстрадан в production
Можно обойтись без тестировщика
Быстрые эксперименты
Этот подход помогает выигрывать технические тендеры
https://gist.github.com/Sulverus/b7b76a66fb13d1e8a1355694c28cf8ff

More Related Content

Similar to Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)

Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данныхSiel01
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийFuenteovejuna
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
Отладка производительности СУБД MySQL
Отладка производительности СУБД MySQLОтладка производительности СУБД MySQL
Отладка производительности СУБД MySQLSveta Smirnova
 
Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Fwdays
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetOntico
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Yandex
 
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014it-people
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данныхLevon Avakyan
 
История небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир БородинИстория небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир БородинYandex
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)Nikolay Samokhvalov
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоCodeFest
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.Serguei Gitinsky
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаITCrowd Almaty
 
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...IBS
 
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Mad Devs
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Ontico
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Ontico
 

Similar to Контроль качества высоконагруженных систем / Андрей Дроздов (Avito) (20)

Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
Отладка производительности СУБД MySQL
Отладка производительности СУБД MySQLОтладка производительности СУБД MySQL
Отладка производительности СУБД MySQL
 
Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"
 
Надежная инфраструктура цод
Надежная инфраструктура цодНадежная инфраструктура цод
Надежная инфраструктура цод
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
 
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данных
 
История небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир БородинИстория небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир Бородин
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
 
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
 
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)

  • 7. Для чего проводить LT? Дать информацию для принятия решений Проверить то, что не попадает в predefined
  • 9. Latency = transport + execution 15 минут 30 минут
  • 10. Throughput = request / time 15 + 6*5 = 45 минут 30 + 5 = 35 минут
  • 12. Stability ● Смогут ли клиенты купить обед при поломке? ● Как быстро касса будет восстановлена? ● Насколько при этом замедлится обслуживание? ● Не потеряются ли в кассе деньги? Метрики ● Отказоустойчивость ● Время перерегулирования ● Деградация ● Консистентность
  • 13. Как долго магазин не обслуживает клиентов?
  • 15. Scaling ● N обедов, если добавить еще кухню? (горизонтальное) ● N обедов, если установить более мощную плиту? (вертикальное) ● Один из компонентов обеда готовит только один повар ● Слишком мало касс (большие очереди, обедов много) ● Блюдо готовится медленно (высокий execution time) Capacity blockers
  • 19. Как искать? ● Fast run (1 минута) - понимание ситуации ● Common case - штатная проверка ● Longevity - поиск редких случаев ● Branch compare - деградация ● Per commit checking - контроль качества
  • 21. Не получается выдать нагрузку Проблема: hit-based выдает 10 krps вместо 30 krps Предположение: Сервис тормозит
  • 24. Не получается выдать нагрузку Визуально: разница между system time и user time По-быстрому: pstack и подобные утилиты По-серьезному: pprof
  • 25. Не получается выдать нагрузку Анализ: Начинаем смотреть с уровня железа и сети (метрики) Решение: Тюнинг буферов ядра, бонд из сетевых карт Похожие ситуации: использование сценарных утилит в случае, где должны использоваться hit-based Вывод: Не продуманы ограничения инфраструктуры или модель нагрузки
  • 26. Построение требований ● Инфраструктура ○ Железо ● Модель нагрузки ○ Открытая ○ Закрытая
  • 27. Синтетические тесты Проблема: Нагрузочный тест не выявляет проблему Предположение: Тестируем не все подсистемы
  • 29. Синтетические тесты { “first”: “John”, “last”: “Doe”, “params”: [ // lot of params ] }
  • 30. Синтетические тесты Анализ: Смотрим на разницу в данных тестов и production Решение: Приводим тестовые данные к боевым Вывод: Не продуманы “профили” данных
  • 34. Построение требований ● Инфраструктура ○ Железо ● Модель нагрузки ○ Открытая ○ Закрытая
  • 35. Построение требований ● Инфраструктура ○ Железо ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность ● Модель нагрузки ○ Открытая ○ Закрытая
  • 37. Построение требований ● Инфраструктура ○ Железо ○ ● Деградация ○ ○ ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность ● Модель нагрузки ○ Открытая ○ Закрытая
  • 38. Построение требований ● Инфраструктура ○ Железо ○ ● Деградация ○ ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность ● Модель нагрузки ○ Открытая ○ Закрытая
  • 39. Синтетические тесты (2) Проблема: Во время теста видим хорошие показатели, в production через несколько дней теряются данные Предположение: Настройки ttl в cold storage
  • 41. Синтетические тесты (2) Анализ: Тест длится 30 минут, в production проблемы начинаются через сутки. Потери данных после перекладывания данных в cold storage Решение: Делать longevity run, была найдена ошибка в настройках шардинга Вывод: Не продуманы профили нагрузки с учетом специфики сервиса
  • 42. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Инфраструктура ○ Железо ○ ● Деградация ○ ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность
  • 43. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Инфраструктура ○ Железо ○ ● Деградация ○ ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность
  • 44. Странные задержки VMWare Проблема: CPU Freeze, спайки latency. Предположение: Проблема в коде одной из подсистем.
  • 45. Странные задержки на тестовом стенде https://communities.vmware.com/thread/505923 - transparent_hugepage
  • 46. Странные задержки на тестовом стенде Анализ: Стали копать до уровня ОС: мониторинг, transparent hugepage Решение 1: Уменьшить нагрузку/Поменять scale-unit Решение 2: Отключить мониторинг VMWare и transparent_hugepage Решение 3: Тестировать на реальном железе Вывод: Не учтены особенности инфраструктуры
  • 47. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Инфраструктура ○ Железо ○ ○ ● Деградация ○ ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность
  • 48. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Метрики (CPU, memory, network, etc..) ● Инфраструктура ○ Железо ○ Особенности инфраструктуры ○ ● Деградация ○ ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность
  • 49. Полный ступор Проблема: Из 10 млн транзакций не сходится 3 транзакции Предположение: Ничего не понятно
  • 52. Полный ступор Анализ: В каждой подсистеме ввели дополнительные метрики и начали повторять тесты Решение: Введена метрика “оставшихся” транзакций при обработке батча, найдена ошибка в коде Вывод: Не продуманы продуктовые метрики
  • 53. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Метрики (CPU, memory, network, etc..) ● Инфраструктура ○ Железо ○ Особенности инфраструктуры ○ ● Деградация ○ ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность
  • 54. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Метрики (CPU, memory, network, etc..) ● Продуктовые-метрики ● Инфраструктура ○ Железо ○ Особенности инфраструктуры ○ ● Деградация ○ ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность
  • 55. Проблема: Внутри ЦОД проблем нет, на уровне ЦОД есть. Предположение: Проблема понятна, сложно воспроизвести Отказ узлов в production
  • 58. Отказ узлов в production Анализ: Тестовый стенд эмулирует один ДЦ, ошибки между ДЦ не проверяются Решение: Сделать альтернативный тест с кластерами в 2 раза меньше, уменьшить нагрузку вдвое и проверить отказ ДЦ Вывод: Не продуманы точки отказа
  • 60. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Метрики (CPU, memory, network, etc..) ● Продуктовые-метрики ● Инфраструктура ○ Железо ○ Особенности инфраструктуры ○ ● Деградация ○ ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность ○ Задержка между ДЦ
  • 61. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Метрики (CPU, memory, network, etc..) ● Продуктовые-метрики ● Возможные точки отказа ○ Внутри ДЦ ○ Между ДЦ ○ Задержка между ДЦ ● Инфраструктура ○ Железо ○ Особенности инфраструктуры ○ ● Деградация ○ Время перерегулирования ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность ○ Задержка между ДЦ
  • 62. Kubernetes Проблема: Latency меняется при каждой раскладке Предположение: Возможно проблемы с базой
  • 64. Kubernetes Анализ: Развернули тестовый стенд отдельно, исключили проблемы в сервисе и базе (сомнительно) Решение: Подробно раскрывается в докладе М. Прокопчука Быстрое решение: Внести контейнер в pod, если это возможно Вывод: Не учтены ограничения инфраструктуры
  • 65. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Метрики (CPU, memory, network, etc..) ● Продуктовые-метрики ● Возможные точки отказа ○ Внутри ДЦ ○ Между ДЦ ○ Задержка между ДЦ ● Инфраструктура ○ Железо ○ Особенности инфраструктуры ○ ● Деградация ○ Время перерегулирования ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность
  • 66. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Метрики (CPU, memory, network, etc..) ● Продуктовые-метрики ● Возможные точки отказа ○ Внутри ДЦ ○ Между ДЦ ○ Задержка между ДЦ ● Инфраструктура ○ Железо ○ Особенности инфраструктуры ○ Ограничения доступности ● Деградация ○ Время перерегулирования ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность
  • 67. Проблема: Через неделю сильная деградация latency. Предположение: Как с longevity test, но нет Все продумали, а в production деградация
  • 68. Все продумали, а в production деградация
  • 69. Все продумали, а в production деградация
  • 70. Все продумали, а в production деградация
  • 71. Все продумали, а в production деградация Анализ: Tcpdump на серверах приложений (> 1TB), понимание проблемы с висящими сокетами Анализ 2: Изучение внешних подсистем и их профилей нагрузки Решение: Включить сервис в scale-unit и изучать проблему на тестовом стенде Вывод: Некорректно выбран scale-unit
  • 72. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Метрики (CPU, memory, network, etc..) ● Продуктовые-метрики ● Возможные точки отказа ○ Внутри ДЦ ○ Между ДЦ ○ Задержка между ДЦ ● Инфраструктура ○ Железо ○ Особенности инфраструктуры ○ Ограничения доступности ● Деградация ○ Время перерегулирования ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность
  • 73. Построение требований ● Модель нагрузки ○ Открытая ○ Закрытая ● Профили нагрузки ○ Постоянная ○ Пиковая ○ Особые случаи (domain-specific) ● Метрики (CPU, memory, network, etc..) ● Продуктовые-метрики ● Возможные точки отказа ○ Внутри ДЦ ○ Между ДЦ ○ Задержка между ДЦ ● Инфраструктура ○ Железо ○ Особенности инфраструктуры ○ Ограничения доступности ● Деградация ○ Время перерегулирования ○ Допустимая деградация ● Данные ○ “Профиль” данных ○ Требования к консистентности * ○ Избыточность ● Scale-unit (!)
  • 74. Требования к системе Разные уровни тестов Управление профилями нагрузки Подключаемые нагрузочные утилиты Сбор телеметрии и бизнес-метрик Сравнения и per commit тесты Автоматизация отключения узлов Управление конфигурацией стенда Сбор логов и данных Конфигурируемый анализ результатов Отчеты
  • 76. Заключение Чеклист выстрадан в production Можно обойтись без тестировщика Быстрые эксперименты Этот подход помогает выигрывать технические тендеры https://gist.github.com/Sulverus/b7b76a66fb13d1e8a1355694c28cf8ff