Собираем метрики с кода
Павел Королев ∙ Beeline Казахстан
2
Павел Королев
Android Tech Lead на проекте Мой Beeline (Казахстан) полтора года
@pavelkorolevxyz
В Android разработке с 2011 года
3
02
0
Мой Beeline (Казахстан)
Суперапп
>4 млн
7
Кроссфункциональных
команд
Monthly Active Users
~300k
строк кода
40% рост за год
~120
модулей в проекте
300% рост за год
4
О чём поговорим
01
02
03
04
05
06
Метрики
Реализация сбора
Примеры
Метрики
5
Метрики
6
❇️ Количество крашей и ANR
❇️ Оценка в Google Play
❇️ Время запуска приложения
❇️ Доступность сервисов
❇️ Время ответа на запросы
…и многое другое
Метрики качества
7
А почему бы нам не собирать технические метрики?
8
Реализация
сбора метрик
9
Требования
Нужен инструмент для сбора метрик
Запускать на CI
Хранить историю
10
Варианты реализации инструмента
Standalone
Gradle Task
3rd party
11
Варианты реализации инструмента
Standalone
Gradle Task
3rd party
✅
12
Вся система целиком
Gitlab CI
Программа для выгрузки
Gradle Task
13
Пишем
Gradle Task
Вызываем
Регистрируем
14
Пишем “калькуляторы”
15
Пишем
Gitlab CI конфиг
16
Собираем данные
17
Этот CSV – наша история
Хотим – загоняем в Excel, хотим – рисуем графики
18
Примеры метрик
Проекта Мой Beeline
19
Количество Kotlin и Java строк и файлов
1
Kotlin умеренно растёт,
Java уменьшается и стремится к нулю
20
Количество Kotlin Script и Groovy файлов Gradle
2
Kotlin Script распространяется на все модули,
Groovy стремится к нулю
21
Количество XML layout файлов
3
Уменьшается из-за перехода на Compose.
Стремится к нулю
22
Количество кода в монолите
4
Уменьшается из-за модуляризации
23
Количество файлов с RxJava
5
Уменьшается из-за перехода на корутины.
Стремится к нулю
24
Количество layout файлов с DataBinding
6
Уменьшается из-за перехода на Compose.
Стремится к нулю
25
Количество app/feature/core модулей
7
Увеличивается.
Стремится к количеству модулей
26
Количество модулей с KAPT
8
Уменьшается из-за перехода на KSP.
Стремится к нулю
27
Количество
dynamic feature модулей
9
Уменьшается из-за подхода к модульной архитектуре.
Стремится к нулю
28
Критический путь
10
Уменьшается из-за подхода к модульной архитектуре.
Стремится к трём (app → feature → core)
29
Время сборки проекта
11
Сдержанно увеличивается.
В идеале уменьшается
30
Размер приложения
12
Сдержанно увеличивается.
В идеале уменьшается
31
Количество Jetifier зависимостей
13
Уменьшается.
Стремится к нулю
32
Количество предупреждений от статического анализа
14
Честно, без бейзлайнов
Уменьшается.
Стремится к нулю
33
Это всё – очень разные метрики
34
35
Можно реализовать чище, красивее и функциональнее
36
Быстро собираем метрику – быстро начинаем следить за динамикой
37
Цель доклада – спровоцировать у вас размышления
А что можно посчитать у вас?
38
Спасибо
Павел Королев
pavelkorolevxyz_channel