Перейти к основному содержимому

Архитектура проекта

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, базой данных и модулем визуализации, обеспечивая высокую точность и прозрачность учёта времени и задач для команд разработки.