Островок Капча
Островок Капча
Островок Капча

Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной

Вадим Ваганов, руководитель разработки и Head of Profession Backend в Газпромбанке, рассказывает, почему важно визуализировать метрики и свою работу.

586 открытий4К показов
Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной

Фронтендеры и мобильщики могут продемонстрировать результаты своей работы визуально — показать красивый интерфейс, анимацию, новую удобную кнопку. А как быть бэкендерам, особенно начинающим? Как эффектно показать, что результат вашей недельной работы — это не какие-то там циферки в консоли, а важный результат? Ответ: метрики, визуализация, мониторинг.

Меня зовут Вадим Ваганов, я руководитель разработки и Head of Profession Backend в Газпромбанке. Я люблю делиться опытом, а также обучать и приносить пользу другим. Все свои статьи я строю на личных историях, так что эта будет такой же. Она для тех, кто только начинает свой путь в бэкенд-разработке и еще не вник в вопросы визуализации своей работы. Расскажу, почему стоит инвестировать время в эти направления и как благодаря им вы станете более крутым инженером с первых шагов в профессии.

Дисклеймер: да, мониторинг — более широкая тема, но сегодня будем говорить в первую очередь про метрики и их визуализацию.

Проблема: что делать, если есть трудности с презентацией и оценкой своей работы

Фронтендерам и мобильщикам чуть проще в начале пути разработчика: они могут нарисовать красивую кнопочку, сделать что-то визуальное, и даже если логика проста, то визуал можно «продать» — банально показать друзьям. А бэкендерам что показать? Как в консольку выводим циферки?

Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной 1

Это, конечно, шутка (хоть и с долей правды), но проблема демонстрации результатов своей работы для бэкендеров действительно существует — будь то коллеге, боссу, бизнесу или самому себе, в конце концов. Решение есть — метрики, визуализация, мониторинг. Эта тема сильно недооценена. Часто люди ничем, кроме логов, не пользуются. Не допускайте этой ошибки!

Начинаем с простого: получаем данные о состоянии приложения

Я не хочу делать это просто вводной, теоретической статьей по мониторингу. Нам нужна база, и мы рассмотрим ее на практике. Все примеры доступны в репозитории на GitHub, где вы найдете полный код и конфигурацию. Вы можете либо клонировать репозиторий, либо настроить все с нуля, следуя инструкциям ниже. Нам понадобится всего 5–10 минут, чтобы получить первые результаты.

Подготовка окружения

Для примера нам понадобятся:

Все придумано до нас, поэтому воспользуемся готовыми инструментами — например, micrometer (документация тут) или аналог, если у вас не Java/Kotlin. Интегрируем его с /actuator.

В build.gradle нужно добавить следующее:

			implementation 'io.micrometer:micrometer-registry-prometheus'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

		

Проверяем запрос в тестовом контроллере:

			curl http://localhost:8080/demo
		

и смотрим на метрики:

			curl http://localhost:8080/actuator/prometheus
		

Пока что мы можем получать такую информацию в моменте, но мы хотим историчности, следовательно, это дело надо как-то получать и где-то хранить.

У нас есть заготовленный конфиг, чтобы поднять Grafana и Prometheus:

			docker compose -f local/docker-compose.yml up
		

Открываем UI Prometheus, пробуем найти demo_requests_total, нажимаем Execute, проверяем историчность — она есть!

Теперь можно визуализировать данные. Открываем Grafana, вводим admin/admin и создаем дашборд:

  1. Dashboards -> Create Dashboard -> Add visualization
  2. Конфигурируем Data Source: Configure a new data source -> Prometheus -> Connection = http://prometheus:9090 -> Save & test
  3. Возвращаемся к меню Create Dashboard -> Add visualization, выбираем Data Source prometheus
  4. Настраиваем дашборд: выбираем Code вместо Builder, пишем sum (rate(demo_requests_total[1m]))

Отлично! Давайте накидаем еще запросов, чтобы посмотреть, как это будет выглядеть:

			for i in $(seq 1 1000); do
  curl -sS -o /dev/null http://localhost:8080/demo
done

		

Теперь у нас на графике видна динамика запросов. Инструментарий готов! Теперь мы можем:

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

Что отслеживать в бэкенд-приложениях

У вас когда-нибудь было состояние, когда вам плохо, болит голова, першит горло, и вы думаете, что все — у вас 38 °C, и вы жутко простудились. Берете градусник, измеряете температуру... А у вас 36.6 °C. Не полагайтесь на ощущения — смотрите в мониторинг!

Состояние серверов и инфраструктуры

  • Загруженность CPU и памяти серверов.
  • Загруженность дисков.
  • Мониторинг сети.
  • И другие инфраструктурные метрики.

Здесь важен в том числе анализ долгосрочных тенденций, например: насколько скоро закончится свободное место при текущем уровне нагрузки?

Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной 2

Метрики производительности приложения

В SRE Google выделяют 4 золотых сигнала:

  1. Latency (задержка) — время, необходимое для обработки запроса;
  2. Traffic (трафик) — количество запросов к системе;
  3. Errors (ошибки) — процент запросов, которые заканчиваются ошибкой;
  4. Saturation (насыщение) — насколько система загружена.
ВАЖНО: иногда ваше приложение начинает работать медленно из-за интеграций, поэтому их тоже просто необходимо отслеживать. Если провайдер данных отвечает за 1 с, а у вас в SLA — 250 мс, то как бы производительно и надежно ни было ваше приложение — у вас уже проблемы.
Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной 3
Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной 4

Бизнес-метрики

Это те метрики, которые совершенно прекрасны, потому что они помогут вам почувствовать себя не просто писателем кода, а тем, кто действительно влияет на продукт и бизнес в целом. Скажем, можно отслеживать конверсии и ключевые действия: если ваше приложение связано с бизнес-процессами, важно отслеживать ключевые метрики, например количество покупок. Это помогает понять, насколько успешно работает ваше приложение.

Если вы проверяете гипотезы или проводите a/b-тестирование — собирать и визуализировать метрики просто обязательно.

Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной 5

Красиво — это не только про визуал. Получать обратную связь и взаимодействовать с системой/продуктом — тоже красиво!

Почему мониторинг — это навык, который стоит прокачать любому инженеру

Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной 6

Мониторинг как важная составляющая DevOps- и SRE-практик

Современные инженеры все чаще сталкиваются с задачами, которые выходят за рамки чистой разработки кода. Инженеры должны не только писать код, но и понимать, как этот код работает в реальных условиях. Это не только сделает вас более компетентными, но и придаст новый интерес работе.

Взаимодействие мониторинга с процессами CI/CD

Изменения — наше все, именно благодаря им мы приносим пользу бизнесу: улучшаем пользовательский опыт, проверяем гипотезы, зарабатываем деньги.

Мониторинг помогает убедиться, что новые изменения работают как задумано, а также не приводят к ухудшению производительности или стабильности системы. Интеграция мониторинга в CI/CD позволяет быстро выявлять проблемы и откатывать изменения, если что-то пошло не так.

Универсальный и вечнозеленый навык

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

Важность анализа данных о вашем продукте

Важные решения принимаются на основе данных, без грамотного отслеживания метрик и их визуализации вы будете просто подбрасывать монетку.

Возможность предвидеть и предотвращать проблемы

Успешные инженеры могут не только решать проблемы, но и предотвращать их. Мониторинг позволяет выявлять аномалии и потенциальные угрозы до того, как они приведут к сбоям.

Подведение итогов

Метрики — это то, что ты хочешь смотреть не только когда плохо, но и когда хорошо.

Мониторинг — это не просто инструмент, это философия. Это способ мышления, который помогает вам быть в курсе того, что происходит с вашей системой, и принимать обоснованные решения.

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

Мониторинг помогает вам расти. Это навык, который будет полезен не только в вашей текущей работе, но и в будущем. Чем раньше вы начнете погружаться в эту тему, тем быстрее вы станете более востребованным специалистом.

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

И да, мониторинг — это просто красиво. Когда наглядно видишь тонкости работы приложения — это совершенно новый уровень погружения в работу.

Так что если вы еще не начали заниматься мониторингом, самое время начать. У вас есть все инструменты и все возможности — вы можете скачать наш репозиторий и начать вникать прямо сейчас.

Полезные источники

Если вам понравится материал и вы захотите ознакомиться с другим моим контентом — приглашаю в мой телеграм-канал.

Следите за новыми постами
Следите за новыми постами по любимым темам
586 открытий4К показов