Goods API — учебный / pet-проект backend-сервиса для работы с товарами. Проект демонстрирует типичную архитектуру API-приложения на Python с разделением на домены, конфигурацию, инфраструктуру и деплой.
Цель проекта:
- отработать структуру backend-приложения
- показать работу с БД
- подготовить сервис к контейнеризации и деплою
- приблизиться к real-world backend разработке
- реализовать полноценный мониторинг и логирование
- REST API для работы с товарами
- Чёткое разделение слоёв (routers / models / database)
- Конфигурация через YAML
- Docker и docker-compose
- Kubernetes manifests
- Terraform конфигурация
- Poetry для управления зависимостями
- Встроенные метрики Prometheus
- Готовность к интеграции с Grafana и Loki
.
├── api_deployment.yml
├── api_service.yml
├── app
│ ├── config
│ │ └── conf.py
│ ├── database
│ │ ├── db.py
│ │ └── __init__.py
│ ├── goods
│ │ ├── __init__.py
│ │ ├── models
│ │ │ ├── goods.py
│ │ │ └── __init__.py
│ │ └── routers
│ │ ├── goods.py
│ │ └── __init__.py
│ ├── __init__.py
│ ├── metrics
│ │ ├── goods.py
│ │ ├── http.py
│ │ └── __init__.py
│ └── middleware
│ └── prometheus.py
├── db_config.yml
├── db_secrets_example.yml
├── docker-compose.yml
├── Dockerfile
├── init-db.sh
├── LICENSE
├── main.py
├── main.tf
├── mixed-load.sh
├── monitoring
│ └── prometheus
│ └── prometheus.yml
├── poetry.lock
├── postgres_pvc.yml
├── postgres_service.yml
├── postgres_stateful.yml
├── pyproject.toml
└── README.md
-
Добавлен Prometheus для сбора метрик
- Метрики HTTP запросов (количество, длительность, статусы)
- Бизнес-метрики товаров (количество созданных/обновлённых товаров)
- Эндпоинт
/metricsдля сбора данных Prometheus - Middleware для автоматического сбора HTTP метрик
-
Добавить дашборд Grafana для визуализации метрик
- Создать готовые дашборды для:
- Мониторинга состояния API (HTTP метрики)
- Бизнес-метрик товаров
- Мониторинга здоровья базы данных
- Настроить алерты на основе метрик
- Добавить конфигурацию Grafana в docker-compose и Kubernetes
- Создать готовые дашборды для:
-
Реализовать логирование с помощью Loki + Promtail
- Настроить сбор логов приложения
- Интегрировать с Grafana для единого интерфейса
- Создать дашборды для анализа логов
- Реализовать структурированное логирование (JSON-формат)
-
Настроить алертинг
- Создать правила алертинга в Prometheus
- Интегрировать с Alertmanager
- Настроить уведомления (email, Slack, Telegram)
docker-compose up --buildПосле запуска API будет доступен:
- Основное API:
http://localhost:8000 - Документация Swagger:
http://localhost:8000/docs - Метрики Prometheus:
http://localhost:8000/metrics - Дашборд Grafana:
http://localhost:3000
Сервис предоставляет следующие метрики:
http_requests_total- общее количество HTTP запросовhttp_request_duration_seconds- длительность HTTP запросовhttp_requests_in_progress- текущие выполняющиеся запросы
goods_created_total- количество созданных товаровgoods_updated_total- количество обновлённых товаровgoods_operations_total- общее количество операций с товарами
В репозитории присутствуют манифесты для деплоя:
- API
- PostgreSQL (StatefulSet + PVC + Service)
Файлы:
api_deployment.ymlapi_service.ymlpostgres_stateful.ymlpostgres_pvc.ymlpostgres_service.yml
Файл main.tf содержит базовую Terraform-конфигурацию и может быть использован
для развёртывания инфраструктуры (в зависимости от выбранного провайдера).
Файл db_secrets.yml:
- содержит чувствительные данные
- не должен быть закоммичен
- используется только локально или через CI/CD
В репозитории хранится только:
db_secrets_example.yml
- Python
- FastAPI (или аналогичный ASGI-фреймворк)
- PostgreSQL
- Prometheus (метрики)
- Docker / Docker Compose
- Kubernetes
- Terraform
- Poetry
Проект находится в активной разработке. Реализовано:
- Базовая структура API
- Работа с базой данных
- Контейнеризация (Docker)
- Конфигурация Kubernetes
- Метрики Prometheus
- Дашборды Grafana
- Логирование Loki+Promtail
- Полное мониторинговое решение
Используется как:
- учебный проект
- playground для backend / DevOps практик
- пример реализации мониторинга в Python приложениях