Seobase: микросервисная архитектура для SEO
Разработка масштабируемого бэкенда на Nest.js и AWS для обработки миллионов SEO-запросов ежедневно.
О проекте
SEO-специалисты ежедневно отслеживают позиции сайтов по ключевым словам, анализируют конкурентов и мониторят метрики видимости. Вручную это занимает часы, а данные быстро устаревают. Seobase автоматизиру ет сбор и обработку SEO-метрик из множества источников, предоставляя актуальную аналитику в одном интерфейсе. Команда Fortech взяла на себя разработку бэкенда с нуля.
Задача — построить высоконагруженную систему, которая ежедневно обрабатывает миллионы запросов к внешним API, агрегирует данные и отдает результаты пользователям без задержек. Архитектура строилась на микросервисах в AWS с использованием Nest.js, DynamoDB и Lambda.

Задачи
- Спроектировать архитектуру из нескольких микросервисов на Nest.js с четким разделением ответственности
- Настроить взаимодействие между с ервисами через очереди и API Gateway для изоляции нагрузки
- Реализовать систему сбора метрик из сторонних SEO-API с кэшированием в DynamoDB для снижения количества повторных запросов
- Оптимизировать обработку ошибок и запросы к базе для работы под высокой нагрузкой
- Настроить хранение пользовательских файлов в S3 Bucket с контролем доступа через IAM-политики
- Разработать Lambda-функции для фоновой обработки задач и триггеров на события в S3
- Развернуть сервисы в ECR через Docker, настроить инфраструктуру через Terraform с автоматическим масштабированием

Реализация
Начали с аудита требований к нагрузке: система должна обрабатывать до 10 млн запросов в сутки с пиками в утренние часы. Выбрали Nest.js для микросервисов из-за встроенной поддержки dependency injection и модульности, TypeScript для строгой типизации на всех слоях. DynamoDB подошла под сценарий с большим объемом чтения и редкой записью — pay-per-request модель экономила бюджет в периоды низкой активности. Архитектуру разбили на три ключевых сервиса: сбор данных из внешних API, обработка и кэширование, отдача результатов клиентам. Главная техническая проблема возникла при интеграции DynamoDB с сервисом обработки. Запросы к базе занимали до 8 секунд из-за того, что данные передавались одним массивом с закодированными JSON-строками внутри атрибутов. Это создавало overhead на сериализацию и перегружало сеть.
Node.js
TypeScript
Docker
Решение: разделили данные на блоки по 25 записей (лимит BatchWriteItem в DynamoDB), увеличили емкость записи на таблице с 5 до 40 WCU, запустили параллельную обработку блоков через Promise.all. Изменили схему хранения — вместо одного атрибута с JSON теперь каждая метрика записывается как отдельный атрибут с нативным типом. Время запроса упало до 1.2 секунды. Для фоновых задач настроили Lambda-функции на Node.js: генерация отчетов, очистка устаревшего кэша, обработка загруженных файлов из S3. Триггеры на S3-события запускают Lambda автоматически при загрузке CSV с ключевыми словами. Все сервисы упаковали в Docker-образы, развернули через ECR. Terraform-конфигурация описывает всю инфраструктуру: VPC, security groups, ECS-кластеры, IAM-роли. Настроили auto-scaling на основе метрик CPU и количества запросов. S3 Bucket для файлов защищен политиками с ограничением доступа только для авторизованных сервисов через service roles.

Ключевые задачи и решения
Мы спроектировали отказоустойчивую микросервисную архитектуру на базе AWS, решив ряд критических задач по масштабированию и производительности:
-
Интеллектуальный сбор данных Реализован пул HTTP-клиентов с axios-retry для автоматических повторов и контроля лимитов (rate limiting), что обеспечило стабильную работу с 15+ внешними API. Кэширование в DynamoDB с TTL 24 часа снизило нагрузку на платные API на 60%.
-
Оптимизация работы с БД Для устранения задержек при записи перешли на пакетные операции BatchWriteItem и параллельную обработку через Promise.all. Отказ от хранения данных в JSON-строках в пользу нативных типов DynamoDB ускорил время отклика с 8 до 1.2 секунд.
-
Отказоустойчивость и мониторинг Внедрен централизованный exception filter в Nest.js и паттерн Circuit Breaker, что исключило каскадные сбои при пиковых нагрузках. Логирование всех процессов интегрировано в CloudWatch.
-
Автоматизация фоновых задач Настроена система на базе AWS Lambda и S3-триггеров. Файлы пользователей обрабатываются автоматически при загрузке, а безопасный доступ реализован через presigned URLs и строгие IAM-политики.
-
Инфраструктура как код (IaC) Вся инфраструктура (VPC, ECS, IAM, S3) описана через Terraform. Это обеспечило бесшовное автоматическое масштабирование сервисов в ECR на основе нагрузки и позволяет разворачивать новые окружения за 15 минут.
-
Межсервисное взаимодействие Создана надежная экосистема обмена данными: API Gateway для маршрутизации запросов, SQS-очереди для асинхронной обработки и AWS Cloud Map для эффективного service discovery.
Результат
SEO-специалисты получили платформу, которая автоматически собирает данные по позициям сайтов, объемам поиска и конкурентам из десятков источников. Вместо ручной работы с таблицами и API теперь все метрики агрегируются в одном интерфейсе с актуальностью данных до 1 часа. Система обрабатывает запросы пользователей за 1–2 секунды даже в пиковые нагрузки. Бизнес получил масштабируемую архитектуру, которая автоматически подстраивается под нагрузку и не требует ручного вмешательства при росте числа пользователей. Инфраструктура полностью описана в Terraform — новые окружения разворачиваются за 15 минут. Система кэширования снизила количество запросов к платным API на 60%, что напрямую сократило операционные расходы.
Другие работы
AI-платформа SpotBOI для автоматизации контент-маркетинга и управления социальными сетями
SpotBOI — ИИ-платформа для автоматизации SMM: создание, планирование и публикация контента в стиле бренда
СИМ Ёж - маркетплейс с оплатой за просмотры социальной рекламы
Мобильное приложение, где товары покупаются за баллы от просмотра соцрекламы. Разработали Backend на Django: внедрили JWT-авторизацию, систему достижений и 3 вида Push-уведомлений через Celery и Firebase. Стек: Python, DRF, Redis, Docker.