Написание функций с малой задержкой никогда не было проще.
rtlambda
— мой новый проект, цель которого — обеспечить быструю и эффективную разработку Rust на бессерверной платформе AWS Lambda.
Это проект с открытым исходным кодом, доступный на GitHub и crates.io под разрешающими лицензиями MIT или Apache 2.0.
Простой
rtlambda
с самого начала разрабатывался для обеспечения беспрепятственного взаимодействия с разработчиком, которое не ставит под угрозу производительность и конкурирует с простотой использования сред выполнения Node.js и Python.
Простая лямбда эхо-сервера будет выглядеть так:
Как вы могли догадаться, среда выполнения и ваша лямбда компилируются в один и тот же исполняемый файл, когда вы создаете свою функцию. Не нужно указывать слои или обработчики — все в одном (крошечном) месте.
rtlambda
позволяет отделить код инициализации от кода обработчика с помощью концепции функции инициализации.
Функция инициализации выполняет две функции:
- Создание повторно используемых ресурсов, таких как клиенты БД.
- Возврат функции-обработчика, обрабатывающей входящие события.
(Ваша функция-обработчик берет на себя ответственность за повторно используемые ресурсы через семантику Rust move
).
Обо всем остальном позаботится среда выполнения.
Минимальные зависимости
rtlambda
зависит от serde и serde_json — высокопроизводительных библиотек сериализации и десериализации для Rust и стандарта де-факто для обработки JSON в экосистеме Rust.
Приложения, созданные с помощью rtlambda
версии 0.0.1, также будут зависеть от HTTP-библиотеки ureq для внутренней связи с AWS.
Поддержка других популярных бэкендов HTTP находится в стадии разработки, и пользователи могут легко внедрить поддержку любой библиотеки по своему выбору.
Качественные документы
Большое внимание было уделено созданию отличной документации, которая не оставляет сомнений у пользователей и дает советы там, где это необходимо, включая использование, реализацию собственных примитивов времени выполнения, а также сборку и развертывание.
Readme — хорошее место для начала, и вы всегда можете обратиться к документам.
Расширяемый
rtlambda
поставляется с включенными батареями и временем работы по умолчанию, которое обеспечивает разумные и эффективные настройки по умолчанию.
Однако пользователи, которые хотят реализовать свою собственную логику, могут легко сделать это, внедрив четко определенный набор универсальных признаков.
На практике rtlambda
можно использовать в качестве среды выполнения для других языков программирования или для реализации собственных пользовательских сред выполнения. В этой области также запланированы дальнейшие работы и эксперименты.
Исполнитель
Благодаря компилятору Rust rtlambda
инициализируется за однозначные миллисекунды, что примерно в 22 раза быстрее по сравнению со средой выполнения Python, что эффективно снижает задержку, когда ваша лямбда-выражение нуждается в быстром масштабировании.
Написание функций на Rust также означает, что ваша основная логика работает быстрее, чем Python и Java, не страдает от остановки сборки мусора и потребляет меньше памяти. .
Вдобавок ко всему, rtlambda
предназначен для минимизации вызовов динамической диспетчеризации, выжимая каждый бит оптимизации, который может предложить компилятор Rust (планируется работа, чтобы полностью исключить его в будущих версиях).
В следующей статье мы подробно расскажем, как создать, собрать и развернуть проект rtlambda
, который может работать на платформах x86 и aarch64 в Amazon Linux 2.
Readme содержит исчерпывающие инструкции для тех, кто хочет начать работу уже сегодня.
Как автор этой библиотеки, я хотел бы получить ваши отзывы, этот проект находится в стадии разработки, и вы можете внести свой вклад через GitHub.