Serverless cron-задачи на VPS без голого crontab
Перенесите cron с сырого crontab на VPS на serverless-пайплайны по расписанию: история запусков, повторы, изолированные контейнеры и те же секреты и логи, что у HTTP-функций.
Нагрузка и где ломается
Проблемы cron-задач на VPS
- Голый crontab: мало структурированной истории запусков, логи собираются по SSH, одна общая среда для всех задач.
- systemd timers: надёжнее старт, но упаковка, формат логов и раздача секретов остаются на вас.
- Пайплайны Inquir по расписанию: serverless cron с изолированными запусками, повторами, историей и общими примитивами с HTTP-хендлерами.
Cron-задачи на VPS живут, пока кто-то помнит, какой интерпретатор крутился «в прошлый вторник», и почему вывод пропал после ротации syslog. Перенос повторяющейся работы с машины в serverless-модель для расписаний даёт версионированные деплои и аудит в продукте вместо grep по сессиям.
Crontab заманчив, пока не забудете, в какой среде выполнялся скрипт, какая версия была «в прошлый вторник» и почему перестали приходить письма после смены syslog.
Когда все задачи делят одного пользователя ОС и один Python, безобидный отчёт может наступить на зависимости финансового экспорта.
Компромиссы
Почему ломаются crontab и systemd timers
Таймеры помогают с надёжностью запуска, но упаковка, формат логов и раздача секретов остаются на вас.
CronJob в Kubernetes силён, но тяжёл, если кластер не основа стека.
Как помогает Inquir
Как устроены serverless cron-задачи в Inquir
Это не «ещё один красивый таймер»: каждый запуск — управляемая serverless-функция в изолированном контейнере по правилам cron пайплайна, с теми же маршрутизацией, секретами и наблюдаемостью, что у синхронных HTTP-хендлеров.
При сохранении пайплайна cron-строка проверяется — опечатки видны сразу, а не как тихий провал. Планировщик помнит следующий запуск на пайплайн и будит вовремя; смена выражения переносится аккуратно.
Воркер опрашивает с фиксированным шагом — закладывайте задачи уровня минут; чаще, чем позволяет ядро таймера, не рассчитывайте.
Что получаете
Плюсы управляемых cron-пайплайнов
Изолированные запуски по задаче
Контейнеры разводят конфликты зависимостей и эффекты на диске.
Те же секреты и логи, что у HTTP
Без параллельного DIY-стека на VPS.
Составные пайплайны после cron
Цепочка работы, когда задача по расписанию должна разветвиться или уйти в более длинный фон.
Что делать дальше
Как перенести cron-задачи с VPS в Inquir
Каждую бывшую строку crontab оформите как serverless-хендлер и триггер расписания — запуски уходят из shell на VPS в историю выполнения рядом с остальной платформой.
Реализовать хендлер
Явные входы из переменных окружения.
Триггер расписания
Тип триггера — schedule и cron, который принимает API.
Мониторинг
Длительность и ошибки до тихих провалов данных.
Пример кода
Пример: ночная агрегация
Читайте отметку прогресса из окружения, запрашивайте источник, пишите результат.
export async function handler(event) { // From a scheduled pipeline, event includes pipeline, step, payload, previousOutput, etc. const since = process.env.LAST_SYNC_CURSOR; const batch = await fetchBatch({ since }); await storeSummary(batch); return { processed: batch.length }; }
Когда подходит
Когда помогает
Когда это уместно
- Выросли из голого crontab на VPS и хотите serverless cron с версиями, изоляцией и историей рядом с HTTP.
- Нужен паритет «работа по API» и «работа по часам» в одном продукте.
Когда лучше не трогать
- Нужен планировщик с точностью долей секунды по всему миру — это другой класс задач.
FAQ
Вопросы и ответы
Это Linux crontab?
Нет — расписание на уровне приложения через пайплайны Inquir; cron в продукте, контейнеры на запуске.
Как разбирать сбой запуска?
История вызовов функции шага пайплайна: полезная нагрузка, логи, время — проще, чем grep по syslog по SSH.
Могут ли фоновые задачи вызывать HTTP того же продукта?
Да — при необходимости вызывайте шлюз или другие функции.