
Разбиение Laravel-монолита на модули: цифры до и после
Монолит на Laravel вырос до 400 контроллеров, деплой занимал 14 минут, а composer dump-autoload — почти полторы. Разбираем, что реально ускорилось после выделения модулей, а что стало медленнее.

Монолит на Laravel вырос до 400 контроллеров, деплой занимал 14 минут, а composer dump-autoload — почти полторы. Разбираем, что реально ускорилось после выделения модулей, а что стало медленнее.

Приложение на Laravel держало 40 запросов в секунду с одного сервера и падало на пике распродажи. Разбираем, что мешает добавить второй сервер и как замеры меняются после развязки сессий, кеша и очередей.

После добавления второго сервера приложение начало выкидывать пользователей из сессий и дублировать письма. Разбираем, что сломалось при переходе с одной ноды на несколько и как это чинить.

Приложение работает на одном сервере, но после запуска второго инстанса ломаются сессии, кеш и очереди. Разбираем, какие места в коде Laravel мешают запустить несколько инстансов за балансировщиком.

Воркеры съедают память и падают, задачи выполняются по два раза, Redis раздувается до отказа. Разбираем, на что смотреть в коде очередей Laravel, когда поток переваливает за тысячи задач в минуту.

Воркеры простаивают на Redis, задачи дублируются, БД захлёбывается на попапе. Разбираем, что происходит с очередью Laravel под нагрузкой в тысячи джобов в минуту и где она ломается первой.

Выгрузка 200 тысяч заказов в отчёт положила воркер по памяти на 512 МБ. Разбираем, почему Eloquent жрёт RAM пропорционально выборке, и чем платит каждый способ это починить.

Экспорт заказов уронил PHP-воркер по памяти на 400 тысячах строк. Разбираем, почему Eloquent съедает гигабайты, чем платит каждый способ обхода и что мерить в проде.

Тот же код, который держал 50 запросов в секунду, на 500 начинает отдавать 502 и держать соединения открытыми. Разбираем, что упирается раньше: пул БД, сессии в файлах, cold boot фреймворка и N+1.

Приложение на Laravel держит 50 запросов в секунду и падает на 300: время ответа растёт с 80 мс до 4 секунд, а potом сыпятся 502. Разбираем, какие узкие места вылезают раньше кода.

Octane держит приложение в памяти между запросами и убирает бутстрап фреймворка из горячего пути. Разбираем, что при этом ломается: утечки в синглтонах, статические свойства и стейт, переживший запрос.

Что происходит внутри app()->make() и почему singleton иногда возвращает разные объекты, а contextual binding молча ломается. Разбираем механику контейнера Laravel 11.x на уровне вызовов.