От ~1 500 до ~8 000 успешных HTTP RPS.
Определил границы сервисов и спроектировал RabbitMQ-контракты для декомпозиции HR-бэкенда; команда выделила бота и фоновые задачи.
Исходная задача
Во время всплеска активности основной API стал узким местом: в одном приложении выполнялись запросы, работал бот и запускались фоновые задачи. При перегрузке пользователи сталкивались с ответами 503 и таймаутами.
Мой вклад
Я определял границы сервисов, проектировал RabbitMQ-контракты и проводил code review реализации двух разработчиков. Коллеги писали код выделяемых сервисов, а я отвечал за архитектурные решения и проверку результата по production-мониторингу.
Инженерный подход
Мы выделили Telegram-бота и фоновые задачи, ввели взаимодействие через RabbitMQ и Outbox для уведомлений. Одновременно увеличили число Python-воркеров Granian с одного до четырёх и лимиты CPU/RAM, не добавляя Kubernetes pod.
Результат
Пиковая нагрузка успешных HTTP-запросов к основному API выросла примерно с 1 500 до 8 000 RPS. В момент позднего пика Grafana показывала ноль в метрике HTTP 5xx.
Отдельно сравнивали старую и новую архитектуру при одинаковых Granian workers и лимитах CPU/RAM; численный результат этого контрольного теста неизвестен. Показатель ~5,3× относится к успешным HTTP 2xx/3xx RPS на одной панели Nginx/Grafana с пятиминутным окном после комплекса архитектурных и инфраструктурных изменений.