РИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 10:00
Тезисы:
http://rootconf.ru/2017/abstracts/2643.html
Знаете ли вы, что видят пользователи после деплоя вашего кода на продакшн?
В своем докладе я расскажу:
* Почему мониторинг должен показывать не только, работает сайт или нет, и почему это важно.
* Как мы следим за производительностью кода через мониторинг.
* Как мониторить сайт глазами пользователя.
* Какие метрики наиболее полезны и как их обрабатывать.
* Какие проблемы и как можно обойти автоматикой.
2. 18 лет на рынке.
60 000 000 уников в месяц.
Веб
Ресурс №1 для гитаристов
во всем мире.
iPhone
Платное приложение №1
в разделе «Музыка» в App Store.
iPad
11 000 000 скачиваний из
App Store.
Android
Лучшее приложение 2014 года
по версии Google.
3. Стек технологий
• PHP 7.1 + Yii2
• Node.js
• Nginx
• Redis + Memcached
• Percona MySQL
4. Зачем это нужно
• Частые деплои
• явные ошибки
• падение производительности
• Внешние факторы
• проблемы сети
• проблемы с новыми версиями ОСей и браузеров
• Изменения в мире
• сознательная блокировка ресурсов в отдельных странах
5. Производительность
• Влияет на конверсию (–20% / с*)
• Влияет на ранжирование в поисковиках
• Сама себя не измерит
*Исследование soasta.com
6. Реальный случай
• 2 домена: free и paid
• Оба работают по SSL
• На paid пользователи приходят с free домена
• TTFB, DNS и SSL на домене paid вырос на 30%
• На остальных доменах изменений не замечено
7. Медленный бэкенд
• Внешний сервис медленно отвечает
• Медленные запросы к DB
• Медленный код
• Баг в php, при котором без reload
после деплоя растет response time
8. В бой идут access-логи
• Elasticsearch + Graylog + Grafana
9. В бой идут access-логи
• Elasticsearch + Graylog + Grafana
• Мониторим response time, кол-во запросов и можем
производить произвольную агрегацию запросов и поиск по
ним
11. В бой идут access-логи
• Elasticsearch + Graylog + Grafana
• Мониторим response time, кол-во запросов и можем
производить произвольную агрегацию запросов и поиск по
ним
• Задача: response time бэкендов не изменился
12. Метрики прямо из приложения
• Замеряем скорость выполнения:
• Конкретных кусков кода
• Обращений к внешним сервисам
• Пишем в Time Series DB
• Пишем максимально много метрик
13. Хорошо на сервере ≠ хорошо
у пользователя
• Блокировка загрузки страницы
• Неоптимизированные картинки
• Человеческий фактор
• Статика без gzip
• Блокировка показа полезного контента
• Проблемы с сетью
15. Google pagespeed
• Нетребователен к ресурсам, всю работу выполняют
сервера Google
• Готовые модули к большому числу языков
• Задача: рейтинг страницы не изменился
16. Больше данных!
• Размер страницы
• Кол-во запросов к ресурсам
• Время domReady, onLoad, TTFB и т.д.
• Блокировки загрузки
17. sitespeed.io
• Desktop/mobile-версии страниц
• Полный размер и кол-во запросов
• Время загрузки страницы (domReady, onLoad)
• Сегментируем все запросы на 1st/3rd party
• Сегментируем по типу ресурсов (js/css/images/etc)
• Сохраняем HAR-репорты
19. Еще про sitespeed
• Может эмулировать низкоскоростную сеть
• Может работать с удаленным браузером на Android-
устройстве
• Performance budget
• Self-Hosted
• Docker
20. Еще про sitespeed
• Может эмулировать низкоскоростную сеть
• Может работать с удаленным браузером на Android
устройстве
• Performance budget
• Self-Hosted
• Docker
• Задача: никакие метрики не изменились
21. Проблема у части пользователей
• Регион
• Тестовая группа
• Браузер/девайс
23. Что измеряем
• DNS
• Redirect
• Timing-Allow-Origin
• Connect
• SSL
• TTFB
• domReady
• onLoad
• Тип и поколение соединения
• A/B-тесты
24.
25. Группировка
• По странице
• По типу устройства
• По странице и типу устройства
• По странице, типу устройства и региону
• По странице, типу соединения и его
поколению для мобильной связи
27. Задача
• 2 домена: free и paid
• Оба работают по SSL
• На paid пользователи приходят с free домена
• TTFB, DNS и SSL на домене paid вырос на 30%
• На остальных доменах изменений не замечено
• Response time серверов не изменился
• Google pagespeed и Sitespeed.io проблемы не видит