В современном мире облачных технологий и серверных вычислений постоянно появляются новые подходы, которые призваны упростить разработку, повысить производительность и сократить расходы. Одним из главных трендов последних лет стал serverless — модель, при которой разработчику не нужно заниматься управлением серверной инфраструктурой, а можно сосредоточиться исключительно на написании кода. Однако serverless традиционно имеет свои ограничения и сложности, среди которых отмечают проблемы с холодными стартами, неэффективное использование ресурсов и высокие затраты на простои функции. Компания Vercel решила изменить эти правила на рынке, представив Fluid Compute — инновационную серверлес архитектуру, которая фактически создает серверы внутри serverless платформы, позволяя запускать функции эффективнее и экономичнее, чем когда-либо ранее. Fluid Compute – это результат нескольких лет работы инженеров и разработчиков Vercel, направленных на устранение существующих проблем serverless.
Идея проста и одновременно революционна: использовать ресурсы максимально эффективно, минимизировать холодные старты и оптимизировать ценообразование, чтобы платить только за то время CPU, которое реально используется. По сути, Fluid Compute предлагает пересмотреть привычную парадигму исполнения serverless функций, внедрив транспортный слой и технологии для параллельной обработки нескольких запросов на одном экземпляре функции. Основой для Fluid Compute стала потребность в поддержке современных возможностей React Server Components (RSC) и потоковой отрисовки UI на сервере. Ранее Vercel функции работали на AWS Lambda, которая не совсем подходила для поддержки потоковых ответов. Традиционная модель Lambda проста: функция получает запрос, обрабатывает и возвращает ответ целиком.
Такая модель ограничивала возможность передачи данных частями, что необходимо для потоковой отрисовки и минимизации времени отклика. В ответ на эту проблему команда разработчиков Vercel создала собственный транспортный протокол, основанный на защищенных TCP туннелях между AWS Lambda и внутренней инфраструктурой Vercel. Это дало возможность разбивать HTTP-ответы на отдельные пакеты и отправлять их по мере готовности. Благодаря этому клиент получает ответы постепенно, сокращая время ожидания и повышая интерактивность приложений. Новая система передает пакеты ResponseStarted, ResponseBody и ResponseEnd, давая возможность гибко управлять потоками данных на уровне функций.
На уровне реализации важную роль играет ядро, написанное на Rust, которое служит связующим звеном между пользовательским кодом (на Node.js, Python и других языках) и протоколом обмена пакетами. Это ядро отвечает за передачу данных, преобразование пакетов в HTTP-ответы и отправку метрик, что позволяет следить за состоянием функций в реальном времени. Самым же фундаментальным прорывом стала идея двунаправленного обмена данными по одному и тому же туннелю. Ранее каждое обращение к Lambda функции обрабатывалось отдельным экземпляром — один запрос на один инстанс.
Такая модель приводила к тому, что при I/O-интенсивных операциях, например, при взаимодействии с базами данных или запросами к внешним API, функция простаивала большую часть времени, а плата взималась за все время выполнения без учета простоев. Fluid Compute же умеет повторно использовать уже открытую TCP-связь для обработки нескольких запросов одновременно на одном экземпляре функции. Это кардинально меняет логику масштабирования и оплаты — теперь можно обслуживать десятки и сотни запросов в одном инстансе без ухудшения производительности и риска переполнения ресурсов. Ключевым элементом здесь является сервис compute-resolver, который является подобием DNS для Vercel Proxy, позволяя ровномерно распределять запросы и избегать перегрузок прокси и роутеров функций. Поддержание здоровья функций — еще одна важная задача, с которой успешно справляется Fluid Compute.
Поскольку функции имеют ограниченные ресурсы CPU и оперативной памяти, необходимо избегать их перегрузки, иначе возможны ошибки, задержки и падения. Для этого ядро на Rust непрерывно собирает метрики нагрузки, включая использование CPU, RAM, возможные тайм-ауты и ошибки. Если инстанс не справляется с текущим объемом запросов, он может возвращать сигналы отказа (nack), после чего роутер перенаправит трафик на другую функцию или запустит новый экземпляр. Особенность этого решения в том, что оно не завязано на конкретный язык программирования и поддерживает несколько runtime, включая Node.js и Python, с расширением под другие языки в будущем.
Это открывает новые возможности для разработчиков, позволяя им писать код на удобных языках, не боясь проблем с масштабируемостью и затратами. Переосмысление модели оплаты стало еще одним шагом в эволюции Fluid Compute. В дополнение к снижению затрат за счет оптимизации обработки запросов, Vercel представил концепцию Active CPU pricing, где клиент платит только за активное время использования процессорных ресурсов, а не за время простоя инстанса. Это позволило существенно повысить экономическую эффективность платформы, особенно для I/O-интенсивных приложений и AI-вычислений, где часто происходят долгие периоды ожидания. Сегодня Fluid Compute является стандартом для новых проектов на Vercel, и его использование рекомендуют включать в уже существующих приложениях.
Эта технология уже обслуживает более 45 миллиардов запросов еженедельно и экономит пользователям до 95% затрат на compute-сервисы. Такой уровень эффективности и гибкости делает Vercel одной из ведущих платформ для современного веб-разработчика, позволяя создавать масштабируемые, быстрые и экономичные приложения без риска столкнуться с ограничениями классического serverless. Нельзя забывать и о влиянии Fluid Compute на экосистему и опыт разработчика. Упрощение инфраструктуры, быстрый отклик, снижение затрат и лучшая поддержка больших и сложных нагрузок не только помогают снижать операционные риски, но и стимулируют внедрение новых технологий, например AI и больших LLM (Language Model Models) сервисов, которые активно используют вычислительные ресурсы. В итоге Fluid Compute — это не просто улучшение serverless, а фундаментальное переосмысление того, как эффективно работать с облачными функциями.