# Перенесла повільну роботу зі шляху запиту в чергу завдань River — 15 модулів воркерів, 8 запланованих задач та 20 завдань pg_cron — щоб запит повертався, поки робота за ним триває.

2025

**Ситуація.** Частині роботи взагалі нема чого відбуватися, поки користувач чекає. Надіслати лист, перебудувати пошуковий індекс, згенерувати документ, перерахувати рейтинги — якщо робити будь‑що з цього всередині запиту, користувач дивиться на спінер заради того, чого ніколи не просив показувати. А якщо робити це в горутині, воно зникає тієї ж миті, коли процес перезапускається, — а він перезапуститься, посеред розгортання, не лишивши й сліду про те, що це взагалі мало статися.

**Завдання.** Фоновій роботі потрібне було довговічне місце для життя: черга, яка переживає перезапуск, повторює невдалу спробу і в яку можна зазирнути, коли щось не сталося.

**Дія.** Вибір упав на River — переважно тому, що він тримає свою чергу в PostgreSQL: база даних і так є авторитетним джерелом даних, тож задача і рядки, яких вона торкається, комітяться або відкочуються разом, і немає другого шматка інфраструктури, який треба запускати й тримати в голові. За ним стоять 15 модулів‑воркерів і 8 запланованих задач. Нижче 20 задач pg_cron виконують ту підтримку, яку базі даних зручніше робити самій: підчищати партиції, ротувати солі, оновлювати агрегати. Усе, що було достатньо повільним, щоб це помітили, перенесено зі шляху запиту на одне з цих двох.

**Результат.** Запити повертаються швидко, а повільна робота все одно доходить до кінця — з повторними спробами й видимою історією, коли не доходить. Тримати чергу в Postgres, а не у виділеному брокері, — це свідоме обмеження: воно не масштабуватиметься вічно, і на якомусь обсязі стає неправильною відповіддю. Для платформи, вузьким місцем якої і так є база даних, на одну рухому частину менше виявилося вартіснішим за запас, яким однаково не скористалися б.

---

- Роль: Backend‑інженер
- Категорії: [Backend‑розробка](https://engineer.company/uk/categories/backend/), [Бази даних](https://engineer.company/uk/categories/databases/), [PostgreSQL](https://engineer.company/uk/categories/postgresql/), [Автоматизація та CI/CD](https://engineer.company/uk/categories/automation/), [Надійність і резервне копіювання](https://engineer.company/uk/categories/reliability/), [Оптимізація продуктивності](https://engineer.company/uk/categories/performance/)
- Послуги: [Backend- та API‑розробка](https://engineer.company/uk/services/backend-development/), [Проєктування та моделювання баз даних](https://engineer.company/uk/services/database-design/), [Надійність та моніторинг (SRE)](https://engineer.company/uk/services/site-reliability/)

<https://engineer.company/uk/portfolio/moved-slow-work-onto-a-river-job-queue-97/>
