Skip to content

The system simulates, stores, and analyzes NHL data: information about teams, players, matches, trophies, tickets, and users.

Notifications You must be signed in to change notification settings

W-y-l-t/NhlInforamtionSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Информационная система для НХЛ

Учебный проект, демонстрирующий полный цикл разработки: от проектирования схемы до развёртывания и администрирования. Система хранит и анализирует данные НХЛ: информацию о командах, игроках, матчах, трофеях, билетах и пользователях.

Реализована полноценная ER-диаграмма с учётом связей между сущностями (команды, игроки, матчи, статистика и т.д.). Проект выполнен в три этапа:

  • Проектирование (моделирование данных и ER-диаграммы)
  • Развёртывание (настройка кластера PostgreSQL с репликацией и Flyway-миграции)
  • Администрирование (мониторинг через Prometheus/Grafana, резервное копирование, нагрузочное тестирование)

Использованные технологии и инструменты

  • Docker & Docker Compose – контейнеризация и оркестрация сервисов проекта для упрощения развёртывания инфраструктуры.
  • PostgreSQL – реляционная СУБД для хранения данных.
  • Patroni + etcd – автоматическая репликация PostgreSQL, обеспечивают high-availability базы данных.
  • HAProxy – балансировка запросов к текущему мастеру PostgreSQL-кластера.
  • Flyway – автоматические миграции базы данных, версионирование схемы.
  • Python + Faker – генерация реалистичных тестовых данных.
  • C# (.NET Core) – демонстрационный backend-сервис с REST API.
  • Prometheus – сбор метрик с PostgreSQL, Patroni, HAProxy, .NET-сервиса и нагрузочного тестирования.
  • Grafana – визуализация собранных метрик и состояния системы.
  • k6 – нагрузочное тестирование backend-сервиса.
  • Резервное копирование – регулярное создание дампов базы данных с очисткой старых копий.

Жизненный цикл проекта

При запуске проекта (docker-compose up -d) выполняется следующая последовательность действий:

  1. Поднимается кластер etcd.
  2. Запускаются узлы Patroni с PostgreSQL и выбирается мастер.
  3. HAProxy балансирует запросы, определяя текущего мастера и реплики.
  4. Flyway применяет миграции до актуальной версии схемы.
  5. Python + Faker генерируют и заполняют базу данных тестовыми данными.
  6. Создаётся роль analytic и пользователи-аналитики из переменной окружения.
  7. Поднимается ASP.NET Core backend-сервис.
  8. Запускается Prometheus и Grafana для мониторинга.
  9. При активации профиля benchmark выполняется нагрузочное тестирование через k6, результаты мониторинга отправляются в Prometheus.
  10. Cron-задача регулярно создаёт резервные копии.

Развёртывание проекта

Создайте и настройте файлы .env и patroni.env, руководствуясь соответствующими .example версиями из репозитория.

Для запуска проекта с мониторингом и нагрузочным тестированим используйте:

docker-compose up -d --profile benchmark

Мониторинг

Дашборды Grafana

Готовые дашборды находятся в папке:

monitor/grafana/dashboards/
  • NHL Dashboard – основной дашборд с метриками производительности, запросов и состояния кластера.

Импортируйте JSON-файл дашборда в Grafana через интерфейс и начинайте мониторинг.

Структура репозитория

DESCRIPTION.MD                  # Функциональные требования и ERD
nhl-db/
├── migrations/                 # Flyway-миграции
├── seed/                       # Python-скрипты и Dockerfile для генерации данных
├── monitor/
│   ├── prometheus/             # Конфигурация Prometheus
│   └── grafana/                # Конфигурация Grafana и JSON-дашборды
├── scripts/init/               # Скрипты для создания ролей и пользователей
├── backup/                     # Скрипт для резервного копирования базы данных
├── k6/                         # Сценарии нагрузочного тестирования
├── docker-compose.yml          # Основной Docker Compose-файл
├── .env.example                # Шаблон файла переменных окружения
├── haproxy.cfg                 # Конфигурация haproxy
├── Dockerfile.haproxy
└── patroni.env.example         # Шаблон файла переменных окружения для patroni
NhlBackend/                     # REST API для имитации работы сервиса                  

About

The system simulates, stores, and analyzes NHL data: information about teams, players, matches, trophies, tickets, and users.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published