Подключаем новые проекты
— формируем команду
— нагружаем Фото и Авторизацию
— берём Gatling для сценариев
— переиспользуем код
5
Slide 6
Slide 6 text
Cloud Apps
CI Runners Tests
Автоматизируем
— поднимаем Jenkins и слейв с инструментами
— делаем сборку Gatling, наследуемся от неё в проектах
— пишем прослойку с конфигами
:
:
6
Slide 7
Slide 7 text
Cloud Apps
CI Runners Tests
Metrics Exporters Dashboards
Мониторим
— поднимаем InfluxDB
— ставим на машинки Telegraf
— поднимаем Grafana с дашбордами
:
:
:
7
Плюсы
— быстрый старт нового проекта
— переиспользование кода и фич
— полуавтоматизация и однопоточность тестов
— интерфейс запуска и конфигурации тестов
— множество технологий на пощупать и выбрать
12
Slide 13
Slide 13 text
Минусы
— постоянное участие в правках общего репозитория
— при изменении core нужно следить за всеми проектами
— три слоя конфигурации
— ручной запуск, просьбы запустить
— на поддержке множество технологий
13
Slide 14
Slide 14 text
Cloud Apps
CI Analitycs Runners Tests
Metrics Exporters Dashboards
Узкие места
:
:
:
14
План перестройки
— избавиться от общего репозитория и core
— разнести тесты по командам
— погрузить команду в тестирование
— забыть про интерфейсы и полностью автоматизировать
— посмотреть, можно ли что-то переиспользовать
17
Slide 18
Slide 18 text
Cloud Apps
CI Analitycs Runners Tests
Metrics Exporters Dashboards
Кодим
— переносим в отдельные репозитории и убираем core
— делаем тесты самодостаточными
— отдаём в команды
:
:
:
18
Slide 19
Slide 19 text
Нюансы и факты
— 15% повторяемого кода
— Scala не так страшна
19
Slide 20
Slide 20 text
Cloud Apps
VCS, CI Analitycs Runners Tools Tests
Metrics Exporters Dashboards
Автоматизируем
— переносим на общий GitLab и GitLab CI
— поднимаем Shared runners с docker-executor
— создаём docker-образ со всеми инструментами
:
:
:
20
Slide 21
Slide 21 text
Нюансы
— оверхед с Docker не замечен
— тюнить нужно хост и docker-рантайм
— могут быть сложности с пакетами в «одной коробке»
— UI нет, поэтому меняем конфигурацию в ветках
21
Slide 22
Slide 22 text
Погружаем в тестирование
— проводим мастер-классы
— готовим документацию и примеры
22
Slide 23
Slide 23 text
Факты
— компетентность людей в нагрузке стала выше
— стали тестировать не только перед релизом
23
Slide 24
Slide 24 text
Cloud Apps
VCS, CI Analitycs Runners Tools Tests
Metrics Exporters Dashboards
Мониторим
— переезжаем на общие Prometheus и Grafana
— используем Ansible роли экспортёров
:
:
:
24
Slide 25
Slide 25 text
Нюансы
— договариваемся с админами об увеличении частоты сбора метрик
— поднимаем Push Gateway для Graphite-метрик Gatling
25
Slide 26
Slide 26 text
Cloud Apps
VCS, CI Runners Tools Tests
Metrics Exporters Dashboards
Analitycs
Смотрим в аналитику
— выделяем фиче-скрипты в сервис с UI, открытым API и CLI
— дружим с Gatling и Яндекс.Танк
:
:
:
26
Slide 27
Slide 27 text
Факты
— к сервису подключились тесты мобилок и фронтенда
27
Slide 28
Slide 28 text
Учимся в Kubernetes
— поднимаем рабочую ноду в нагрузочном контуре
— добавляем kubectl в образ с инструментами
28
Slide 29
Slide 29 text
Стучимся в процессы
— обсуждаем производительность на техническом ревью проектов
29
Slide 30
Slide 30 text
Что получилось
— на поддержке минимум технологий
— используем общие компоненты
— команды вовлечены в процесс тестирования
— тотальная автоматизация
30
Slide 31
Slide 31 text
Cloud Apps
VCS, CI Runners Tools Tests
Metrics Exporters Dashboards
Analytics
Admins Perf Teams
Инфраструктура
:
:
:
Legend:
31
Slide 32
Slide 32 text
Cloud Apps
VCS, CI Runners Tools Tests
Metrics Exporters Dashboards
Analytics
Common Teams
Хотим стрелять во внешний сервис?
:
:
:
Legend:
32
Slide 33
Slide 33 text
Cloud Apps
VCS, CI Runners Tools Tests
Metrics Exporters Dashboards
Analytics
Common Teams
Хотим свои нагрузочные мощности?
:
:
:
Legend:
33
Slide 34
Slide 34 text
Cloud Apps
VCS, CI Runners Tools Tests
Metrics Exporters Dashboards
Analytics
Common Teams
Хотим добавить аналитику?
:
:
:
Legend:
34
Slide 35
Slide 35 text
Новый проект: тест
phantom:
address: example.org
load_profile:
load_type: rps
schedule: line(1, 100, 30s) const(100, 120s)
uris:
- "/"
35
Slide 36
Slide 36 text
Новый проект: CI
test:
image: docker-hub/perf/tools
script:
- yandex-tank -c load.yaml
after_script:
- cli upload
tags: [ perf ]
36
Простые советы
— на малом числе активных проектов можно выделить core
— легаси пусть остаётся легаси
— автоматизируйте всё и вся
— переиспользуйте и делайте проще
— шарьте знания, найдите круг заинтересованных
41