"Учиться на лучшем — значит творить лучшее."
gRPC Document Microservice — это современный микросервис для управления документами, построенный на основе gRPC, чистой архитектуры и Domain-Driven Design (DDD). Он предоставляет функциональность для создания, обновления, удаления, восстановления и версионирования документов с поддержкой MongoDB или PostgreSQL и кэшированием через Redis.
- 📝 Полный CRUD: Создание, чтение, обновление и мягкое удаление документов.
- 🔄 Версионирование: Хранение и восстановление предыдущих версий документов.
- 🗄 Гибкость хранилищ: Поддержка MongoDB и PostgreSQL с переключением через конфигурацию.
- ⚡ Кэширование: Использование Redis для повышения производительности.
- 🛠 Чистая архитектура: Модульная структура с разделением слоев.
- 🔗 Dependency Injection: Управление зависимостями через
Dishka
. - 🐳 Контейнеризация: Легкое развертывание с Docker и docker-compose.
Категория | Технологии |
---|---|
Язык | Python 3.12 |
gRPC | grpcio , grpcio-tools , protobuf |
DI | Dishka |
ORM/ODM | SQLAlchemy (PostgreSQL), Beanie (MongoDB) |
Кэш | Redis , redis-py , tenacity |
Валидация | Pydantic v2 |
Логирование | logging |
Контейнеризация | Docker , docker-compose |
-
Клонируйте репозиторий:
git clone https://github.com/RitinaADM/grpc_microservice.git cd grpc_microservice
-
Настройте окружение:
Скопируйте
.env.sql.example
или.env.nosql.example
в.env
и настройте параметры:cp .env.sql.example .env
-
Запустите с Docker:
docker-compose up --build
Сервер будет доступен на
localhost:50051
. -
Проверьте API:
grpcurl -plaintext localhost:50051 describe document.DocumentService
Подробные инструкции по установке и использованию см. в документации.
grpc_microservice/
├── src/ # Исходный код
│ ├── application/ # Бизнес-логика
│ ├── domain/ # Доменные модели и порты
│ ├── infra/ # Адаптеры (gRPC, базы данных, кэш)
│ └── app.py, main.py # Точки входа
├── proto/ # Protobuf файлы
├── docs/ # Документация
├── Dockerfile # Конфигурация Docker
├── docker-compose.yml # Оркестрация сервисов
├── .env, .env.*.example # Настройки окружения
└── requirements.txt # Зависимости
Полная документация доступна в директории /docs
:
- Установка и запуск
- Использование API
- Архитектура проекта
- Спецификация API
- Руководство для разработчиков
- Решение проблем
Проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.
Приветствуются любые улучшения! Пожалуйста, создавайте issues или pull requests в репозитории. Ознакомьтесь с руководством для разработчиков перед началом работы.
Создано с ❤️ для сообщества разработчиков.