Files
SQS-service/README.md
T

100 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SQS-service — Multi-Tenant Message Queue Service
Совместимый с AWS SQS сервис очередей сообщений с поддержкой нескольких изолированных тенантов, developed from GoAws.
## Возможности
- **AWS SQS API-совместимый** — работает с AWS SDK без изменений кода
- **Многотенантность** — каждый тенант имеет отдельный Access Key и Secret Key
- **Redis persistence** — очереди и сообщения сохраняются при перезапуске сервиса
- **Web UI Console** — управление тенантами и просмотр сообщений
- **Kubernetes-ready** — Helm/манифесты, TLS Ingress, здоровье-checks
- **Admin API** — управление тенантами программно
## Быстрый старт
### Локально
```bash
docker run -d -p 9090:9090 naeel/shared-sqs:latest
# Откройте http://localhost:9090
```
### На Kubernetes
```bash
kubectl apply -k deployments/k8s/
```
### Сборка локально
```bash
go build -o shared-sqs ./app/cmd
./shared-sqs --port 9090
```
## Архитектура
```
app/
├── cmd/ — точка входа
├── models/ — структуры данных (Queue, Message, Tenant)
├── gosqs/ — реализация SQS API
├── admin/ — Admin API (Create Tenant, Get Tenant и т.д.)
├── tenant/ — изоляция и авторизация по тенанту
├── auth/ — AWS Signature V4 верификация
├── persistence/ — Redis adapter
├── router/ — HTTP маршруты
└── ui/ — Web Console (HTML/JS)
deployments/k8s/
├── deployment.yaml — Deployment с Redis sidecar
├── ingress.yaml — TLS, qu.kube5s.ru
└── redis.yaml — Redis Persistent Volume
```
## Окружение
| Переменная | Значение | Описание |
|-----------|---------|---------|
| `PORT` | 9090 | Порт HTTP сервера |
| `REDIS_URL` | localhost:6379 | Redis для persistence |
| `SHARED_SQS_SEED_DEMO` | true/false | Загрузить demo данные на старте |
## API примеры
### Создать очередь (как тенант)
```bash
curl -X POST "http://localhost:9090/" \
-H "Authorization: AWS4-HMAC-SHA256 Credential=SSAK-demo-shared-sqs/20260410/us-east-1/sqs/aws4_request" \
-d "Action=CreateQueue&QueueName=myqueue&Version=2012-11-05"
```
### Отправить сообщение
```bash
aws sqs send-message \
--endpoint-url http://localhost:9090 \
--queue-url http://localhost:9090/demo-shared-sqs/myqueue \
--message-body "Hello World"
```
## История
- **v0.1.11** — Redis write-through persistence
- **v0.1.13** — Фикс критического дедлока в CreateQueue
- **v0.1.14** — Фикс UI (sent_at поле), TLS Ingress
## Документация
- [PLAN.md](PLAN.md) — детальный план разработки
- [doc/billing-and-metrics.md](doc/billing-and-metrics.md) — биллинг и Prometheus-метрики
- [doc/byoc-credentials.md](doc/byoc-credentials.md) — BYOC интеграция
## Ссылки
- Репо: https://gitea.services.ngcloud.ru/Nail/SQS-service
- Demo (dev): https://qu.kube5s.ru
- Основана на: [GoAws](https://github.com/Admiral-Piett/goaws)