image
Ситуация: у клиента было SaaS-приложение (Next.js + Node.js + PostgreSQL), которое использовали более 50k пользователей ежедневно. При росте нагрузки начали появляться проблемы: долгие отклики API, подвисания фронтенда при рендеринге больших таблиц, рост времени генерации страниц на сервере. Решение: На фронтенде внедрил виртуализацию списков (React Virtualized) и динамическую подгрузку данных (infinite scroll). Оптимизировал Next.js: перевёл часть страниц с SSR на SSG + ISR, кешировал запросы через Redis. На backend внедрил горизонтальное масштабирование сервисов (Docker + Kubernetes), вынес тяжёлую бизнес-логику в воркеры с очередями (BullMQ + Redis). Оптимизировал запросы в БД: добавил индексы, переписал несколько тяжёлых join-запросов, внедрил денормализацию в отдельных таблицах.