Пока у тебя три юзера и один пост в неделю, можно не париться. Один нажал кнопку — получил ответ. Всё молниеносно. А теперь представь, что у тебя тысяча человек одновременно жмут «Опубликовать». И каждый из них хочет, чтобы:

  • пост сохранился,
  • показался на странице,
  • ушёл в рассылку,
  • обновил статистику,
  • засветился в топе дня,
  • и ещё, чтоб бот в Telegram пикнул.

Ты это всё в лоб хочешь обработать? Ну удачи. Продержишься секунд 30. Потом начнётся веселуха: подвисания, таймауты, юзеры с глазами на лбу.

Действия нужно откладывать

Большинство задач, которые ты запускаешь "в ответ" на клик — не срочные. Пост показал — окей. А уведомление подписчикам можно отправить через 5 минут. Или через 15. Им не убудет, а тебе — минус десятки запросов в секунду прямо сейчас.

То же самое со статистикой: хочешь считать просмотры на лету? Или всё же скинешь в буфер и посчитаешь через час, когда трафик просядет? Очевидно же.

Очереди — твой спасательный круг

Вот тут и приходит магия очередей. Нет, не та, где люди в МФЦ умирают от скуки. А та, где задачи выстраиваются в стройную колонну и исполняются по очереди. Кто первый пришёл — тот и пошёл.

Ты ставишь в очередь задачу на рассылку — и она летит по подписчикам, поштучно. Никто не орёт, сервер жив, юзер доволен.

Почтовая рассылка — классика жанра

Если ты отправляешь письма сразу, при каждом событии — ты уже проиграл. Ставь в очередь, обрабатывай партиями. Даже тупой cron, который тянет задачи из очереди раз в минуту — уже спасает тебе задницу.

А если всё построено правильно — можно масштабировать воркеры, жонглировать приоритетами, делать отложенные задачи, хоть через сутки. Красота.

Отложенные задачи — не только для фич

Очереди нужны не только для того, чтобы отправить письма. Бэкапы? В очередь. Индексация? Туда же. Оптимизация, переиндексация, сбор мусора — всё это должно делаться не сейчас, а потом, когда тебе удобно.

Вывод

Если ты до сих пор всё делаешь сразу — ты живёшь на пороховой бочке. Очереди — не прихоть, а базовая техника выживания, если твой сервис растёт. Хочешь, чтобы всё работало быстро? Научись говорить "потом". Особенно серверу.