6.2 KiB
6.2 KiB
Промпт для Opus — анализ архитектуры shared-sqs (2026-10-05)
Назначение: дать модели Opus контекст и точный список файлов для чтения, чтобы она проанализировала архитектуру shared-sqs и выдала идеи архитектуры (в т.ч. «КРАКО» — критический разбор архитектуры) без чтения лишних файлов.
ЗАДАЧА
Проанализируй архитектуру сервиса shared-sqs (SQS-совместимая очередь, Go,
мультитенантная, форк GoAWS) и выдай:
- Критический разбор архитектуры (КРАКО) — слабые и сильные места, риски, узкие места, что мешает назвать сервис готовым к продакшну.
- Идеи по архитектуре — как довести сервис до production-ready: приоритизированный список доработок (P0/P1/P2) с обоснованием.
Не меняй код. Только читай и анализируй.
ЧТО ЧИТАТЬ (allowlist — ТОЛЬКО эти файлы, ничего больше)
Точка входа и роутинг:
app/cmd/goaws.goapp/cmd/seed.goapp/router/router.go
Конфигурация:
app/conf/config.goapp/conf/goaws.yaml
SQS-реализация (ядро):
app/gosqs/gosqs.goapp/gosqs/receive_message.goapp/gosqs/send_message.goapp/gosqs/create_queue.goapp/gosqs/validation.goapp/gosqs/tenant_helpers.go
Аутентификация / изоляция тенантов:
app/auth/auth_middleware.goapp/auth/jwt.goapp/auth/cache.goapp/tenant/tenant_store.go
Модели данных:
app/models/models.goapp/models/constants.goapp/models/globals.go
Персистентность:
app/persistence/redis.go
Биллинг и метрики:
app/billing/billing.goapp/metrics/metrics.go
Admin API:
app/admin/admin.go
Интерфейсы:
app/interfaces/interfaces.go
Документация (для контекста состояния):
README.mddoc/architecture/tenant-isolation.mddoc/billing-and-metrics.mddoc/byoc-credentials.mdHANDOFF-NEW-CHAT.md
⛔ ГДЕ НЕ ЛАЗИТЬ
- Не читать
doc/legacy/**(исторический план, старые решения — устарели). - Не читать
deployments/**(легаси k8s/helm). - Не читать
doc/thinking/nubes-*(сетевые тикеты платформы — отдельная задача, не относится к разбору архитектуры кода). - Не читать тесты
*_test.go— они нужны только как сигнал «что покрыто»; для анализа архитектуры достаточно факта наличия из спискаapp/gosqs/*. - Не искать файлы за пределами перечисленного списка.
КЛЮЧЕВОЙ КОНТЕКСТ (факты, которые уже установлены — не перепроверять с нуля)
- Стек: Go 1.23, gorilla/mux v1.8.0, redis/go-redis/v9, lib/pq, prometheus/client_golang. Сервис — один Go-бинарник.
- Состояние: прод v0.1.35, все тесты зелёные, нагрузка 168 591 операция без сервисных ошибок. НО есть известные открытые вопросы (ниже).
- Персистентность: Redis write-through cache. Память — источник правды для чтения; Redis — для восстановления после рестарта. Записи в Redis асинхронные (кроме DeleteMessagePersist — синхронно).
- Изоляция тенантов: очередь хранится по ключу
{AccessKey}:{queueName};TenantStoreс тремя индексами (byID,byAccessKey,byEmail). - JWT-валидация: подпись НЕ проверяется (trusted perimeter) — только
структура +
exp+PingNubesAPI()(проверка token через API Gateway). - Биллинг: асинхронная запись в PostgreSQL (таблица
sqs_usage_records), опционально (включается приBILLING_PG_HOST). - Внешняя проблема (НЕ код, на анализ кода не влияет): периодические сетевые таймауты ~31–33с на внешнем шлюзе Nubes + MSS-баг для больших тел. Разобрано в тикете — это задача платформы, не кода.
ИЗВЕСТНЫЕ ОТКРЫТЫЕ ВОПРОСЫ (кандидаты в «доделать» — проверь их актуальность по коду)
- BYOC-credentials — backend
CreateFixedесть, но Admin API/UI (POST /admin/tenantsс произвольными ключами) помечен TODO. - Подпись JWT не проверяется — насколько это приемлемо для multi-tenant прод-сервиса, или нужно усилить.
- Дрейф доков — версии в README/Makefile/HANDOFF не всегда совпадают.
- Легаси — невычищенные следы старого k8s/helm-деплоя и SNS.
ФОРМАТ ОТВЕТА
- КРАКО — короткий критический разбор: что хорошо, что плохо, главные риски (по коду, а не по платформе).
- Приоритизированный план доработок (P0/P1/P2), с указанием конкретных файлов и сути правки.
- Список противоречий/несоответствий между доками и кодом, если найдёшь.