Разделы документации
Веб-приложения и воркеры
Приложение с адресом и фоновый воркер: чем они отличаются, зачем вебу порт и почему у воркера его нет.
Приложение на платформе бывает двух видов: веб-приложение и воркер. Веб-приложение отвечает на запросы по HTTPS и получает адрес на домене платформы, поэтому ему нужен порт. Воркер - фоновый обработчик без адреса и без порта: он работает постоянно, а не только по запросу. Вид выбирается при создании приложения и потом не меняется.
Как выбрать вид
Веб-приложение нужно, когда к приложению кто-то обращается по сети: браузер, мобильный клиент, чужой сервис. Воркер нужен, когда приложение само берёт работу и ничего не принимает.
| Задача | Вид |
|---|---|
| Сайт или API | веб-приложение |
| Бот на вебхуках | веб-приложение |
| Разбор очереди | воркер |
| Рассылки | воркер |
| Обработка данных | воркер |
Бот на вебхуках - веб-приложение, потому что вебхук - это запрос к твоему адресу. Задач по расписанию платформа не запускает: видов два, третьего нет.
Выбор нельзя исправить правкой. Веб, ставший воркером, потерял бы адрес, по которому его уже зовут, поэтому смена вида - это новое приложение. Заведи нужное и удали лишнее.
Чем виды отличаются
| Свойство | Веб-приложение | Воркер |
|---|---|---|
| Принимает запросы | да | нет |
| Адрес на домене платформы | есть | нет |
| Свой домен | можно привязать | привязать нельзя |
| Порт | обязателен | не задаётся |
| Протокол, проверка готовности, время на запрос | настраиваются | не настраиваются |
| Сон без запросов | включён по умолчанию, можно выключить | не бывает |
| Метрики на обзоре | запросы, время ответа, память | процессор, перезапуски, память |
Значение type в API |
web |
worker |
Размер, переменные и секреты, источник кода, версии и откат у обоих видов общие.
Веб-приложению нужен порт
Порт - номер, на котором процесс приложения принимает запросы. Платформа отправляет на него трафик с адреса приложения, а снаружи отдаёт HTTPS, поэтому порт задаётся при создании и правится в настройках приложения. Как выбрать порт, протокол и проверку готовности, разобрано на странице Порт, протокол и проверка готовности.
Адрес приложение получает сразу: HTTPS на нём работает без настройки. Свой домен привязывается отдельно, подробности - в разделах Адрес и HTTPS и Свой домен.
Без запросов веб-приложение может уснуть и не тарифицироваться, а первый запрос его будит: Сон и пробуждение.
Воркер не принимает запросов
Слушать у воркера некому, поэтому всё, что связано с запросами, ему не положено:
- адреса на домене платформы нет, и в списке адресов проекта воркера нет
- свой домен привязать нельзя: запрос на привязку к воркеру отвечает
422 - порт, протокол, путь проверки готовности и время на запрос не задаются
- сна нет: будить воркера нечем, ведь запросов к нему не приходит
Воркер не засыпает, поэтому ты платишь за круглосуточную работу. Цена берётся с размера приложения, как у веб-приложения с выключенным сном. Например, Eco 256 стоит 190 ₽ в месяц. Все размеры и цены - в разделе Размеры приложения.
Из настроек масштаба у воркера остаётся один потолок: «Максимум экземпляров». Подробности - на странице Автомасштабирование.
Состояния воркера читаются теми же словами, что у веб-приложения, кроме «Спит»: сна у воркера нет. Слова разобраны в разделе Состояния приложения.
Вид выбирается на странице «Новое приложение»
Вид выбирается в карточке «Что это за приложение». Там два варианта, «Веб-приложение» и «Воркер», по умолчанию выбран веб. Карточка сразу предупреждает, что выбор делается один раз.
От выбора меняется остальная форма:
| Карточка | Веб-приложение | Воркер |
|---|---|---|
| Имя | «Имя и адрес» и поле «Порт приложения» | «Имя», порта нет |
| Масштаб | «Сон и масштаб» | «Масштаб», только максимум экземпляров |
| Как обращаться к приложению | есть: протокол, проверка готовности, время на запрос | нет |
| Сколько это будет стоить | «Пока работает» и «Пока спит» | «Работает всегда» |
После создания вид виден в трёх местах:
- на странице приложения: в заголовке стоит «Веб-приложение» или «Воркер», а на вкладке «Обзор» в карточке «Как настроено» есть строка «Тип». Строки «Порт» у воркера нет
- в списке приложений: у воркера в окне карточки вместо адреса стоит слово «воркер»
- в обзоре: у воркера плитки «Процессор» и «Перезапуски» вместо «Запросов за сутки» и «Времени ответа». Ноль перезапусков значит, что процесс не падал
Вида в настройках приложения нет: менять его нечем.
В API вид задаёт поле type
Поле type принимает web или worker. Оно необязательно: без него создаётся веб-приложение. Ответ отдаёт type всегда, у воркера port равен null.
Создание воркера из готового образа:
{
"name": "mailer",
"type": "worker",
"source_type": "image",
"image_ref": "ghcr.io/liza/mailer:1.4"
}
Это POST /api/v1/applications с правом токена «деплоить» и обязательным заголовком Idempotency-Key. Ответ - 201, первая версия заказывается сразу.
Чем вид определяет запрос, видно по ответам 422:
| Что прислано | web |
worker |
|---|---|---|
port |
обязателен | запрещён |
protocol, health_check_path, request_timeout_seconds |
можно | запрещены |
sleep_enabled, sleep_after_seconds |
применяются | принимаются и не применяются: сон у воркера всегда выключен |
type в PATCH /api/v1/applications/{id} |
запрещён | запрещён |
Запрещённое поле не пропускается молча: клиент, который прислал воркеру порт, получает 422 с названным полем. Сон - исключение, потому что панель присылает настройки масштаба одним блоком. Привязка домена к воркеру отвечает 422 по полю application_id: «Домен открывает веб-приложение, а у фонового процесса адреса нет».
Что дальше
- Порт, протокол и проверка готовности - что слушает веб-приложение и когда версия готова
- Сон и пробуждение - как веб-приложение засыпает без запросов
- Автомасштабирование - сколько экземпляров держит приложение
- Размеры приложения - процессор, память и цены
- Состояния приложения - что значат «Работает», «Спит» и «Упало»
Страница в markdown, так её читает агент: /docs/apps/types.md