Построение API угроз для глобального масштаба
От украинского антискам-бота до платформы анализа угроз для всего мира — решения архитектуры, вызовы масштабирования и уроки.
Команда NSAI
Построение API угроз для глобального масштаба
NSAI начинал как Telegram-бот для выявления мошенничеств. Сегодня это платформа анализа угроз для бизнесов в разных странах. Вот как мы строили архитектуру для масштабирования.
Начало
В начале 2025 мы заметили тенденцию: украинцы тонули в мошеннических SMS под видом Новой Почты, ПриватБанка, Monobank, Дії. Мы создали простого Telegram-бота с паттерн-матчингом.
За недели — тысячи пользователей. Бот — один Python-процесс на VPS. Время масштабироваться.
Эволюция архитектуры
Фаза 1: Монолитный бот
Пользователь → Telegram → Python Bot → Regex → Ответ
Просто, быстро в разработке. Но: без API, без сохранения, без масштабирования.
Фаза 2: API + База данных
Telegram Bot ─→ FastAPI ─→ PostgreSQL
Веб-клиенты ──↗ ↘ Redis cache
Классификацию вынесли в FastAPI-сервис с PostgreSQL и Redis.
Фаза 3: Модульная платформа
┌─────────────────────────────────────────┐
│ Load Balancer │
└────────────┬───────────┬────────────────┘
│ │
┌────▼───┐ ┌────▼───┐
│ API #1 │ │ API #N │ (stateless)
└────┬───┘ └────┬───┘
│ │
┌────────▼───────────▼────────┐
│ Redis Cluster │
└────────────┬────────────────┘
│
┌────────────▼────────────────┐
│ PostgreSQL (primary + read) │
└────────────┬────────────────┘
│
┌────────────▼────────────────┐
│ Qdrant (векторный поиск) │
└──────────────────────────────┘
Ключевые решения:
- Stateless API — горизонтальное масштабирование
- Redis для кэша + Celery брокер
- Qdrant для векторного поиска (RAG)
- Celery workers для фоновых задач
Вызовы масштабирования
Вызов 1: Паттерн-матчинг
5 000+ regex нельзя проверять последовательно. Организовали в деревья категорий — 10x меньше проверок.
Вызов 2: Контроль затрат LLM
- Кэш → бесплатно
- БД → минимальная стоимость
- Regex → нулевая стоимость, обрабатывает ~55%
- LLM → только оставшиеся ~10%
90% запросов никогда не обращаются к LLM.
Вызов 3: Задержка для разных регионов
- Edge-кэширование
- Региональные API-ноды (EU-West, EU-East)
- Anycast DNS
Уроки
- Начинайте с паттернов, не с ML — regex обрабатывает большинство известных угроз
- Кэшируйте всё — 35% cache hit сэкономили тысячи на LLM
- API-first — бот, веб, SDK — клиенты одного API
- Инвестируйте в наблюдаемость — structured logging с correlation ID
Что дальше
- Self-hosted вариант для предприятий
- Экосистема плагинов — сторонние модули обнаружения
- Федеративное обучение — обмен паттернами без обмена данными
Хотите проверить подозрительное сообщение?