Не всегда код должен работать непрерывно. И обидно арендовать целый сервер, когда скрипт работает 10 минут в день. Особенно сервер с большим количеством ОЗУ и CPU.

В этой статье мы расскажем, как разработали сервис запуска Cron Jobs с платой за фактическое время работы кода. Как запускать скрипты экономически эффективнее, чем на VDS, и как настроить работу кода по расписанию.

Представим, что есть скрипт, которому нужно обрабатывать раз в день объёмный PDF-документ(формировать отчет/переобучать ML-модель). Скрипт потребляет 2 CPU и 10 Гб ОЗУ, и на обработку тратит 10 минут. А теперь посчитаем, сколько будет стоить хостинг такого скрипта на VPS/VDS. Для стабильной работы выберем конфигурацию с 3 vCPU и 12 Гб ОЗУ. Если это дорогое облако, виртуалка выйдет около 5 т. р./мес, если бюджетный VDS, можно уложиться в 2 т. р. в месяц.

И это дорого, очень дорого для задачи, которая работает 10 минут в день.

Было бы лучше, если бы оплата шла именно за время работы.

Для таких задач мы разработали сервис запуска Cron-задач в Amvera Cloud.

Так, если вы запустите скрипт на тарифе с 3 vCPU и 12 Гб ОЗУ, который запускается раз в день на 10 минут, это будет стоить 198 р./месяц. И это 12 Гб ОЗУ.

А если выбрать тариф с 1 Гб ОЗУ, то выйдет 100 р./месяц.

Cкрипт, требующий VDS за 2000 рублей становится возможным запустить за 198 рублей в месяц. разница в 10 раз.

Помимо цены, это просто удобнее. Можно выбирать режимы запуска, про которые я расскажу ниже, контролировать историю выполнений в специальном интерфейсе и обновлять код через push в привязанный репозиторий.

Разберем запуск Cron Jobs на примере

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

Перейдём в ЛК Amvera и создадим проект типа Cron Job.

Создание проекта с типом Cron Jobs
Создание проекта с типом Cron Jobs

Введём название и зададим тариф

Важно отметить, что тарификация состоит из трёх составляющих. Активного времени выполнения скрипта, времени активности самого сервиса в режиме ожидания (здесь плата идёт за сохранения артефактов в горячем состоянии) и постоянное хранилище, которое можно не подключать, если вам не требуется диск.

Для примера выберем максимальный тариф. За время активной работы биллинг будет откручивать 39 копеек за минуту. Плюс будет плата в 0,18 копейки за минуту ожидания запуска (это 80 руб/месяц).

Выбор тарифа.
Выбор тарифа.

Настроим параметры запуска Cron

Зададим Cron-выражение, которое будет запускать скрипт раз в два часа в 12 минуту часа.

Примеры синтаксиса выражений для задания расписания выполнения задач Cron можно найти по ссылке.

В нашем случае это 12 0/2 * * *

Настройка параметров запуска Cron Jobs
Настройка параметров запуска Cron Jobs

Зададим максимальное время выполнения – 600 секунд. Теперь мы уверены, что не потратим более 198 рублей в месяц.

И зададим политику запуска.

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

Доступно три режима, мы выберем REPLACE, который прерывает предыдущую задачу, если она не успела выполниться.

Загрузим наш код

Можно привязать Git репозиторий, это позволит обновлять код тремя командами в IDE.

Привязка Git-репозитория
Привязка Git-репозитория

Но можно и просто перетянуть файлы в интерфейсе.

Загрузка файлов в интерфейсе
Загрузка файлов в интерфейсе

Добавим секреты и переменные, которые используются в нашем проекте.

Добавление секретов и переменных
Добавление секретов и переменных

И заполним по подсказкам несколько строчек в Конфигурации. Важно, если вы используете Git, скачать конфигурацию и добавить файл в корень проекта. Так как при сохранении через интерфейс это создаст коммит в выделенном репозитории и может привести к конфликту с вашим репозиторием.

Задание конфигурации проекта
Задание конфигурации проекта

Наблюдаем за сборкой и запуском в логах. Если всё правильно сделано, ваш скрипт перейдёт в состояние «Ожидает запуска» или «Приложение запущено».

Отладка через встроенный инструмент логирования
Отладка через встроенный инструмент логирования

И контролируем историю запусков в одноимённой вкладке.

История запуска Cron Jobs
История запуска Cron Jobs

Готово. Мы запустили наше задание Cron на удаленном сервере и теперь не будем переплачивать на ровном месте.

Разумеется, для постоянно работающих скриптов лучше выбрать другие типы сервисов, так как если Cron будет крутить проект 24/7, это будет не бюджетно.

Но если ваш скрипт работает до пары часов в день, и требует много вычислительного ресурса, то экономия в деньгах становится существенна.

Комментарии (4)


  1. ovchinnikovproger
    23.10.2025 15:06

    Если код запущенный по Cron будет завершаться до заданного интервала времени, как будет проходить тарификация?


    1. kirillkosolapov Автор
      23.10.2025 15:06

      За фактическое время с дискретизацией до минуты. Если код выполнится за 3 минуты, при лимите в 20, посчитает именно за эти 3 минуты работы Cron задачи.


  1. benjik
    23.10.2025 15:06

    Лямбда-функции в облаках с триггером по таймеру например. Первая тысяча вызовов в месяц - бесплатно.


    1. kirillkosolapov Автор
      23.10.2025 15:06

      Как вариант. Но там и цена подороже и ценообразование не только от количества вызовов, но и от потребления ресурсов. И главное, лямбда-функции сложнее в настройке, и если допустить ошибку (в обработке исключений, как пример), можно попасть на сотни тысяч рублей, как в этой истории. Здесь же закинуть код в интерфейсе и заполнить "полторы строки" настроек.