Files
SQS-service/doc/progress.md
T

4.9 KiB
Raw Blame History

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.sentm.sent_at (даты сообщений всегда показывали dash)
  • Redis write-through persistence запущен
  • TLS Ingress: qu.kube5s.ru185.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

# Kubernetes
kubectl apply -k deployments/k8s/

# Docker (local)
docker run -p 9090:9090 naeel/shared-sqs:v0.1.14

Last updated: 2026-04-10