Архитектура проекта
PanDev Metrics построен на модульной архитектуре с центральным сервером, который собирает и обрабатывает данные от плагинов и интегрируется с внешними системами.
Общий обзор архитектуры
На схеме мы видим несколько логических блоков, связанных друг с другом при помощи REST-запросов и прямых интеграций. Центральным элементом выступает PanDev Metrics Server, который собирает и обрабатывает данные от плагинов (к ним относятся IDE, браузер и т.д.), а также взаимодействует с внешними системами (Jira, GitLab, LDAP/Active Directory), сохраняя результаты в базе данных PostgreSQL и предоставляя их для визуализации в Grafana.
Архитектурная схема
┌─────────────────────────────────────────────────────────────────┐
│ LDAP/Active Directory │
│ (Авторизация) │
└─────────────────────────┬───────────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────────┐
│ PanDev Metrics Server │
│ (Core) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Получение │ │ Агрегация │ │ Интеграции │ │
│ │ данных от │ │ и обработка │ │ с Jira/GitLab │ │
│ │ плагинов │ │ данных │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────┬───────────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────────┐
│ PostgreSQL │
│ (Data Storage) │
└─────────────────────────┬───────────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────────┐
│ Grafana │
│ (Визуализация) │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ VS Code │ │ Chromium │ │ JetBrains │
│ Plugin │ │ Plugin │ │ Plugin │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────┐
│ PanDev Metrics │
│ Server │
└─────────────────┘
│
┌─────────────────┐
│ PostgreSQL │
│ Database │
└─────────────────┘
Компоненты системы
1. Блок Plugins (VS Code, Chromium, JetBrains)
В нижней части схемы расположены три ключевых типа плагинов:
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.
2. PanDev Metrics Core
Это центральный «хаб» всей системы. PanDev Metrics Core выполняет несколько важных функций:
Получение входящих данных от плагинов
- Плагины (VS Code, JetBrains, Chromium) отправляют информацию об активности разработчиков
- Над какими файлами велась работа, в каких ветках шли изменения
- Сколько времени было проведено в браузере
Агрегация и обработка данных
- Сервер собирает полученную информацию
- «Складывает» ее в удобный для анализа формат
- Готовит к сохранению в базу данных PostgreSQL
Интеграции с Jira и GitLab
- Сервер передаёт в Jira и GitLab данные о времени и комментарии
- Эти системы могут отображать более полную картину по задачам и репозиториям
Авторизация и безопасность
- Сервер взаимодействует с LDAP/AD для управления аккаунтами и правами пользователей
3. LDAP и Active Directory (auth integration)
В правой верхней части схемы находится блок, показывающий LDAP и Active Directory.
- Этот модуль необходим для аутентификации и авторизации
- PanDev Metrics Server обращается к нему, чтобы понять, какие пользователи имеют доступ к системе
- Под какими правами они могут работать
- При входе разработчика или менеджера в PanDev Metrics, система проверяет их учетную запись в корпоративном LDAP/AD
- Исключает необходимость повторного заведения пользователей «вручную»
4. PostgreSQL data storage
Непосредственно рядом с PanDev Metrics Server расположена база данных PostgreSQL — «хранилище», куда складируются все метрики и аналитические данные.
Что хранится:
- Временные срезы (сколько часов в день трудился конкретный разработчик)
- Список открытых файлов, количество коммитов и т.д.
- Сопоставление метрик с задачами в Jira или ветками в GitLab
Взаимодействие:
- Сервер общается с PostgreSQL по двунаправленному каналу
- Записывает новые данные и при необходимости запрашивает их обратно для формирования отчетов
5. Grafana
Справа на схеме мы видим Grafana, которая также подключается к PostgreSQL.
Функции:
- Grafana использует сохранённую в PostgreSQL статистику для создания визуальных дашбордов, графиков и таблиц
- Менеджеры и тимлиды могут видеть все ключевые показатели в одном месте
- Производительность команды, распределение времени по задачам, активность за день/неделю/месяц
Преимущества:
- Наглядность: без каких-либо сложных SQL-запросов можно быстро выбрать нужный период, пользователей или проекты и получить наглядную диаграмму
6. Блок Integrations (Jira и GitLab)
Jira Integration Module
- PanDev Metrics Server отправляет в Jira обновлённые данные о времени, потраченном разработчиками на задачи
- Делает автоматические комментарии к этим задачам
- Взаимодействие — одностороннее: стрелка идёт от PanDev Metrics Server к Jira
- Мы только «выгружаем» трекинг времени и статусы, не запрашивая обратную информацию
GitLab Integration Module
- Аналогичным образом PanDev Metrics Server пересылает в GitLab данные о затраченном времени (time tracking)
- Упрощает менеджерам и тимлидам процесс ревью кода
- Они сразу видят, какие изменения в коде были внесены и сколько человекочасов на это ушло
- Связь также односторонняя (стрелка указывает от сервера к GitLab)
Зачем нужны интеграции?
Интеграции с системами управления проектами — это удобный способ дополнить их «родные» трекинги и предоставить более точную статистику. Руководитель или тимлид может увидеть реальное время, затраченное на задачу, сопоставить с плановыми оценками и принять корректирующие решения.
Поток данных
1. Снизу вверх
Плагины на стороне IDE/браузера собирают детальные данные о работе разработчиков.
2. PanDev Metrics Server
- Принимает эту информацию, сохраняет в базе PostgreSQL
- Передает обработанные метрики и комментарии в Jira/GitLab
- Может использовать LDAP/AD для авторизации пользователей
3. PostgreSQL
Хранит всю статистику, которую затем «читают» Grafana и сам PanDev Metrics Server для аналитики.
4. Grafana
Визуализирует полученные метрики в удобные дашборды для менеджеров и разработчиков.
Ключевые преимущества архитектуры
Масштабируемость
- Легко добавить новые плагины или интеграции
- Модульная архитектура позволяет расширять функциональность
Удобство
- PanDev Metrics Server выступает универсальной точкой сбора
- Не нужно множества систем для разных целей
Прозрачность
- Все данные лежат в одной базе
- Отчёты можно строить в любой удобной BI-системе (в данном случае — Grafana)
Безопасность
- Авторизация через LDAP/AD
- Вся бизнес-логика замкнута на сервере
Итоговое понимание архитектуры
Такая архитектура наилучшим образом решает задачи по:
- Сбору объективных данных от плагинов
- Централизованному хранению метрик в PostgreSQL
- Наглядной подаче данных руководителям и инженерам через Grafana
Разработчик или менеджер, заходя в PanDev Metrics, видит единую картину по времени, задачам, веткам, код-ревью и любым другим показателям, которые могут пригодиться при планировании и оценке эффективности работы.
Таким образом, представленная архитектура даёт полную картину взаимодействия между плагинами, внешними сервисами (Jira, GitLab), сервером PanDev Metrics, базой данных и модулем визуализации, обеспечивая высокую точность и прозрачность учёта времени и задач для команд разработки.