Skip to content

aquaracer/Fastapi-User-Profile-Microservice

Repository files navigation

User Profile Microservice

FastAPI PostgreSQL/PostGIS Redis Docker Compose Python SQLAlchemy PostgreSQL Docker Pydantic ruff Prometheus Grafana


Описание

Асинхронный микросервис для управления профилями пользователей с поддержкой геолокационного поиска, кэширования и JWT-аутентификации. Сервис построен на FastAPI, использует PostgreSQL с расширением PostGIS для хранения геоданных и Redis для кэширования.


🚀 Основные возможности

  • Регистрация и обновление профиля пользователя (с валидацией возраста 18+)
  • Поиск профилей по радиусу и возрасту (геолокация через PostGIS)
  • Кэширование результатов поиска в Redis (ускорение повторных запросов)
  • JWT-аутентификация (доступ только с валидным токеном)
  • Асинхронная работа с БД и кэшем
  • Докеризация и миграции через Alembic
  • Cбор, хранение и визуализация метрик через Prometheus, Grafana

🛠️ Технологический стек

  • Python 3.12 — основной язык разработки
  • FastAPI — современный асинхронный web-фреймворк
  • SQLAlchemy — ORM для работы с базой данных (async)
  • Alembic — миграции схемы БД
  • PostgreSQL + PostGIS — реляционная база данных с поддержкой геоданных
  • Redis — кэширование и хранение сессий (асинхронный доступ)
  • Docker, docker-compose — контейнеризация и оркестрация сервисов
  • Poetry — управление зависимостями и пакетами
  • Pydantic — валидация и сериализация данных
  • Ruff — быстрый и современный линтер для Python
  • Prometheus — сбора и хранения метрик микросервиса
  • Grafana — визуализация метрик и построения дашбордов на основе данных из Prometheus

Слои приложения

  • Контроллеры: обработка HTTP-запросов, валидация, возврат ошибок
  • Сервисы: бизнес-логика, кэширование, агрегация данных
  • Репозитории: работа с БД через SQLAlchemy
  • Кэш: асинхронное взаимодействие с Redis
  • Модели и схемы: структура данных, Pydantic и SQLAlchemy
  • Исключения: централизованная обработка ошибок

Метрики по приложению в Grafana

Метрики по приложению FastAPI в Grafana

Быстрый старт

Развертывание с помощью Docker

  1. Создайте папку с проектом и склонируйте репозиторий:
mkdir user_profile_service
cd user_profile_service
git clone https://github.com/aquaracer/Fastapi-User-Profile-Microservice.git
  1. Настройте переменные окружения в файле .env

  2. Соберите и запустите контейнеры:

docker-compose up --build
  1. Примените миграции базы данных:
docker exec -it user_profile_service bash
poetry run alembic upgrade head

Приложение будет доступно по следующим адресам:

  • API: http://localhost:8000
  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

About

Асинхронный микросервис для управления профилями пользователей с поддержкой геолокационного поиска, кэширования и JWT-аутентификации. Стек: Python, Fastapi, PostgreSQL, Postgis, Redis, JWT, Grafana, Prometheus

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors