See README.en.md
Версия: 0.9.5
Архитектура: Микросервисная
Назначение: Сервис хранения и распространения заметок
Формат заметок: Текстовые, с поддержкой публичного доступа
Развёртывание: Kubernetes, Helm, KEDA
N.D.S.S (Note Distribution and Storage Service) — это распределённый, масштабируемый сервис для хранения, раздачи и поиска текстовых заметок. Он является собственным аналогом Pastebin, спроектированным с учётом надёжности, горизонтального масштабирования и гибкой архитектуры, подходящей для высоких нагрузок.
- Реализован с использованием Django REST Framework
- Использует роутер баз данных для разделения логики
- Кэширует:
- Отдельные заметки
- Результаты поисковых запросов
- Интеграция с внешним сервисом генерации ID
- Асинхронные задачи через Celery (удаление, обновление, индексация)
-
PostgreSQL:
- Zalando Operator
- master–standby
- масштабируется через KEDA
-
Redis:
- Bitnami
- master–replica
- используется как кэш и брокер
-
MinIO:
- объектное хранилище контента
-
MeiliSearch:
- полнотекстовый поиск публичных заметок
- Prometheus + Grafana — метрики
- Grafana Loki — логирование
- KEDA — автоскейлинг
-
Unit-тесты для DRF API
-
Тестовые скрипты для проверки сервисов:
- Redis, PostgreSQL, MinIO, MeiliSearch
- Kubernetes-кластер
- Helm 3
kubectl
с нужным контекстом
Перед запуском приложения необходимо создать файл .env
с необходимыми переменными окружения.
Пример файла можно найти в .env.template
.
cd app
docker build -f web.dockerfile -t drf-app:latest .
chmod +x deploy.sh
./deploy.sh
Все чувствительные данные хранятся в Kubernetes секретах:
minio-secret
- учетные данные MinIOredis-secret
- пароль Redismeilisearch-secret
- API ключ Meilisearchpostgres-app-secret
- учетные данные PostgreSQL для приложения
При необходимости, секреты можно обновить в соответствующих файлах:
app/minio-secret.yaml
app/redis-secret.yaml
app/secret.yaml
app/postgres-app-secret.yaml
Проект распространяется под лицензией MIT. Подробнее см. файл LICENSE
.