Pull to refresh
ЮMoney
Всё о разработке сервисов онлайн-платежей

Сделали платформу, которая считает, хватает ли нам в офисе бананов и печенья

Level of difficultyEasy
Reading time4 min
Views1.1K

Шутка! На самом деле платформу мы сделали, чтобы измерять здоровье компонентов в отделе фронтенд-разработки ЮMoney. А на бананах с печеньем (и на кофемашинах) объяснили коллегам, как всё это работает.

Меня зовут Борис Рябов, я руководитель отдела разработки интерфейсов в ЮMoney. Расскажу, какие задачи нам помогает решать Health Check Dashboard во фронтенд-разработке, и покажу, как выглядит платформа изнутри.

Какая была проблема

  • В отделе фронтенд-разработки более 80 компонентов, за которыми нужно следить.

  • Есть много технологий, которые надо регулярно обновлять: React, Redux, TypeScript, Node.js и другие. Весь список можно посмотреть здесь.

  • Идёт параллельная работа над техдолгом в разных командах.

  • При этом мониторинга технического состояния компонентов недостаточно

  • Слишком много ручных таблиц (по командам и компонентам), которые не обновляются автоматически.

Какие были требования к будущему инструменту

Нам хотелось:

  • Видеть все виды метрик (статистические, динамические, метрики качества кода) с разных инструментов (Grafana, Kibana, SonarQube) и дашбордов. 

  • Выработать единый подход для разных технологий и отделов, чтобы инструмент подходил не только фронтенд-разработчикам, но и другим командам. Для этого нужно обеспечить независимость от разных языков программирования и стека.

  • Сделать инструмент, подходящий для всех. Чтобы у него был красивый и удобный интерфейс, с помощью которого можно строить отчёты, отслеживать статистику в динамике и наблюдать, как конкретная команда улучшила показатели за определённый промежуток времени.

  • Чтобы полученными данными можно было управлять, например фильтровать их. 

Что у нас получилось

Универсальный инструмент для отслеживания здоровья компонент во всех командах и по всем продуктам. 👍 Разберём, что у него внутри.

Вот health-чеки для приложений и библиотек во фронтенде и бэкенде, которые у нас есть сейчас.

Можно перейти в любой раздел и посмотреть состояние каждого компонента. Например, так выглядит вкладка frontend-applications.

В строках отображается набор компонент — это наши репозитории, а в столбцах — набор правил. Правил сейчас немного, мы постоянно их дополняем, но те, что есть, самые важные для нас. 

Как формируются оценки

Перейдём на страницу компонента checkout-client. Видим, что суммарная оценка у него не самая высокая — C.

У каждого набора правил есть своя оценка — A, B, C и D. Мы считаем среднее арифметическое этих оценок и выводим результат на страницу компонента — так формируется суммарная оценка.

Правило состоит из трёх основных сущностей: 

  • Описание: что это за правило и для чего оно нужно.

  • Обоснование: почему важно это правило соблюдать.

  • Решение: что нужно делать, чтобы оценка повышалась.

Также в соответствующей вкладке можно посмотреть оценки в разрезе конкретных правил.

Где много красного цвета, там всё плохо. На эти правила стоит обратить пристальное внимание. Оценки можно смотреть для конкретных команд, правил и временных интервалов. 

Как мы используем инструмент

Например, мы видим, что есть какая-то проблема, но не понимаем её масштабов. Могут быть проблемы, связанные с отставанием версий, использованием устаревшего кода, несоответствием практикам, принятым в отделе, и так далее. 

  • Внедряем правило, таким образом подсвечивая нашу проблему для всех команд. 

  • Идём по списку — от самых проблемных и значимых мест к менее важным, заносим тезисы по решению проблем в планы команды. 

  • Доносим до бизнеса, почему эти проблемы нужно исправить, и показываем, как мы будем это делать. 

  • Директивно решаем проблемы с конкретными командами и компонентами.

  • Через время анализируем, что у нас получилось, и думаем, что делать дальше.

Разберём на конкретном примере.

  • Есть проблема с использованием deprecated-зависимостей.

  • Пишем правило, которое проверяет наличие таких зависимостей и считает их количество.

  • Проверяем в каждом компоненте, как соблюдаем это правило. Смотрим, что нужно проработать и улучшить. Решаем, как перейти на принятые в отделе версии.

Большое преимущество инструмента — удобство для платформенных команд

Допустим, нужно раскатать большое обновление на весь отдел, чтобы все компоненты обновились. Для этого мы делаем несколько шагов:

  • Создаём правило для нашего обновления и расписываем, что должна сделать каждая команда.

  • Внедряем это правило.

  • Собираем информацию обо всех приложениях. 

  • Отслеживаем, насколько каждое приложение соответствует этому правилу. Постепенно обновляем правило.

Надо уделить внимание и самим командам — чтобы они понимали, почему важно выполнять правила. Поэтому мы:

  • Уведомляем разработчиков о проблемах со здоровьем сервисов, где оценка в результате работы правила оказалась низкой. 

  • Берём задачи на контроль и приоритезируем их. 

  • Наблюдаем в health-чеке, как они меняются в динамике. 

  • Помогаем командам там, где больше всего проблем. 

Тот самый пример с печеньками и бананами на кофепоинте ЮMoney (вдруг вам тоже интересно)

Допустим, мы хотим оценить, какой из трёх кофепоинтов в петербургском офисе ЮMoney самый классный. 

У всех кофепоинтов будет одинаковый набор правил:

  • на каждом должны быть вкусные печеньки,

  • рабочая кофемашина,

  • бананы в количестве 15 или 20 штук.

У этого правила будут такие оценки: 

  • Вкусные печеньки: есть (А) или нет (D).

  • Кофемашина: работает (А) или нет (D).

  • Бананы: 20 штук (A), 15 (B) или вообще нет (D).

В зависимости от критериев будет меняться и оценка.

  • Мы создадим правило, а когда запустим его, увидим, что в конкретный день на конкретном кофепоинте были печеньки (А) и 20 бананов (А), но не работала кофемашина (D). 

  • Исходя из этого мы определим общую оценку, например C, как в примере выше. И так cделаем cо всеми тремя кофепоинтами в офисе.

  • Затем понаблюдаем, как будут меняться показатели на протяжении определённого времени — скажем, одного месяца. 

  • Определим самый проблемный кофепоинт и будем следить, чтобы там всегда было 20 бананов и много печенья, а кофемашина работала.

А вы читали о том, как мы следим за здоровьем компонентов в бэкенде? Статья об этом — здесь.

Вывод

Как видите, в компании нашу платформу может использовать кто угодно и для любых задач — даже для того, чтобы оценить состояние кофепоинтов. Важно не просто внедрить такой инструмент, но и поддерживать его: регулярно следить за тем, чтобы оценки не понижались, а если так произошло, то выяснить причину и исправить это. Наблюдать за тем, как сотрудники выполняют задачи, как меняется статус этих задач и влияет ли это на состояние продуктов и команд.


Подписывайтесь на наш блог, чтобы не пропускать новые материалы от команды ЮMoney.

Tags:
Hubs:
Total votes 5: ↑3 and ↓2+1
Comments2

Articles

Information

Website
jobs.yoomoney.ru
Registered
Founded
Employees
1,001–5,000 employees
Location
Россия
Representative
yooteam