Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CodeFest 2018. Денис Трифонов (2ГИС) — Как мы н...

CodeFest 2018. Денис Трифонов (2ГИС) — Как мы непрерывно тестируем производительность 30 проектов

Посмотрите выступление Дениса: https://2018.codefest.ru/lecture/1318/

Тестирование производительности — не самый первый пункт в списках проверки качества. Чтобы убедить менеджера включить задачу в спринт, нужно максимально упростить эту задачу. Я расскажу историю и поделюсь опытом построения автоматизированной инфраструктуры для тестирования производительности 30 проектов от бекендов до мобилок. Начиналось всё просто — один общий Jenkins и репозиторий с тестами, а потом стало больно. Мы не отчаялись и взялись за дело. Знания и тесты в ходе перестройки передали в команды, взяли CI first подход к автоматизации, построили инфраструктуру из максимально переиспользуемых компонентов для соседних команд и общего стенда. По итогу 14 строчек кода на быстрый старт и час на интеграцию для полного покрытия и непрерывного тестирования проекта.

CodeFest

April 05, 2018
Tweet

More Decks by CodeFest

Other Decks in Programming

Transcript

  1. Первые шаги — нагружаем Справочное API Яндекс.Танком — сравниваем старую

    и новую версии — используем контур стейджинга 3
  2. Подключаем новые проекты — формируем команду — нагружаем Фото и

    Авторизацию — берём Gatling для сценариев — переиспользуем код 5
  3. Cloud Apps CI Runners Tests Автоматизируем — поднимаем Jenkins и

    слейв с инструментами — делаем сборку Gatling, наследуемся от неё в проектах — пишем прослойку с конфигами : : 6
  4. Cloud Apps CI Runners Tests Metrics Exporters Dashboards Мониторим —

    поднимаем InfluxDB — ставим на машинки Telegraf — поднимаем Grafana с дашбордами : : : 7
  5. Cloud Apps CI Analitycs Runners Tests Metrics Exporters Dashboards Хотим

    фичи — прикручиваем диффер — прикручиваем логи медленных запросов — прикручиваем графики SLA : : : 8
  6. Плюсы — быстрый старт нового проекта — переиспользование кода и

    фич — полуавтоматизация и однопоточность тестов — интерфейс запуска и конфигурации тестов — множество технологий на пощупать и выбрать 12
  7. Минусы — постоянное участие в правках общего репозитория — при

    изменении core нужно следить за всеми проектами — три слоя конфигурации — ручной запуск, просьбы запустить — на поддержке множество технологий 13
  8. План перестройки — избавиться от общего репозитория и core —

    разнести тесты по командам — погрузить команду в тестирование — забыть про интерфейсы и полностью автоматизировать — посмотреть, можно ли что-то переиспользовать 17
  9. Cloud Apps CI Analitycs Runners Tests Metrics Exporters Dashboards Кодим

    — переносим в отдельные репозитории и убираем core — делаем тесты самодостаточными — отдаём в команды : : : 18
  10. Cloud Apps VCS, CI Analitycs Runners Tools Tests Metrics Exporters

    Dashboards Автоматизируем — переносим на общий GitLab и GitLab CI — поднимаем Shared runners с docker-executor — создаём docker-образ со всеми инструментами : : : 20
  11. Нюансы — оверхед с Docker не замечен — тюнить нужно

    хост и docker-рантайм — могут быть сложности с пакетами в «одной коробке» — UI нет, поэтому меняем конфигурацию в ветках 21
  12. Cloud Apps VCS, CI Analitycs Runners Tools Tests Metrics Exporters

    Dashboards Мониторим — переезжаем на общие Prometheus и Grafana — используем Ansible роли экспортёров : : : 24
  13. Cloud Apps VCS, CI Runners Tools Tests Metrics Exporters Dashboards

    Analitycs Смотрим в аналитику — выделяем фиче-скрипты в сервис с UI, открытым API и CLI — дружим с Gatling и Яндекс.Танк : : : 26
  14. Учимся в Kubernetes — поднимаем рабочую ноду в нагрузочном контуре

    — добавляем kubectl в образ с инструментами 28
  15. Что получилось — на поддержке минимум технологий — используем общие

    компоненты — команды вовлечены в процесс тестирования — тотальная автоматизация 30
  16. Cloud Apps VCS, CI Runners Tools Tests Metrics Exporters Dashboards

    Analytics Admins Perf Teams Инфраструктура : : : Legend: 31
  17. Cloud Apps VCS, CI Runners Tools Tests Metrics Exporters Dashboards

    Analytics Common Teams Хотим стрелять во внешний сервис? : : : Legend: 32
  18. Cloud Apps VCS, CI Runners Tools Tests Metrics Exporters Dashboards

    Analytics Common Teams Хотим свои нагрузочные мощности? : : : Legend: 33
  19. Cloud Apps VCS, CI Runners Tools Tests Metrics Exporters Dashboards

    Analytics Common Teams Хотим добавить аналитику? : : : Legend: 34
  20. Простые советы — на малом числе активных проектов можно выделить

    core — легаси пусть остаётся легаси — автоматизируйте всё и вся — переиспользуйте и делайте проще — шарьте знания, найдите круг заинтересованных 41