Вспомни типичный путь разработчика, который решил написать небольшого Telegram-бота или интерактивное приложение Telegram Mini App (TMA). Казалось бы, идея простая: кликер, форма регистрации на митап или каталог с парой десятков товаров. Но чтобы все это заработало в продакшене, приходится проходить полный круг инфраструктурного ада:
- Арендовать виртуальный сервер (VPS) у хостинг-провайдера.
- Настроить Linux, накатить Node.js или Python, поднять Nginx в качестве reverse-proxy.
- Выпустить SSL-сертификат через Let's Encrypt (потому что Telegram принципиально требует HTTPS для вебхуков и Mini Apps).
- Развернуть и настроить базу данных (PostgreSQL или Redis).
- Настроить systemd или Docker Compose для перезапуска упавшего процесса при сбоях.
Для начинающего инди-разработчика или команды, проверяющей гипотезу, этот оверхед часто становится непреодолимым барьером.
Понимая это, команда Павла Дурова сделала неожиданный и крайне логичный шаг: внедрила полноценную бессерверную среду выполнения (Serverless Execution Environment) непосредственно в инфраструктуру платформы, управляемую через главного служебного бота @BotFather.
Давай заглянем под капот этой технологии, разберем архитектуру рантайма и посмотрим на реальный код серверных функций.
Архитектура: как устроен рантайм на V8 Isolates
Когда мы слышим слово «Serverless», многие представляют классические AWS Lambda или Google Cloud Functions, где под каждый запрос поднимается изолированный микро-контейнер. У контейнерного подхода есть огромный минус — холодный старт (Cold Start), который может занимать от сотен миллисекунд до нескольких секунд.
Telegram пошел по пути современных edge-платформ (Cloudflare Workers, Deno Deploy):
- Изоляты движка V8 (V8 Isolates): среда не запускает операционную систему или контейнер. Вместо этого в памяти уже работающего системного процесса Telegram создается легковесный изолированный контекст JavaScript.
- Околонулевой холодный старт: запуск изолята занимает менее 5 миллисекунд. Пользователь при открытии Mini App получает ответ мгновенно.
- Криптографическая безопасность на стороне платформы: один из самых частых багов в Mini Apps — неправильная проверка подписи
initDataна бэкенде или утечка токена бота на фронтенд. В Telegram Serverless проверка подлинности пользователя происходит аппаратно серверами Telegram до того, как запрос попадет в твою функцию.
Встроенная распределенная база данных (Cloud KV)
Вместе со средой выполнения разработчик получает встроенную базу данных формата «ключ-значение» (Key-Value Store).

База данных распределена по глобальной инфраструктуре дата-центров Telegram, поэтому запросы на чтение и запись обрабатываются с минимальным сетевым RTT. Главное удобство — контекстная привязка данных:
- Записи можно связывать с конкретным пользователем (
userId). - Записи можно изолировать в рамках чата или группы (
chatId). - Поддерживаются атомарные операции инкремента (что критично для подсчета очков, баланса монет или кликов).
Давай посмотрим, как выглядит реальный код облачного обработчика на JavaScript, который принимает запросы от Telegram Mini App и сохраняет игровой прогресс:
// index.js — серверный обработчик в Telegram Serverless
export default async function handleRequest(event, context) {
const { user, request, db } = context;
// Безопасность: Telegram уже валидировал initData,
// поэтому user.id гарантированно принадлежит автору запроса!
if (!user || !user.id) {
return {
status: 401,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ error: "Неавторизованный запрос" })
};
}
const url = new URL(request.url);
// Маршрутизация: сохранение очков игрока
if (request.method === "POST" && url.pathname === "/api/save-score") {
try {
const payload = await request.json();
const pointsToAdd = Math.max(0, parseInt(payload.points, 10) || 0);
// Атомарно получаем текущий счет или инициализируем нулем
const userKey = `user:${user.id}:score`;
const currentScore = (await db.get(userKey)) || 0;
const updatedScore = currentScore + pointsToAdd;
// Сохраняем обновленный результат в Cloud KV
await db.set(userKey, updatedScore);
return {
status: 200,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
success: true,
userId: user.id,
score: updatedScore
})
};
} catch (err) {
return {
status: 400,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ error: "Невалидный формат JSON" })
};
}
}
// Роут чтения таблицы лидеров
if (request.method === "GET" && url.pathname === "/api/my-score") {
const score = (await db.get(`user:${user.id}:score`)) || 0;
return {
status: 200,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ userId: user.id, score })
};
}
return {
status: 404,
body: "Эндпоинт не найден"
};
}
Обрати внимание на лаконичность: нам не потребовалось подключать express, конфигурировать CORS, импортировать клиент Redis или валидировать HMAC-SHA256 подпись через криптографические библиотеки Node.js. Среда передает объект context, в котором уже есть готовые user, request и интерфейс базы данных db.
Как деплоить код через BotFather
Процесс деплоя интегрирован прямо в диалог с ботом:
# 1. Открываем @BotFather в клиенте Telegram
# 2. Выбираем команду /mybots -> выбираем своего бота
# 3. Переходим в меню "Bot Settings" -> "Cloud Serverless"
# 4. Включаем режим облачных функций и загружаем исходный файл или привязываем GitHub-репозиторий
После загрузки платформа компилирует JavaScript-код в байткод V8 и мгновенно распространяет его по узлам edge-сети. Бот получает внутренний защищенный вебхук, а Mini App — защищенный публичный URL вида https://<bot_username>.tgcloud.io/api/.
В контексте того, как развиваются инструменты автоматизации и ИИ-агенты в экосистеме Telegram, возможность поднять рабочий бэкенд за пару минут открывает дорогу огромному числу быстрых интеграций.
Границы применимости: где Serverless не справится?
Несмотря на всю привлекательность, чудес не бывает: бессерверная среда имеет жесткие аппаратные лимиты, продиктованные мультиарендной (multi-tenant) природой платформы:
- Лимит оперативной памяти: до 128 МБ на один изолят. Попытка загрузить тяжелую ML-модель или обработать растровое изображение в 4K приведет к немедленному падению по OOM.
- Таймаут выполнения: максимальное процессорное время ограничено 5–10 секундами. Долгие фоновые расчеты или генерацию тяжелых аналитических PDF-отчетов сюда переносить нельзя.
- Ограничения базы данных: хранилище Key-Value не поддерживает сложные SQL-джойны, полнотекстовый поиск или транзакции над произвольными графами данных.
Если твой проект — это казуальная игра, сервис бронирования, квиз, бот поддержки или промо-приложение, Telegram Serverless закроет 100% потребностей без копейки затрат на инфраструктуру. Но если тебе требуется сложная реляционная схема или ресурсоемкая обработка данных, выделенный сервер останется незаменимым.
