SlideShare a Scribd company logo
Software Analytics
во фронтенде
1
Денис Колесников
https://facebook.com/DenKolesnikov
https://twitter.com/DenisKolesnikov
Staff Software Engineer
2
Дорожная карта
3
!
Проблемы с
принятием
решений
</#
Software
Analytics
</# +
Software Analytics в
Wrike
Инструменты
Польза
Проблематика
4
Команда разработки (в вакууме)
5
Команда разработки (в вакууме)
6
Команда разработки (в вакууме)
7
Почему долго релизим?
8
Почему долго релизим?
Почему плохо работаем?
Как ответить на такой
вопрос?
9
10
Почему долго релизим?
Как ответить на такой
вопрос?
11
Почему долго релизим?
Код пахнет
11
Почему долго релизим?
Нужно переписать на реакт
Код пахнет
11
Почему долго релизим?
Код пахнет
Тестирование загружено
Нужно переписать на реакт
11
Почему долго релизим?
Код пахнет Нужно переписать на реакт
Нужно настроить процессы
Тестирование загружено
Decision-making problem
12
Decision-making problem
• Каждый ответ по-своему правильный
• Каждый ответ (зачастую) выражает субъективную позицию
• Поэтому каждый из ответов может быть ложным
• При выборе одного из ответов мотивация остальных участников
команды падает
• Выбранный путь может привести к “I told you so”
13
“Decision-making” Wiki
Команда ведь
“сферическая в вакууме”
14
15
Производительность
(попугаи)
0
25
50
75
100
Кофе выпито в день (литры)
1 2 3 4
15
Производительность
(попугаи)
0
25
50
75
100
Кофе выпито в день (литры)
1 2 3 4
Текущая производительность
15
Производительность
(попугаи)
0
25
50
75
100
Кофе выпито в день (литры)
1 2 3 4
Текущая производительность
Желаемая производительность
16
Профит! ¯_( )_/¯
Кофескрипт
А как в реальной жизни?
• Такого графика не существует
• Необходимы параметры, по которым можно было бы обмерять
процессы в команде
• Необходимы зависимости между этими параметрами
17
Дорожная карта
18
!
Проблемы с
принятием
решений
</#
Software
Analytics
</# +
Software Analytics в
Wrike
Инструменты
Польза
Software Analytics
19
– Wikipedia
Software analytics is the analytics specific to the domain of software
systems taking into account source code, static and dynamic
characteristics (e.g., software metrics) as well as related processes of their
development and evolution. It aims at describing, monitoring, predicting,
and improving efficiency and effectivity of software engineering throughout
the software lifecycle, in particular during software development and
software maintenance.
20
Software Analytics
• Аналитика, специфичная для сферы разработки ПО
• Опирается на данные о ПО (код, процессы, жизненный цикл
разработки)
• Призвана улучшать эффективность разработки ПО
21
Стойте! Но у меня в компании
уже есть аналитики, это оно?
22
Нет
23
Аналитика
24
Данные
Структурирование
Insight
Нахождение связей
Данные
• Экономические показатели

• Пользовательские метрики

• Прочий ML & Data Science
25
Данные Software Analytics
• Код и метаинформация о нем

• Жизненный цикл разработки

• Инфраструктурные метрики

• Продакшн метрики
27
Данные Software Analytics
• Код и метаинформация о нем

• Жизненный цикл разработки

• Инфраструктурные метрики

• Продакшн метрики
27
Производительность
(попугаи)
0
25
50
75
100
Кофе выпито в день
(литры)
1 2 3 4
Как?
28
29
<code>
script1.js
script2.js
…
<*code>
User
Site/App/Service
CI
No tests!
Task tracker
Long duration tasks!
29
<code>
script1.js
script2.js
…
<*code>
User
Site/App/Service
CI Task tracker
Production data
Code
Infrastructure metrics
Development life cycle
Взаимосвязи (пример)
• Как инфраструктура влияет на длительность выполнения задач
• Как код и его характеристики влияют на его поддержку
• Как код и его поддержка влияет на продакшн
• Как все это может влиять на бизнес-метрики
30
Профит от Software Analytics
• Определение приоритетов
• Нахождение точек роста
• Data-driven decision making
31
Data-driven decision making
32
Команда разработки (в вакууме)
33
Solution #1
Solution #2
Solution #3
34
?
35
Принятие решений
• Выбор конкретного решения напрямую влияет на мотивацию
команды
• Объяснить сам выбор решения зачастую очень сложно
• Правильность выбора покажет время
36
Принятие решений, основанное на данных
• Команда всегда замотивирована реализовывать такие решения
• Выбор не нужно обосновывать, это делают данные
• Выбор перестает быть ответственностью команды (или ее
руководителя)
37
Дорожная карта
38
!
Проблемы с
принятием
решений
</#
Software
Analytics
</# +
Software Analytics в
Wrike
Инструменты
Польза
Software Analytics
на практике
39
40
41
Frontend department
Team 1
Team 2
Team 3
Team 35
…
42
Frontend department
Team 1
Team 2
Team 3
Team 35
…
У нас было:
• Фронтенд департамент
• 35 команд разработки
• 2.5 миллиона LoC
• 365 репозиториев всех размеров и назначений
• Прорва пайплайнов на CI
• Разбросанные данные в Tableau и эксель-табличках, мы очень опасались, что в итоге
перейдем на эту дрянь
43
И главная цель:
44
45
И главная цель:
Понять, что мешает разработке
И как поднять производительность
46
И главная цель:
Понять, что мешает разработке
И как поднять производительность
47
И главная цель:
Понять, что мешает разработке
Ладно, две цели
Software Analytics
Infrastructure
48
Аналитика
49
Данные
Структурирование
Insight
Нахождение связей
50
Данные
51
DataSource #1 DataSource #2 DataSource #3
Analytics machine
52
Analytics machine
52
Analytics machine
API #1 API #2 API #3
Получение данных
• Множественные источники
• Доступность всех источников в моменте
• Издержки на получение данных
• Различные форматы
• Провязывание сущностей “на лету”
53
Данные нужно хранить, но где?
54
Дорожная карта
55
!
Проблемы с
принятием
решений
</#
Software
Analytics
</# +
Software Analytics в
Wrike
Инструменты
Польза
Требования по хранению
• Возможность удобно работать со схемой данных
• Минимально работать с логикой
• Минимально поддерживать
• GraphQL в идеале
56
57
58
Hasura
• “CMS” для данных
• PostgreSQL для хранения
• Редактирование схемы данных через интерфейс с автоматической
генерацией миграций
• Автогенерация GraphQL схемы
• Mongo-style хелперы для GraphQL сущностей
59
Hasura.io
60
61
61
61
61
61
Hasura GraphQL interface
62
query {
repo {
url
}
}
{
"data": {
"repo": [
{
"url": "frontend/my-cool-project.git"
},
{
"url": "frontend/another-project.git"
},
{
"url": "backend/backend.git"
}
]
}
}
Hasura GraphQL interface
64
{
"data": {
"repo": [
{
"url": "frontend/my-cool-project.git"
},
{
"url": "frontend/another-project.git"
}
]
}
}
query {
repo(where: {
url: {
_like: "%frontend%"
}
}) {
url
}
}
65
66
Hasura GraphQL interface
67
query {
repo(where: {
url: {
_eq: “..#”
}
}) {
url
commits {
hash
title
}
}
}
{
"data": {
"repo": [
{
"url": "frontend/my-cool-project.git",
"commits": [
{
"hash": "b48830f03c",
"title": "Initial commit"
},
{
"hash": "46eb37c740",
"title": "Super cool feature"
}
]
}
]
}
}
69
Данные Представление
70
Excel Tableau Grafana
?
?
?
?
?
?
У нас уже был подходящий инструмент
71
72
Discovery.js
Discovery.js
• Frontend framework for rapid data (JSON) analysis, sharable serverless
reports and dashboards
• Язык запросов Jora
• Множество встроенных компонентов для построения отчетов
• Opensource
• Доклад и статья Романа Дворнова
73
А почему не?..
• Python, R и прочий датасатанизм?
• И вообще зачем работать с JSON?
74
JSON
75
76
{
"data": {
"repo": [
{
"url": "git@git.whatever:frontend/my-cool-project.git",
"commits": [
{
"hash": "b48830f03c7be8c3f27491196e6fe1e1d1566559",
"title": "Initial commit"
},
{
"hash": "46eb37c7400d2a4964ba63d31d57ebce5a53edc8",
"title": "Super cool feature"
}
]
}
]
}
}
76
{
"data": {
"repo": [
{
"url": "git@git.whatever:frontend/my-cool-project.git",
"commits": [
{
"hash": "b48830f03c7be8c3f27491196e6fe1e1d1566559",
"title": "Initial commit"
},
{
"hash": "46eb37c7400d2a4964ba63d31d57ebce5a53edc8",
"title": "Super cool feature"
}
]
}
]
}
}
77
const data = {
repos: [
{
url: 'git@git.whatever:frontend/my-cool-project.git'
commits: [..#]
}
],
commits: [
{
hash: 'b48830f03c7be8c3f27491196e6fe1e1d1566559',
title: 'Initial commit'
repo: {..#}
},
{
hash: '46eb37c7400d2a4964ba63d31d57ebce5a53edc8',
title: 'Super cool feature',
repo: {..#}
}
]
};
77
const data = {
repos: [
{
url: 'git@git.whatever:frontend/my-cool-project.git'
commits: [..#]
}
],
commits: [
{
hash: 'b48830f03c7be8c3f27491196e6fe1e1d1566559',
title: 'Initial commit'
repo: {..#}
},
{
hash: '46eb37c7400d2a4964ba63d31d57ebce5a53edc8',
title: 'Super cool feature',
repo: {..#}
}
]
};
78
Report
79
Discovery CLI
Dev Registry
Request data
{
"entity#1": { ..# },
"entity#2": { ..# },
..#
"entity#N": { ..# }
}
80
Software Analytics Infrastructure
81
Raw data
GraphQL API
Data
User
Reports
Software Analytics Infrastructure
81
Raw data
GraphQL API
Data
User
Reports
Postgres DB
Software Analytics Infrastructure
81
Raw data
GraphQL API
Data
User
Reports
Postgres DB
Python, Tableau, Excel, whatever
Discovery.js в SA инфраструктуре
• Software Analytics Infrastructure – это платформа

• Данные в центре всего

• Любой элемент системы заменяем
82
84
Данные Представление
Как доставлять данные?
Получение данных
• Постоянный процесс
• Воспроизводимый процесс
• Управляемый процесс
• Должен быть независим от цикла разработки
85
CI/CD
86
Получение данных
• Постоянный процесс

• Воспроизводимый процесс

• Управляемый процесс

• Должен быть независим от цикла разработки
87
Получение данных
• Постоянный процесс

• Воспроизводимый процесс

• Управляемый процесс

• Должен быть независим от цикла разработки
87
Mining Cluster
88
89
Concourse CI
Concourse CI
89
Concourse CI
Mining task
Concourse CI
89
Concourse CI
Mining task Data
Concourse CI
Software Analytics Infrastructure
90
Mining Cluster Dev Registry Dev Reports
Software Analytics Infrastructure
• Несколько источников данных

• 3 ключевых сервиса:

• Mining Cluster

• Dev Registry (storage)

• Dev Reports (representation)
91
Software Analytics Infrastructure
92
Дорожная карта
93
!
Проблемы с
принятием
решений
</#
Software
Analytics
</# +
Software Analytics в
Wrike
Инструменты
Польза
Software Analytics
в действии
94
95
Analytics machine
Data ???
Data ???
Data ???
Insight
SDLC
96
Software Development Life Cycle
97
SDLC
98
Task
Commits
QA
CI/CD & Deploy
SDLC данные
• Задачи

• Коммиты

• Инфраструктурные издержки сборки/прогоны тестов
99
100
Task #1
Task #2
Task #3
Task #4
Task #N
…
Sprint backlog
Team
100
Task #1
Task #2
Task #3
Task #4
Task #N
…
Sprint backlog
Team
101
Ретроспектива!
102
Task
Team
Developer
Code Feature QA & CI/CD
102
Task
Team
Developer
Code Feature QA & CI/CD
103
103
Duration
103
Duration Time To Market
103
Duration Time To Market
103
Duration Time To Market
103
Duration Time To Market
104
104
104
104
105
105
105
Одна конкретная задача не сможет показать всей картины
106
107
108
108
Исследование SDLC
• Отслеживаем все стадии жизни задачи
• Находим все активности, которые происходили в задаче
• Данные по задачам можно исследовать в различных разрезах:
• по департаментам
• по командам
• по спринтам
109
110
We can go deeper
111
Task
Team
Developer
Code Feature QA & CI/CD
111
Task
Team
Developer
Code Feature QA & CI/CD
?
Code ownership
112
Code ownership
• В разрезе ответственности
• В разрезе функциональности
113
Code ownership
114
some {
peace;
of;
code;
}
@ownership
Mining Cluster
Commit Registry
Статья на Хабре
115
Feature B
Feature A
Feature C Feature D
Team #1
Team #2
Исследование SDLC
• Отслеживаем все стадии жизни задачи

• Находим все активности, которые происходили в задаче

• Данные по задачам можно исследовать в различных разрезах:

• по департаментам

• по командам

• по спринтам

• по функциональным областям
116
117
118
119
120
121
122
Discovery GraphiQL
• “Песочница” для исследования GraphQL API

• На основе GraphiQL

• Интеграция с Discovery.js

• Докер-образ для быстрого старта

• Доступна тут
123
124
docker run -p 3000:3000 -e GRAPHQL_ENDPOINT=https:/-countries.trevorblades.com/ -e TITLE="Countries" discoveryjs/graphiql
125
Software Analytics value
126
Task(s) Commits
Team Features
Software Analytics value
126
Task(s) Commits
Team Features
Durations Extra costs
Software Analytics value
126
Task(s) Commits
Team Features
Durations Extra costs TTM
Software Analytics value
126
Task(s) Commits
Team Features
Durations Extra costs TTM
Software Analytics value
126
Task(s) Commits
Team Features
Durations Extra costs TTM
Software Analytics value
• Сущности – это ключевые блоки
• Комбинируя эти блоки и перевязывая друг с другом, мы получаем
новые проекции данных
• Таким образом можно “проложить дорогу” от чисто-технических до
бизнесовых метрик
• Software Analytics в Wrike – это платформа, в которую любой
разработчик/команда может добавлять свои данные и связи
127
Software Analytics в Wrike –
это платформа
128
129
<code>
script1.js
script2.js
…
<*code>
User
Site/App/Service
CI Task tracker
Production data
Code
Infrastructure metrics
Development life cycle
130
User
Site/App/Service
Event
131
Task(s) Commits
Team Features
Durations Extra costs TTM
Event
131
Task(s) Commits
Team Features
Durations Extra costs TTM
Event
Подводим итоги
132
133
Data
134
SA Infrastructure
135
Profit
Это у вас, а у нас?
136
137
138
139
140
141
142
142
143
JsonDiscovery
Chrome | FireFox | GitHub
144
144
1001000011001010110
1000110110001101111
0100000011000110110
1110110010001100101
1100110011001010111
0110111010000100001
0101001101000001001000
0001101001011100110010
0000011000110110111101
1011110110110000100001
011000110111010000100000
011010010111001100100000
011000010010000001110011
011010000110100101110100
011101000111100100100000
011001100111001001100001
011011010110010101110111
011011110111001001101011
01110
11101
11001
00110
10010
11010
11011
00101
010001000110100101110011011000
110110111101110110011001010111
001001111001001011100110101001
110011001000000111001001110101
011011000110010101110011001000
145
01010000011100100110111101100110011
145
PROFIT
Наши профиты
• Снизили время доставки фич на ~20%
• Уменьшили количество инфраструктурных издержек на ~30%
• И денежные затраты на них на ~15%
• Очертили зоны ответственности для команд и внедрили культуру
владения кодом
• Построили платформу для аналитики, которую использует
большинство наших разработчиков каждый день
146
147
Как понять, что код
плохой и пора его
рефакторить?
С чего начинать
рефакторинг?
Как ускорить
разработку?
Как перестать
страдать от ошибок
на проде?
Как деплоить
чаще?
147
Данные – главный ответ
на многие вопросы
148
01000100
Ловите информацию вокруг вас
148
Ловите информацию вокруг вас
И заставляйте ее работать
Денис Колесников
https://facebook.com/DenKolesnikov
https://twitter.com/DenisKolesnikov
149
Спасибо!
Денис Колесников
https://facebook.com/DenKolesnikov
https://twitter.com/DenisKolesnikov
150
Спасибо!
• Decision making wiki

• Software Analytics wiki

• Hasura

• Discovery.js GitHub

• Роман Дворнов – Маленький Data Science для
большого фронтенда

• Discovery.js tutorials: quick start

• Concourse CI

• Когда твой код стал общим: история от дебюта до
эндшпиля

• Discovery GraphiQL

• JSONDiscovery

More Related Content

PPTX
Bios power bi о нас (RU)
PDF
Новая жизнь Ваших даных с PowerBI
PDF
Power BI для аналитики данных из 1С: практический опыт
PDF
Предиктивная аналитика и Big Data: методы, инструменты, решения
PDF
Бизнес-завтрак «Qlik: работаем с данными 1С эффективно»
PDF
Защищенная веб-аналитика для банков, телекомов, медицинских центров
PPTX
Анализ и визуализация данных на базе платформы Microsoft bi
PPTX
Splunk overview Russian
Bios power bi о нас (RU)
Новая жизнь Ваших даных с PowerBI
Power BI для аналитики данных из 1С: практический опыт
Предиктивная аналитика и Big Data: методы, инструменты, решения
Бизнес-завтрак «Qlik: работаем с данными 1С эффективно»
Защищенная веб-аналитика для банков, телекомов, медицинских центров
Анализ и визуализация данных на базе платформы Microsoft bi
Splunk overview Russian

What's hot (20)

PPT
Проектный опыт внедрения Service Desk на примере Альфа Банк Казахстан
PPSX
Informatica Пронет (v.0.3)
PDF
Operational Analytics on Splunk
PDF
инструментальные средства управления проектами
PPT
BI Pre-Sale
PPTX
венчурам презентация Calligraph
PDF
Splunk - универсальная платформа для работы с любыми данными
PDF
Веб-аналитика для всех: WebTrends
PDF
6 важнейших качеств платформы для анализа Больших данных
PPTX
Управление Big data платформой Почты России
PDF
Шесть важнейших качеств платформы для анализа Больших данных
PDF
OSPconf Big Data Forum 2014 Ilya Gershanov
PDF
Виртуализация Данных: Введение
PPTX
Software craftsmanship 16: online building ml pipeline
PDF
современные требования потребителей к системам бизнес аналитики
PDF
презентация Clever data конференция splunk октябрь 2016 v2
PPTX
Atlassian Jira - не только тасктрекер / Анна Котова (Mail.Ru)
PDF
Бекетов (1С) - Управление информационными технологиями предприятия
PDF
ATK QlikView for Retail - Krasnopolsky Andrey
PDF
Qlik Sense в Zenden || Консультационная Группа АТК
Проектный опыт внедрения Service Desk на примере Альфа Банк Казахстан
Informatica Пронет (v.0.3)
Operational Analytics on Splunk
инструментальные средства управления проектами
BI Pre-Sale
венчурам презентация Calligraph
Splunk - универсальная платформа для работы с любыми данными
Веб-аналитика для всех: WebTrends
6 важнейших качеств платформы для анализа Больших данных
Управление Big data платформой Почты России
Шесть важнейших качеств платформы для анализа Больших данных
OSPconf Big Data Forum 2014 Ilya Gershanov
Виртуализация Данных: Введение
Software craftsmanship 16: online building ml pipeline
современные требования потребителей к системам бизнес аналитики
презентация Clever data конференция splunk октябрь 2016 v2
Atlassian Jira - не только тасктрекер / Анна Котова (Mail.Ru)
Бекетов (1С) - Управление информационными технологиями предприятия
ATK QlikView for Retail - Krasnopolsky Andrey
Qlik Sense в Zenden || Консультационная Группа АТК
Ad

Similar to Software Analytics in frontend (20)

PDF
Инструменты разные нужны, инструменты разные важны
PPT
инструменты веб разработчика
PPTX
Errors Tracker
PDF
Построение системы аналитики
PPTX
Little Service in 2h
PDF
Pandoras white box
PDF
Инструменты разные нужны, инструменты разные важны
PPTX
«трудности при разработке сложных распределённых систем на Java. способы реше...
PPTX
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
PDF
«Архитектура Справочного API 2ГИС» — Сергей Коржнев, 2ГИС
PPTX
Оптимизация производительности нагруженных веб-систем на Java
PDF
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
PDF
Cергей Коржнев, 2ГИС
PDF
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
PPTX
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
PDF
Алексей Романчук «Реактивное программирование»
PDF
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
PDF
Применение статистических методов и инструментов для анализа производительнос...
PDF
Разработка веб-сервисов осень 2013 лекция 8
PDF
'Сrafting software architecture decisions' by Maksym Klymyshyn at ODESSA'2020
Инструменты разные нужны, инструменты разные важны
инструменты веб разработчика
Errors Tracker
Построение системы аналитики
Little Service in 2h
Pandoras white box
Инструменты разные нужны, инструменты разные важны
«трудности при разработке сложных распределённых систем на Java. способы реше...
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
«Архитектура Справочного API 2ГИС» — Сергей Коржнев, 2ГИС
Оптимизация производительности нагруженных веб-систем на Java
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Cергей Коржнев, 2ГИС
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
Алексей Романчук «Реактивное программирование»
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Применение статистических методов и инструментов для анализа производительнос...
Разработка веб-сервисов осень 2013 лекция 8
'Сrafting software architecture decisions' by Maksym Klymyshyn at ODESSA'2020
Ad

Software Analytics in frontend