LLRT: Низколатентный JavaScript-движок для безсерверных функций
LLRT (Низколатентный Время Выполнения), от Amazon Web Services, является экспериментальным временем выполнения JavaScript, созданным для безсерверных функций, которым требуется минимальная задержка при холодном старте. Он запускает JavaScript на движке QuickJS внутри ядра Rust, чтобы сократить время запуска и использование памяти по сравнению с традиционными средами выполнения. Ключевые возможности включают ультрабыстрые холодные старты, низкий профиль памяти, частичную совместимость с API Node.js и предкомпилированный подмножество AWS SDK v3. Разработчики безсерверных решений и облачные архитекторы получают наибольшую выгоду от LLRT.
Как LLRT уменьшает задержку при холодном старте?
LLRT нацеливается на холодные старты, исключая несущественные функции платформы и используя компактный путь выполнения. Проект использует QuickJS для выполнения скриптов и ядро на Rust, чтобы минимизировать накладные расходы на инициализацию, комбинация, которую авторы сообщают, может обеспечить время запуска до в 10 раз быстрее, чем Node.js. Этот дизайн жертвует некоторой полнотой платформы в пользу уменьшенной задержки первого вызова, что имеет значение для краткоживущих безсерверных функций.
Соответствует ли LLRT общим требованиям платформы Lambda?
Время выполнения в первую очередь нацелено на Linux x86_64 и ARM64, чтобы соответствовать средам выполнения без сервера. Официальные предварительно собранные бинарные файлы сосредоточены на Linux и macOS, что упрощает развертывание в облаке для этих целей. Тестирование на Windows требует компиляции из исходного кода, добавляя этап сборки. Архитекторам следует включить сборки, нацеленные на Linux, или использовать предоставленные артефакты macOS/Linux при подготовке пакетов развертывания для совместимых с Lambda сред.
Безопасно ли использовать LLRT в производственных рабочих процессах?
AWS называет LLRT экспериментальным проектом, поэтому его использование для критических служб требует валидации. Проект получил похвалу за производительность, но он не реализует полную стандартную библиотеку Node.js и, следовательно, не является заменой. Команды должны проводить интеграционные и зависимые тесты под реалистичной нагрузкой и подтверждать поведение при интеграции служб, прежде чем направлять живой трафик на функции, основанные на LLRT.
Нужны ли мне дополнительные инструменты или экспертиза для миграции существующих функций?
Миграция требует конвейера сборки и проверок API, поскольку LLRT выполняет только JavaScript. TypeScript должен быть транспилирован с помощью сборщика, такого как esbuild или swc, перед развертыванием, и вызовы стандартной библиотеки Node могут потребовать замены. Рекомендуемые шаги миграции включают:
- Транспилировать TypeScript и упаковать зависимости
- Заменить неподдерживаемые вызовы, специфичные для Node
- Провести интеграционные и тесты холодного старта в тестовой среде
Практическая рекомендация по внедрению
LLRT подходит для команд, которые готовы добавить этап сборки и проводить тщательные тесты на стадии. Используйте его сначала для некритичных, чувствительных к задержкам функций и проверяйте поведение от начала до конца перед более широким развертыванием. Имейте план отката и следите за метриками вызовов после каждого развертывания, чтобы регрессии были выявлены на ранней стадии. Рассматривайте время выполнения как экспериментальное, пока вы не наберете уверенность в своем CI-пайплайне. Рекомендуется.