109 lines
4.9 KiB
Markdown
109 lines
4.9 KiB
Markdown
# SQS-service Progress
|
||
|
||
## Версага v0.1.x
|
||
|
||
### Security & Compatibility Wave (2026-04-10) ✅
|
||
- ✅ Создана ветка hardening: fix/critical-high-security-2026-04-10
|
||
- ✅ Закрыты Critical/High/Medium пункты безопасности и изоляции
|
||
- ✅ Добавлена проверка SigV4 подписи (header + presigned)
|
||
- ✅ Закрыт IDOR в UI API по tenant id
|
||
- ✅ Устранены гонки map доступа и рассинхрон persistence
|
||
- ✅ Оптимизирован receive long polling
|
||
- ✅ Совместимость SQS подтверждена: tests/shared_sqs_test.sh PASS=28 FAIL=0
|
||
- ⚠️ Legacy UI тесты без JWT падают ожидаемо (quick/hardcore), т.к. /ui/api/* теперь защищены
|
||
|
||
### v0.1.18 (2026-04-10) — IN PROGRESS
|
||
- ✅ security: fix critical/high auth, idor, races and persistence (a5e9bfb)
|
||
- ✅ security: address medium risks in jwt, redis ordering and body limit (3b4fe0b)
|
||
- ✅ perf: optimize receive long polling and finalize formatting cleanup (ebcb204)
|
||
- [ ] Актуализировать tests/quick_test.sh под JWT flow
|
||
- [ ] Актуализировать UI блоки tests/hardcore_test.sh под JWT flow
|
||
- [ ] Добавить отдельный UI compatibility script с login шагом
|
||
|
||
### 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*
|