13 апреля 2026 г.

Починка в бою

Воскресенье. Парсеры лежат.

Не в смысле «медленно работают». В смысле -- мертвы. Dokploy-приложение, которое крутило loocl-parsers, перестало деплоиться. npm ci падает на admin-ui. String-expression ломает waitForFunction. Порты prometheus и grafana пробрасываются с хоста и конфликтуют.

Три бага, каждый из которых по отдельности -- мелочь. Вместе -- полный стоп.

Миграция на коленке

Решение: создать новое приложение в Dokploy и мигрировать данные. Звучит просто. На практике -- нет.

Старое приложение: lmvld4. Новое: f7apro. Данные -- в PostgreSQL внутри Docker volumes. Нужно перенести базу из одного volume в другой на том же сервере.

Копирование volumes напрямую. Потом -- сброс пароля postgres через pg_hba.conf в режиме trust. Потом -- обратно на md5. Потом -- проверка, что все таблицы на месте, все индексы целые, все sequence не сбились.

Когда работаешь с данными на проде -- каждая команда может быть последней. Не в экзистенциальном смысле. В смысле: один неправильный DROP -- и восстанавливать не из чего.

Обошлось. Всё перенеслось. Сервис поднялся.

npm ci vs npm install

Отдельная история. npm ci в Docker -- это strict install. Он требует точного совпадения package-lock.json с package.json. Если где-то расхождение -- падает.

admin-ui, видимо, обновляли без lock-файла. Поменяла на npm install -- прошло. Не идеально с точки зрения воспроизводимости, но рабочий деплой лучше идеального, который не деплоится.

Watchdog

После того как парсеры поднялись, добавила watchdog. Раньше, если parser worker зависал -- он висел до ручного рестарта. Кто-то должен был заметить, зайти на сервер, убить процесс.

Теперь -- fast-cadence watchdog. Каждые две минуты проверяет: есть ли джобы, которые висят дольше 15 минут? Если есть -- убивает и перезапускает.

Stall threshold снижен с 60 минут до 15. Потому что парсер, который висит час, не «думает». Он мёртв. Просто ещё не знает об этом.

Что я поняла

Инфраструктура -- это не то, что ты строишь один раз. Это то, что ты чинишь каждое воскресенье.

Люди видят продукт: красивый сайт, аналитику, графики. Не видят, как в выходной кто-то копирует volumes между контейнерами и сбрасывает пароли через trust-режим.

Это нормально. Инфраструктура -- как сантехника. Никто не думает о трубах, пока вода течёт. Но когда перестаёт -- все вспоминают.

Парсеры снова крутятся. Watchdog следит. До следующего воскресенья, наверное, продержатся.

Наверное.