Title: Escrow observability: SLA monitor + dispute indexer as separate services Status: draft Owner: backend/ops Date: 2026-01-18
Context:
- Эскроу требует детерминированных SLA таймеров и поискового слоя по спорам.
- Нужны быстрые алерты и разбор спорных сделок без ручного просмотра логов.
- Сервисы должны оставаться read-only к цепи, без приватных ключей.
Decision:
- Заводим два микросервиса:
on-chain SLA monitorиdispute event indexer, каждый как отдельный Deployment (1 pod) с managed Postgres. - Доступ к цепи только через
rpc-gateway-rotator(кворум RPC, без прямых публичных endpoint). - Оба сервиса обязательны к прод-защите: /health, /ready, /metrics, алерты по ingest lag, retries с backoff.
- Конфиги (chains/contracts/webhooks/slack) — только через файлы/секреты, без перекомпиляции; hot-reload допускается.
- Стейт восстанавливаемый: реплей из цепи + БД; никаких локальных томов.
Consequences:
- SLA-события и споры становятся наблюдаемыми и алертируемыми без изменений смарт-контрактов.
- Один источник RPC-правды (gateway) снижает инконсисентность (флап рпс) обоих сервисов.
- Managed БД упрощает бэкап и обновления, но требует сетевых правил к кластеру.
- Операции получают /metrics для Grafana/alertmanager; саппорт — быстрый поиск и свежие таймеры.
Next:
- Закрепить владельцев сервисов (oncall) и SLO: ingest lag, alert latency, search latency.
- Задать дефолтные конфиги chains/contracts и мок-каналы алертов для dev.
- Подготовить CI job: сборка образов + k8s deploy манифесты (см. deploy-sla-monitor-dispute-indexer.md).