Редкие запросы тоже требуют быстрого ответа.
Между всплесками нагрузки Cloud Run может масштабировать сервис до нуля. Следующий запрос ждёт запуска контейнера и инициализации — в момент, когда пользователю уже нужен ответ.
Между всплесками нагрузки Cloud Run может масштабировать сервис до нуля. Следующий запрос ждёт запуска контейнера и инициализации — в момент, когда пользователю уже нужен ответ.
Я разработал FuncWarm: он отправляет HTTP-запросы к настроенным целям по расписанию и фиксирует результат. Политика прогрева отделена от бизнес-сервисов — интервал и путь запроса можно настраивать и наблюдать независимо.
Планировщик выбирает endpoint. В реальной системе нужно избегать синхронных всплесков и неограниченных пересечений.
Выбирает цель по расписанию. Нужны ограничение параллелизма, jitter и явная политика пересечения запусков.
Выбрать цель по расписанию, отправить запрос, получить ответ и записать результат.
Планировщик выбирает endpoint. В реальной системе нужно избегать синхронных всплесков и неограниченных пересечений.
Go-контроллер задаёт deadline и контекст отмены до HTTP-запроса.
HTTP-запрос приходит к цели. Запуск или переиспользование инстанса решает платформа, не контроллер.
Контроллер получает ответ, проверяет статус и измеряет прошедшее время.
Сохранить статус и длительность для цели и попытки. Ошибки видны наряду с успешными ответами.
Контроллер сообщает статус и длительность каждой попытки. Учитываю эти наблюдения, нагрузку и стоимость инфраструктуры при выборе политики прогрева.
Я настроил периодические запросы к Cloud Run и фиксировал результат и время ответа каждой попытки.
Каждая отметка — успешный запрос. Результат относится к этому эксперименту; сохранением инстансов по-прежнему управляет Cloud Run.
Сравните периодические запросы с постоянно простаивающей мощностью. Измените нагрузку, режим оплаты и стоимость контроллера под свой сервис.
В примере контроллер работает на существующей инфраструктуре: дополнительные мощности стоят $0. Укажите ежемесячные расходы для своего размещения.
Только рабочий трафик, без прогрева
Минимум расходов в модели43 200 запросов прогрева
Постоянная минимальная мощность
| Составляющая | Масштабирование до нуля | FuncWarm | Минимальные инстансы |
|---|---|---|---|
| vCPU-секунды | 0 | 4 320 | 2 592 000 |
| GiB-секунды | 0 | 2 160 | 1 296 000 |
| Запросы | 0 | 43 200 | 0 |
| CPU | 0,00 $ | 0,10 $ | 6,48 $ |
| Память | 0,00 $ | 0,0054 $ | 3,24 $ |
| Плата за запросы | 0,00 $ | 0,02 $ | 0,00 $ |
| Скидка free tier | 0,00 $ | 0,00 $ | 0,00 $ |
| Контроллер + прочие расходы | 0,00 $ | 0,00 $ | 0,00 $ |
Прайс-лист USD для поддерживаемых регионов Tier 1, проверен 2 ноября 2026. Оплата за запросы: время округляется вверх до 100 мс, запрос использует выбранные CPU и память без совместного выполнения. Активная работа вычитается из простоя minimum instances. Оплата за инстанс использует введённое время жизни — не меньше активной работы и одной минуты. Переключатель free tier означает, что месячный лимит billing account не использован другими сервисами; скидка применяется к стоимости ресурсов.
Это модель части инфраструктурных расходов, а не полный счёт за хостинг. Исходящий трафик, логи, сборка/хранение, налоги и committed-use discounts не включены, если не добавлены в прочие расходы. Запрос прогрева не резервирует инстанс. Измеренные 103/283 мс не меняются вместе с вводными цены.
Спроектировал и реализовал планирование периодических запросов и мониторинг прототипа.
Периодические запросы заменяют постоянную простаивающую мощность работой по расписанию и расходами контроллера. Сравниваю их стоимость с minimum instances; жизненным циклом цели управляет Cloud Run.
Я вынес расписание в отдельный управляющий сервис. Конфигурация цели задаёт HTTP-адрес и интервал; бизнес-сервису не нужен собственный таймер и зависимость от планировщика.
Планировщик выбирает цель, для которой наступил срок. Go-контроллер отправляет HTTP-запрос, мониторинг фиксирует исход и длительность. Context и deadline ограничивают операцию, отмена не даёт накапливать ненужные запросы.
При росте числа целей нужны ограниченная конкурентность, разнесённое расписание и jitter, чтобы прогрев не создавал синхронный всплеск. Пропущенный запуск должен быть виден в мониторинге, а не порождать бесконечную очередь догоняющих запросов.
Ошибки DNS, соединения, HTTP и истечение deadline требуют разных исходов. Лимит повторов не даёт недоступной цели занять всю ёмкость контроллера. При завершении работы нужно отменить активные запросы и освободить ресурсы.
Для сервиса с редким трафиком короткий периодический запрос может обходиться дешевле постоянной минимальной мощности. Сравнение зависит от режима оплаты, ресурсов цели и стоимости самого контроллера.
Minimum instances — настройка платформы для сохранения простаивающей мощности. FuncWarm проверяет настоящий HTTP-путь, но не резервирует инстанс: сохранением, перезапусками и масштабированием управляет Cloud Run. При жёстком требовании к первому ответу это различие важно.
В плане проверки — медленная цель, пропуск расписания, пересекающиеся запуски, отмена во время HTTP-запроса и завершение с активной работой. Проверять нужно границы активных запросов, освобождение ресурсов и запись исхода каждой попытки.
Задержка расписания, активные запросы, исходы и длительность показывают работу управляющего сервиса. Логи и трассы цели помогают отличить медленную сеть от инициализации контейнера. В расходах учитываю трафик прогрева, хостинг контроллера и телеметрию.
В моём эксперименте все 20 запросов завершились успешно. Средняя задержка — 103 мс, максимальная — 283 мс. Холодных попыток не наблюдалось.
Отдельный Go-контроллер централизует политику прогрева и делает исходы запросов видимыми. Оцениваю его эксплуатационные расходы вместе с требованиями сервиса к первому ответу.