Описание проекта
Backend-сервис для лендинга продажи красок, реализующий полный цикл обработки заказов: от приема запросов от пользователей до асинхронной обработки и отправки уведомлений.
Проект демонстрирует использование современных технологий веб-разработки, микросервисной архитектуры, очередей сообщений и мониторинга приложений.
Технологический стек
Статистика проекта
Архитектура системы
Компоненты:
- Web Server - Django REST API для обработки HTTP запросов
- Worker - Асинхронный обработчик сообщений из RabbitMQ
- PostgreSQL - Основная база данных
- RabbitMQ - Очередь сообщений для асинхронной обработки
- Redis - Кэширование и сессии
- Prometheus - Сбор метрик производительности
- Grafana - Дашборды для визуализации метрик
- MailHog - Тестовый SMTP сервер для проверки email
Все сервисы запущены через Docker Compose
API Endpoints
Продукция (Products)
/api/products/
/api/products/{id}/
/api/products/
/api/products/featured/
/api/products/?search=query
Контакты (Contacts)
/api/contacts/
/api/contacts/
Мониторинг
/metrics
Рабочий процесс
Обработка запроса на контакт:
- Пользователь отправляет POST запрос на
/api/contacts/ - Сервер сохраняет запрос в PostgreSQL
- Сервер отправляет событие в очередь RabbitMQ
email_notifications - Сервер сразу возвращает успешный ответ пользователю
- Worker получает сообщение из очереди
- Worker отправляет письмо с благодарностью пользователю
- Worker отправляет уведомление сервисным учеткам
- Worker помечает запрос как обработанный в БД
Главная страница MailHog с отправленными письмами
Пример отправленного письма с благодарностью пользователю
Мониторинг и метрики
Система собирает метрики через Prometheus и визуализирует их в Grafana. Доступны следующие метрики:
- HTTP Requests Rate - скорость HTTP запросов
- HTTP Request Duration - время ответа (50th и 95th percentile)
- Total Requests - общее количество запросов
- Error Rate (5xx) - частота ошибок сервера
- HTTP Status Codes - распределение по статус-кодам
- Database Queries Rate - скорость запросов к БД
Метрики в Prometheus
Пример запроса метрик
Тестирование
Покрытие тестами: 91.88%
Coverage отчет доступен в GitHub Actions CI: 📊 Посмотреть coverage в CI
- Тесты моделей (Product, ContactRequest)
- Тесты API endpoints (CRUD операции)
- Тесты сериализаторов
- Тесты воркера (обработка RabbitMQ сообщений)
- Тесты отправки email
- Интеграционные тесты
Админ-панель Django
Реализована полнофункциональная админ-панель для управления данными:
Управление продукцией в админ-панели
Управление запросами на контакт
Docker и развертывание
Весь проект контейнеризован и может быть запущен одной командой:
Это запускает все необходимые сервисы:
- Django веб-сервер
- Worker для обработки очередей
- PostgreSQL база данных
- RabbitMQ брокер сообщений
- Redis кэш
- Prometheus для метрик
- Grafana для визуализации
- MailHog для тестирования email
Структура проекта
Полезные ссылки
- GitHub репозиторий: https://github.com/EgorovM/olki-backend
- API: /api/products/
- Админ-панель: /admin/
- Метрики: /metrics
- Grafana: http://localhost:3000
- Prometheus: http://localhost:9090
- MailHog: http://localhost:8025
- RabbitMQ Management: http://localhost:15672