# SQS-service Progress ## Версага v0.1.x ### v0.1.14 (2026-04-10) ✅ - ✅ Фикс критического дедлока в `create_queue.go` (deadlock после первого CreateQueue) - ✅ Фикс UI: `m.sent` → `m.sent_at` (даты сообщений всегда показывали dash) - ✅ Redis write-through persistence запущен - ✅ TLS Ingress: `qu.kube5s.ru` → `185.247.187.151` - ✅ Нагрузочный тест Harbor: 4757 запросов, 99% успех, p95=332ms - **Status: Production-ready для демо, готов к выводу за скобки в отдельный репо** ## Next Steps - [ ] Собрать Docker образ v0.1.15, задеплоить, проверить JWT auth flow - [ ] Resource limits (Фаза 1-4 из doc/decisions/resource-limits-plan.md) - [ ] Migration guide: как обновить сервис на v0.1.15 - [ ] Load testing shared-sqs (текущая реализация имеет глобальный мьютекс) - [ ] DLQ (Dead Letter Queue) поддержка - [ ] Long Polling оптимизация - [ ] Rate limiting per tenant ### v0.1.15 (2026-04-10) — IN PROGRESS - ✅ JWT auth через nubes API (deck-api-test.ngcloud.ru) - ✅ Login page в UI (ввод токена → валидация → auto-provisioning tenant) - ✅ Email пользователя в navbar - ✅ /ui/api/* защищены JWT middleware (больше не публичные) - ✅ TenantID совместим с sless namespace: sless-{SHA256(sub)[:8]} - ✅ Сессия в localStorage (token + email) - [ ] Docker build + deploy + E2E test ## Known Limitations 1. **Глобальный мьютекс** — SyncQueues.Lock() на весь сервис. Performance bottleneck. 2. **Нет DLQ** — failed messages теряются 3. **Long Polling naïve** — polling каждую 100ms вместо push-based 4. **Нет rate limiting** — один тенант может забить всех 5. **Single pod** — нет горизонтального масштабирования 6. **Нет метрик** — Prometheus экспортер отсутствует ## Architecture ``` SQS-service/ ├── app/ │ ├── cmd/main.go — точка входа │ ├── models/model.go — Queue, Message, Tenant структуры │ ├── gosqs/*.go — реализация SQS API операций │ ├── admin/admin.go — Admin API (Create/List/Get Tenant) │ ├── tenant/tenant.go — Multi-tenant изоляция │ ├── auth/auth.go — AWS Signature V4 верификация │ ├── persistence/redis.go — Redis adapter для persistence │ ├── router/router.go — HTTP маршруты │ └── ui/index.html — Web Console ├── deployments/k8s/ — Kubernetes манифесты ├── tests/ — E2E тесты └── doc/ — Документация ``` ## Technology Stack - **Language**: Go 1.22 - **HTTP Server**: Go std net/http - **Auth**: AWS Signature V4 - **Storage**: Redis (write-through) - **Container**: Docker - **Orchestration**: Kubernetes - **DNS**: Ingress с TLS ## Demo Credentials (read-only для тестирования) ``` Access Key: SSAK-demo-shared-sqs Secret Key: demo-secret-key-shared-sqs-ngcloud-2026 Endpoint: https://qu.kube5s.ru ``` ## Deployment ```bash # Kubernetes kubectl apply -k deployments/k8s/ # Docker (local) docker run -p 9090:9090 naeel/shared-sqs:v0.1.14 ``` --- *Last updated: 2026-04-10*