На схеме мы видим несколько логических блоков, связанных друг с другом при помощи REST-запросов и прямых интеграций. Центральным элементом выступает PanDev Metrics Server, который собирает и обрабатывает данные от плагинов (к ним относятся IDE, браузер и т.д.), а также взаимодействует с внешними системами (Jira, GitLab, LDAP/Active Directory), сохраняя результаты в базе данных PostgreSQL и предоставляя их для визуализации в Grafana.
Вся логика разбита на модули, чтобы наглядно показать, кто откуда получает информацию и куда её отправляет. Рассмотрим каждый блок подробнее.
Jira Integration Module
Этот модуль позволяет PanDev Metrics Server отправлять в Jira обновлённые данные о времени, потраченном разработчиками на задачи, а также делать автоматические комментарии к этим задачам. Взаимодействие — одностороннее: стрелка идёт от PanDev Metrics Server к Jira, так как мы только «выгружаем» трекинг времени и статусы, не запрашивая обратную информацию.
GitLab Integration Module
Аналогичным образом PanDev Metrics Server пересылает в GitLab данные о затраченном времени (time tracking), что упрощает менеджерам и тимлидам процесс ревью кода. Они сразу видят, какие изменения в коде были внесены и сколько человекочасов на это ушло. Как и в случае с Jira, связь также односторонняя (стрелка указывает от сервера к GitLab).
Зачем нужны интеграции?
Интеграции с системами управления проектами — это удобный способ дополнить их «родные» трекинги и предоставить более точную статистику. Руководитель или тимлид может увидеть реальное время, затраченное на задачу, сопоставить с плановыми оценками и принять корректирующие решения.
Это центральный «хаб» всей системы. PanDev Metrics Core выполняет несколько важных функций:
Получение входящих данных от плагинов
Плагины (VS Code, JetBrains, Chromium) отправляют информацию об активности разработчиков: над какими файлами велась работа, в каких ветках шли изменения, сколько времени было проведено в браузере, и так далее.
Агрегация и обработка данных
Сервер собирает полученную информацию, «складывает» ее в удобный для анализа формат и готовит к сохранению в базу данных PostgreSQL.
Интеграции с Jira и GitLab
Как мы уже упомянули, сервер передаёт в Jira и GitLab данные о времени и комментарии, чтобы эти системы могли отображать более полную картину по задачам и репозиториям.
Авторизация и безопасность
На схеме видно, что сервер также взаимодействует с LDAP/AD для управления аккаунтами и правами пользователей (см. следующий раздел).
Таким образом, PanDev Metrics Core — это «мозг» всей системы, который оперирует входящими данными и гарантирует, что статистика будет полной, точной и доступной в нужном формате.
В правой верхней части схемы находится блок, показывающий LDAP и Active Directory.
Непосредственно рядом с PanDev Metrics Server расположена база данных PostgreSQL — «хранилище», куда складируются все метрики и аналитические данные. Это могут быть:
Сервер общается с PostgreSQL по двунаправленному каналу: записывает новые данные и при необходимости запрашивает их обратно для формирования отчетов.
Справа на схеме мы видим Grafana, которая также подключается к PostgreSQL. Для упрощения нарисован всего один сервер PostgreSQL, хотя в реальной инфраструктуре могут быть отдельные кластеры/копии.
Этот блок отвечает за наглядность: без каких-либо сложных SQL-запросов можно быстро выбрать нужный период, пользователей или проекты и получить наглядную диаграмму.
В нижней части схемы расположены три ключевых типа плагинов:
VS Code Plugin for Devs
Отслеживает, какие файлы открывались в Visual Studio Code, в каких ветках и репозиториях вносились изменения, сколько времени потрачено на редактирование и т.д.
Chromium Plugin for Developers
Позволяет собирать данные о том, на каких страницах в браузере проводилось время (например, документация, инструменты тестирования, внутренние сервисы), что помогает видеть полную картину дня разработчика.
JetBrains all IDEAS Plugin for Devs
Аналогичные метрики для IDE семейства JetBrains (IntelliJ IDEA, PyCharm, WebStorm, Android Studio и др.). Тоже учитывается время работы в коде, переключение контекстов, открытие/закрытие проектов.
Все плагины работают по схожему принципу: они отправляют (через REST) собранные данные в PanDev Metrics Server. Сервер, в свою очередь, пишет все эти «сырые» и агрегированные данные в PostgreSQL. Таким образом, получается комплексная информация об активности разработчиков во множестве сред и инструментов, что делает метрики действительно объективными и релевантными.
Такая архитектура наилучшим образом решает задачи по сбору объективных данных, централизованному хранению метрик и наглядной их подаче руководителям и самим инженерам. Разработчик или менеджер, заходя в PanDev Metrics, видит единую картину по времени, задачам, веткам, код-ревью и любым другим показателям, которые могут пригодиться при планировании и оценке эффективности работы.
Таким образом, представленная архитектура даёт полную картину взаимодействия между плагинами, внешними сервисами (Jira, GitLab), сервером PanDev Metrics, базой данных и модулем визуализации, обеспечивая высокую точность и прозрачность учёта времени и задач для команд разработки.